init: 导入项目到 meswork Gitea
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{03AED807-CA2D-4823-B321-41C470174F0B}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Braincase.GanttChart</RootNamespace>
|
||||
<AssemblyName>GanttChartExample</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
||||
<CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Mes32X32.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject />
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Chart\Chart.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Chart\Chart.Designer.cs">
|
||||
<DependentUpon>Chart.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Chart\IProject.cs" />
|
||||
<Compile Include="Chart\PlaySlider.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Chart\Project.cs" />
|
||||
<Compile Include="Chart\Viewport.cs" />
|
||||
<Compile Include="ExampleFull.Play.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExampleSimple.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExampleSimple.Designer.cs">
|
||||
<DependentUpon>ExampleSimple.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ExampleFull.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExampleFull.Designer.cs">
|
||||
<DependentUpon>ExampleFull.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Chart\Chart.resx">
|
||||
<DependentUpon>Chart.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ExampleSimple.resx">
|
||||
<DependentUpon>ExampleSimple.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ExampleFull.resx">
|
||||
<DependentUpon>ExampleFull.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Mes32X32.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\LogNet\20-01LogNet.csproj">
|
||||
<Project>{4b777069-a494-40ff-8e88-e3d815ed80cb}</Project>
|
||||
<Name>20-01LogNet</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>
|
||||
47
DataMirrorTools_Simulator/GanttChartExample/Chart/Chart.Designer.cs
generated
Normal file
47
DataMirrorTools_Simulator/GanttChartExample/Chart/Chart.Designer.cs
generated
Normal file
@@ -0,0 +1,47 @@
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
partial class Chart
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// Chart
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.Name = "Chart";
|
||||
this.Size = new System.Drawing.Size(469, 439);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
2313
DataMirrorTools_Simulator/GanttChartExample/Chart/Chart.cs
Normal file
2313
DataMirrorTools_Simulator/GanttChartExample/Chart/Chart.cs
Normal file
File diff suppressed because it is too large
Load Diff
120
DataMirrorTools_Simulator/GanttChartExample/Chart/Chart.resx
Normal file
120
DataMirrorTools_Simulator/GanttChartExample/Chart/Chart.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<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" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</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" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
410
DataMirrorTools_Simulator/GanttChartExample/Chart/IProject.cs
Normal file
410
DataMirrorTools_Simulator/GanttChartExample/Chart/IProject.cs
Normal file
@@ -0,0 +1,410 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
/// <summary>
|
||||
/// Passive data class holding schedule information
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class Task
|
||||
{
|
||||
/// <summary>
|
||||
/// Initialize a new task to hold schedule information
|
||||
/// </summary>
|
||||
public Task()
|
||||
{
|
||||
Complete = 0.0f;
|
||||
Start = 0;
|
||||
End = 1;
|
||||
Duration = 1;
|
||||
Slack = 0;
|
||||
TagValue = "1";
|
||||
BackFill = Brushes.MediumSlateBlue;
|
||||
}
|
||||
/// <summary>
|
||||
/// Get or set Task background color
|
||||
/// </summary>
|
||||
public Brush BackFill { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get or set the Name of this Task
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indicate whether this task is collapsed such that sub tasks are hidden from view. Only groups can be collasped.
|
||||
/// </summary>
|
||||
public bool IsCollapsed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get or set the pecentage complete of this task, expressed in float between 0.0 and 1.0f.
|
||||
/// </summary>
|
||||
public float Complete { get; internal set; }
|
||||
public string ID { get; internal set; }
|
||||
/// <summary>
|
||||
/// Task类型 1:工艺路径规划;2:零件是否可见;3:机器人;4:信号点
|
||||
/// </summary>
|
||||
public int Type { get; internal set; }
|
||||
/// <summary>
|
||||
/// 变量代码
|
||||
/// </summary>
|
||||
public string TagID { get; internal set; }
|
||||
/// <summary>
|
||||
/// 变量值
|
||||
/// </summary>
|
||||
public string TagValue { get; internal set; }
|
||||
/// <summary>
|
||||
/// 变量值
|
||||
/// </summary>
|
||||
public int TagFrom { get; internal set; }
|
||||
/// <summary>
|
||||
/// 变量值
|
||||
/// </summary>
|
||||
public string OpName { get; internal set; }
|
||||
/// <summary>
|
||||
/// 拷贝变量值
|
||||
/// </summary>
|
||||
public string TagIDCopyFrom { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模型代码
|
||||
/// </summary>
|
||||
public int ModelCode { get; internal set; }
|
||||
/// <summary>
|
||||
/// 模型是否可见
|
||||
/// </summary>
|
||||
public int Visible { get; internal set; }
|
||||
/// <summary>
|
||||
/// 机器人脚本
|
||||
/// </summary>
|
||||
public string ScriptText { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the start time of this Task relative to the project start
|
||||
/// </summary>
|
||||
public float Start { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the end time of this Task relative to the project start
|
||||
/// </summary>
|
||||
public float End { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the duration of this Task
|
||||
/// </summary>
|
||||
public float Duration { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the amount of slack (free float)
|
||||
/// </summary>
|
||||
public float Slack { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Convert this Task to a descriptive string
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override string ToString()
|
||||
{
|
||||
// return string.Format("[Name = {0}, Start = {1}, End = {2}, Duration = {3}, Complete = {4}, TagID = {5}, TagValue = {6}, ModelCode = {7}]", Name, Start, End, Duration, Complete, TagID, TagValue, ModelCode);
|
||||
return string.Format("[ID = {0}, TagID = {1},Name = {2}, TagValue = {3},StartTime = {4}, KeepTime = {5},EndTime = {6}]", ID, TagID, Name, TagValue, Start, Duration, End);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Time scale in which the time units represent
|
||||
/// </summary>
|
||||
public enum TimeScale
|
||||
{
|
||||
/// <summary>
|
||||
/// Unit time in Days
|
||||
/// </summary>
|
||||
Day,
|
||||
/// <summary>
|
||||
/// Unit time in Weeks
|
||||
/// </summary>
|
||||
Week,
|
||||
/// <summary>
|
||||
/// Unit time in Others
|
||||
/// </summary>
|
||||
Other
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ProjectManager interface
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Task class type</typeparam>
|
||||
/// <typeparam name="R">Resource class type</typeparam>
|
||||
public interface IProjectManager<T, R>
|
||||
where T : Task
|
||||
where R : class
|
||||
{
|
||||
/// <summary>
|
||||
/// Add task to project manager
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
void Add(T task);
|
||||
/// <summary>
|
||||
/// Delete task from project manager
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
void Delete(T task);
|
||||
/// <summary>
|
||||
/// Group the member task under the group task. Group task cannot have relations.
|
||||
/// </summary>
|
||||
/// <param name="group"></param>
|
||||
/// <param name="member"></param>
|
||||
void Group(T group, T member);
|
||||
/// <summary>
|
||||
/// Ungroup member task from group task. If there are no more task under group, group will become a normal task.
|
||||
/// </summary>
|
||||
/// <param name="group"></param>
|
||||
/// <param name="member"></param>
|
||||
void Ungroup(T group, T member);
|
||||
/// <summary>
|
||||
/// Split the specified task into consecutive parts part1 and part2.
|
||||
/// </summary>
|
||||
/// <param name="task">The regular task to split which has duration of at least 2 to make two parts of 1 time unit duration each.</param>
|
||||
/// <param name="part1">New Task part (1) of the split task, with the start time of the original task and the specified duration value.</param>
|
||||
/// <param name="part2">New Task part (2) of the split task, starting 1 time unit after part (1) ends and having the remaining of the duration of the origina task.</param>
|
||||
/// <param name="duration">The duration of part (1) will be set to the specified duration value but will also be adjusted to approperiate value if necessary.</param>
|
||||
void Split(T task, T part1, T part2, float duration);
|
||||
/// <summary>
|
||||
/// Split the specified part and obtain another part from it.
|
||||
/// </summary>
|
||||
/// <param name="part">The task part to split which has duration of at least 2 to make two parts of 1 time unit duration each. Its duration will be set to the specified duration value.</param>
|
||||
/// <param name="another">New Task part of the original part, starting 1 time unit after it ends and having the remaining of the duration of the original part.</param>
|
||||
/// <param name="duration">The duration of part (1) will be set to the specified duration value but will also be adjusted to approperiate value if necessary.</param>
|
||||
void Split(T part, T another, float duration);
|
||||
/// <summary>
|
||||
/// Join part1 and part2 in a split task into a single part represented by part1, and part2 will be deleted from the ProjectManager.
|
||||
/// The resulting part will have a duration total of the two parts. Schedule of other parts will be packed according to direction of join.
|
||||
/// If the join will result in only one part remaining, the split task will merge instead.
|
||||
/// </summary>
|
||||
/// <param name="part1">The part to keep in the ProjectManager after the join completes successfully.</param>
|
||||
/// <param name="part2">The part to join into part1 and be deleted afterwards from the ProjectManager.</param>
|
||||
void Join(T part1, T part2);
|
||||
/// <summary>
|
||||
/// Merge all the parts of the splitted task back into one task, having duration equal to sum of total duration of individual task parts, and aggregating the resources onto the resulting task.
|
||||
/// </summary>
|
||||
/// <param name="split">The split Task to merge</param>
|
||||
void Merge(T split);
|
||||
/// <summary>
|
||||
/// Get the parts of the split task
|
||||
/// </summary>
|
||||
/// <param name="split"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<T> PartsOf(T split);
|
||||
/// <summary>
|
||||
/// Get the split task that the specified part belogs to.
|
||||
/// </summary>
|
||||
/// <param name="part"></param>
|
||||
/// <returns></returns>
|
||||
T SplitTaskOf(T part);
|
||||
/// <summary>
|
||||
/// Get whether the specified task is a split task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
bool IsSplit(T task);
|
||||
/// <summary>
|
||||
/// Get whether the specified task is a part of a split task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
bool IsPart(T task);
|
||||
/// <summary>
|
||||
/// Ungroup all member task under the specfied group task. The specified group task will become a normal task.
|
||||
/// </summary>
|
||||
/// <param name="group"></param>
|
||||
void Ungroup(T group);
|
||||
/// <summary>
|
||||
/// Move the specified task by offset positions in the task enumeration
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <param name="offset"></param>
|
||||
void Move(T task, int offset);
|
||||
/// <summary>
|
||||
/// Set a relation between the precedent and dependant task
|
||||
/// </summary>
|
||||
/// <param name="precedent"></param>
|
||||
/// <param name="dependant"></param>
|
||||
void Relate(T precedent, T dependant);
|
||||
/// <summary>
|
||||
/// Unset the relation between the precedent and dependant task, if any.
|
||||
/// </summary>
|
||||
/// <param name="precedent"></param>
|
||||
/// <param name="dependant"></param>
|
||||
void Unrelate(T precedent, T dependant);
|
||||
/// <summary>
|
||||
/// Remove all dependant task from specified precedent task
|
||||
/// </summary>
|
||||
/// <param name="precedent"></param>
|
||||
void Unrelate(T precedent);
|
||||
/// <summary>
|
||||
/// Enumerate through all tasks that is a precedent, having dependants.
|
||||
/// </summary>
|
||||
IEnumerable<T> Precedents { get; }
|
||||
/// <summary>
|
||||
/// Enumerate through all the tasks in the ProjectManager.
|
||||
/// If there are no change to groups and no add/delete tasks, the order between consecutive calls is preserved.
|
||||
/// </summary>
|
||||
IEnumerable<T> Tasks { get; }
|
||||
/// <summary>
|
||||
/// Set the start time of the specified task.
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <param name="start">Number of timescale units after ProjectManager.Start</param>
|
||||
void SetStart(T task, float start);
|
||||
/// <summary>
|
||||
/// Set the end time of the specified task. Duration is automatically adjusted to satisfy.
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <param name="end">Number of timescale units after ProjectManager.Start</param>
|
||||
void SetEnd(T task, float end);
|
||||
/// <summary>
|
||||
/// Set the duration of the specified task from start to end.
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <param name="duration">Number of timescale units between ProjectManager.Start</param>
|
||||
void SetDuration(T task, float duration);
|
||||
/// <summary>
|
||||
/// Set the percentage complete of the specified task from 0.0f to 1.0f.
|
||||
/// No effect on group tasks as they will get the aggregated percentage complete of all child tasks
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <param name="complete"></param>
|
||||
void SetComplete(T task, float complete);
|
||||
/// <summary>
|
||||
/// Set whether to collapse the specified group task. No effect on regular tasks.
|
||||
/// </summary>
|
||||
/// <param name="group"></param>
|
||||
/// <param name="collasped"></param>
|
||||
void SetCollapse(T group, bool collasped);
|
||||
/// <summary>
|
||||
/// Set the "now" time. Its value is the number of timescale units after the start time.
|
||||
/// </summary>
|
||||
int Now { get; }
|
||||
/// <summary>
|
||||
/// Set the start date of the project.
|
||||
/// </summary>
|
||||
DateTime Start { get; set; }
|
||||
/// <summary>
|
||||
/// Get the zero-based index of the specified task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
int IndexOf(T task);
|
||||
/// <summary>
|
||||
/// Enumerate through parent group and grandparent groups of the specified task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<T> AncestorsOf(T task);
|
||||
/// <summary>
|
||||
/// Enumerate through all the children and grandchildren of the specified group
|
||||
/// </summary>
|
||||
/// <param name="group"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<T> DecendantsOf(T group);
|
||||
/// <summary>
|
||||
/// Enumerate through all the direct children of the specified group
|
||||
/// </summary>
|
||||
/// <param name="group"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<T> ChildrenOf(T group);
|
||||
/// <summary>
|
||||
/// Enumerate through all the direct precedents and indirect precedents of the specified task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<T> PrecedentsOf(T task);
|
||||
/// <summary>
|
||||
/// Enumerate through all the direct dependants and indirect dependants of the specified task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<T> DependantsOf(T task);
|
||||
/// <summary>
|
||||
/// Enumerate through all the direct precedents of the specified task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<T> DirectPrecedentsOf(T task);
|
||||
/// <summary>
|
||||
/// Enumerate through all the direct dependants of the specified task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<T> DirectDependantsOf(T task);
|
||||
/// <summary>
|
||||
/// Enumerate through all the critical paths. Each path is an enumerable of tasks, starting from the final task of each path.
|
||||
/// </summary>
|
||||
IEnumerable<IEnumerable<T>> CriticalPaths { get; }
|
||||
/// <summary>
|
||||
/// Get the parent group of the specified task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
T ParentOf(T task);
|
||||
/// <summary>
|
||||
/// Get whether the specified task is a group
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
bool IsGroup(T task);
|
||||
/// <summary>
|
||||
/// Get whether the specified task is a member
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
bool IsMember(T task);
|
||||
/// <summary>
|
||||
/// Get whether the specified task has relations, either has dependants or has precedents connecting to it.
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
bool HasRelations(T task);
|
||||
/// <summary>
|
||||
/// Assign the specified resource to the specified task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <param name="resource"></param>
|
||||
void Assign(T task, R resource);
|
||||
/// <summary>
|
||||
/// Unassign the specified resource from the specfied task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <param name="resource"></param>
|
||||
void Unassign(T task, R resource);
|
||||
/// <summary>
|
||||
/// Unassign all resources from the specified task
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
void Unassign(T task);
|
||||
/// <summary>
|
||||
/// Unassign the specified resource from all tasks that has this resource assigned
|
||||
/// </summary>
|
||||
/// <param name="resource"></param>
|
||||
void Unassign(R resource);
|
||||
/// <summary>
|
||||
/// Enumerate through all the resources that has been assigned to some task.
|
||||
/// </summary>
|
||||
IEnumerable<R> Resources { get; }
|
||||
/// <summary>
|
||||
/// Enumerate through all the resources that has been assigned to the specified task.
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<R> ResourcesOf(T task);
|
||||
/// <summary>
|
||||
/// Enumerate through all the tasks that has the specified resource assigned to it.
|
||||
/// </summary>
|
||||
/// <param name="resource"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<T> TasksOf(R resource);
|
||||
}
|
||||
}
|
||||
216
DataMirrorTools_Simulator/GanttChartExample/Chart/PlaySlider.cs
Normal file
216
DataMirrorTools_Simulator/GanttChartExample/Chart/PlaySlider.cs
Normal file
@@ -0,0 +1,216 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
/// <summary>
|
||||
/// 绘制播放滑动条
|
||||
/// </summary>
|
||||
public partial class Chart
|
||||
{
|
||||
public enum ControlState//按钮状态
|
||||
{
|
||||
Normal,
|
||||
Hover,
|
||||
Pressed,
|
||||
Focused,
|
||||
}
|
||||
|
||||
private ControlState _controlState = ControlState.Normal;
|
||||
|
||||
private ControlState MouseState
|
||||
{
|
||||
get { return _controlState; }
|
||||
set
|
||||
{
|
||||
if (_controlState != value)
|
||||
{
|
||||
_controlState = value;
|
||||
base.Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool isMouseDown = false;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 确定拖拽范围
|
||||
/// </summary>
|
||||
RectangleF PlayMaskRectDragDrop;
|
||||
|
||||
private int _minValue = 0;
|
||||
private int _maxValue = 100;
|
||||
private int _currValue = 0;
|
||||
|
||||
private int offset = 0;//轨道距离两头的余量.
|
||||
private Size _sliderSize = new Size(1, 20);//滑块大小
|
||||
|
||||
public int Value
|
||||
{
|
||||
get { return this._currValue; }
|
||||
set
|
||||
{
|
||||
this._currValue = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Occurs when a Task is being dragged by the mouse
|
||||
/// </summary>
|
||||
public event EventHandler<MouseEventArgs> PlaySliderMouseDrag = null;
|
||||
|
||||
|
||||
private void OnMouseMove_PlaySlider(MouseEventArgs e)
|
||||
{
|
||||
if (!this.isMouseDown)
|
||||
{
|
||||
this.MouseState = this.IsInSliderArea(e.Location) ? ControlState.Hover : this.MouseState = ControlState.Normal;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
this.MouseState = ControlState.Pressed;
|
||||
this.ChangeValue(e.Location);
|
||||
PlaySliderMouseDrag(this, e);
|
||||
//OnPlaySliderMouseDrop
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMouseDown_PlaySlider(MouseEventArgs e)
|
||||
{
|
||||
base.Focus();
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
if (this.IsInSliderArea(e.Location))//滑块内.
|
||||
{
|
||||
this.isMouseDown = true;
|
||||
this.MouseState = ControlState.Pressed;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void OnMouseUp_PlaySlider(MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left )
|
||||
{
|
||||
this.isMouseDown = false;
|
||||
this.MouseState = this.IsInSliderArea(e.Location) ? ControlState.Hover : ControlState.Normal;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseLeave(EventArgs e)
|
||||
{
|
||||
if (!this.isMouseDown)
|
||||
{
|
||||
this.MouseState = ControlState.Normal;
|
||||
}
|
||||
base.OnMouseLeave(e);
|
||||
}
|
||||
|
||||
|
||||
protected override void OnMouseCaptureChanged(EventArgs e)
|
||||
{
|
||||
if (!base.Capture)//未捕获鼠标
|
||||
{
|
||||
isMouseDown = false;
|
||||
}
|
||||
base.OnMouseCaptureChanged(e);
|
||||
}
|
||||
//单击或滑动改变值
|
||||
private void ChangeValue(Point mouse )
|
||||
{
|
||||
//_mProject.NowIndex
|
||||
// int NowIndex;
|
||||
var point = _mViewport.DeviceToWorldCoord(mouse);
|
||||
_maxValue = (int)_mProject.MaxPlayLenth;;
|
||||
|
||||
//if (point.X <= this.ClientRectangle.X + offset + this._sliderSize.Width / 2f)
|
||||
if (point.X <= _minValue + offset + this._sliderSize.Width / 2f)
|
||||
{
|
||||
this.Value = this._minValue;
|
||||
return;
|
||||
}
|
||||
//if (point.X >= this.ClientRectangle.Right - offset - this._sliderSize.Width / 2f)
|
||||
if (point.X >= _maxValue - offset - this._sliderSize.Width / 2f)
|
||||
{
|
||||
this.Value = this._maxValue;
|
||||
return;
|
||||
}
|
||||
float len = point.X - this._sliderSize.Width / 2f - offset;
|
||||
var percent = len / (_maxValue - this._sliderSize.Width - 2 * offset);
|
||||
//var percent = len / (this.ClientRectangle.Width - this._sliderSize.Width - 2 * offset);
|
||||
var v = this._minValue + (int)((this._maxValue - this._minValue) * percent);
|
||||
if (v > this._maxValue) { v = this._maxValue; }
|
||||
if (v < this._minValue) { v = this._minValue; }
|
||||
this.Value = v;
|
||||
_mProject.NowIndexXf = v;
|
||||
_mProject.NowIndex = (int)(_mProject.AllCountFrame* percent);
|
||||
}
|
||||
|
||||
protected virtual void OnPlaySliderMouseDrop(TaskDragDropEventArgs e)
|
||||
{
|
||||
|
||||
|
||||
this.Invalidate();
|
||||
}
|
||||
//鼠标落点是否在滑块内
|
||||
private bool IsInSliderArea(Point point)
|
||||
{
|
||||
var chartcoord = _mViewport.DeviceToWorldCoord(point);
|
||||
return PlayMaskRectDragDrop.Contains(chartcoord);
|
||||
}
|
||||
/// <summary>
|
||||
/// 绘制播放线
|
||||
/// </summary>
|
||||
/// <param name="graphics"></param>
|
||||
private void OnPaint_PlaySlider(Graphics graphics)
|
||||
{
|
||||
//正常播放
|
||||
DrawPlayLine(graphics);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 绘制播放线
|
||||
/// </summary>
|
||||
/// <param name="graphics"></param>
|
||||
private void DrawPlayLine(Graphics graphics)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (float.NaN == _mProject.NowIndexXf) return;
|
||||
float xf1 = _mProject.NowIndexXf;
|
||||
Pen pen = new Pen(Color.Red);
|
||||
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
|
||||
pen.Width = 1;
|
||||
graphics.DrawLine(pen, new PointF(xf1, _mViewport.Y), new PointF(xf1, _mViewport.Rectangle.Bottom));
|
||||
|
||||
Color color = System.Drawing.Color.FromArgb(((int)(((byte)(34)))), ((int)(((byte)(54)))), ((int)(((byte)(82)))));
|
||||
Brush brushes = new SolidBrush(color);
|
||||
PointF[] point = new PointF[3];
|
||||
float h0 = 6f;
|
||||
|
||||
PlayMaskRectDragDrop = new Rectangle((int)(xf1 - h0), (int)_mViewport.Y, (int)(2 * h0), (int)(_mViewport.Y + 2 * h0));
|
||||
point[0] = new PointF(xf1 - h0, _mViewport.Y);
|
||||
point[1] = new PointF(xf1 + h0, _mViewport.Y);
|
||||
point[2] = new PointF(xf1, _mViewport.Y + 2.0f * h0);
|
||||
graphics.FillPolygon(brushes, point);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//graphics.DrawRectangle(new Pen(Color.Red), PlayMaskRectDragDrop);
|
||||
}
|
||||
}
|
||||
}
|
||||
1647
DataMirrorTools_Simulator/GanttChartExample/Chart/Project.cs
Normal file
1647
DataMirrorTools_Simulator/GanttChartExample/Chart/Project.cs
Normal file
File diff suppressed because it is too large
Load Diff
494
DataMirrorTools_Simulator/GanttChartExample/Chart/Viewport.cs
Normal file
494
DataMirrorTools_Simulator/GanttChartExample/Chart/Viewport.cs
Normal file
@@ -0,0 +1,494 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
/// <summary>
|
||||
/// IViewport moves in world coordinate and projects models to device coordinate space
|
||||
/// </summary>
|
||||
public interface IViewport
|
||||
{
|
||||
/// <summary>
|
||||
/// Get the projection matrix to transform world coordinates to device coordinates
|
||||
/// </summary>
|
||||
Matrix Projection { get; }
|
||||
/// <summary>
|
||||
/// Get the rectangle boundary in world coordinates to be captured and projected onto viewport
|
||||
/// </summary>
|
||||
RectangleF Rectangle { get; }
|
||||
/// <summary>
|
||||
/// Request viewport to recalculate its get properties.
|
||||
/// </summary>
|
||||
void Resize();
|
||||
/// <summary>
|
||||
/// Convert device coordinates to world coordinates
|
||||
/// </summary>
|
||||
/// <param name="screencoord"></param>
|
||||
/// <returns></returns>
|
||||
PointF DeviceToWorldCoord(Point screencoord);
|
||||
/// <summary>
|
||||
/// Convert device coordinates to world coordinates
|
||||
/// </summary>
|
||||
/// <param name="screencoord"></param>
|
||||
/// <returns></returns>
|
||||
PointF DeviceToWorldCoord(PointF screencoord);
|
||||
/// <summary>
|
||||
/// Convert world coordinates to device coordinates
|
||||
/// </summary>
|
||||
/// <param name="worldcoord"></param>
|
||||
/// <returns></returns>
|
||||
PointF WorldToDeviceCoord(PointF worldcoord);
|
||||
/// <summary>
|
||||
/// Get or set the world height
|
||||
/// </summary>
|
||||
float WorldHeight { get; set; }
|
||||
/// <summary>
|
||||
/// Get or set the world width
|
||||
/// </summary>
|
||||
float WorldWidth { get; set; }
|
||||
/// <summary>
|
||||
/// Get or set the X world-coordinate of the position of the viewport.
|
||||
/// This is also the same as the IViewport.Rectangle.Left.
|
||||
/// </summary>
|
||||
float X { get; set; }
|
||||
/// <summary>
|
||||
/// Get or set the Y world-coordinate of the position of the viewport.
|
||||
/// This is also the same as the IViewport.Rectangle.Top.
|
||||
/// </summary>
|
||||
float Y { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// IViewport for printing to file
|
||||
/// </summary>
|
||||
class PrintViewport : IViewport
|
||||
{
|
||||
public PrintViewport(Graphics graphics,
|
||||
float worldWidth, float worldHeight,
|
||||
int deviceWidth, int deviceHeight,
|
||||
int marginLeft, int marginTop)
|
||||
{
|
||||
WorldWidth = worldWidth;
|
||||
WorldHeight = worldHeight;
|
||||
|
||||
_mDeviceWidth = deviceWidth;
|
||||
_mDeviceHeight = deviceHeight;
|
||||
|
||||
_mMarginTop = marginTop;
|
||||
_mMarginLeft = marginLeft;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get or set viewport X world coordinate
|
||||
/// </summary>
|
||||
public float X { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get or set viewport Y world coordinate
|
||||
/// </summary>
|
||||
public float Y { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get or set scaling factor between 0.0f and 1.0f (obviously, scale of zero would mean you can't see anything)
|
||||
/// </summary>
|
||||
public float Scale { get { return _mScale; } set { _mScale = value; } }
|
||||
|
||||
/// <summary>
|
||||
/// Get or set width of the world
|
||||
/// </summary>
|
||||
public float WorldWidth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get or set height of the world
|
||||
/// </summary>
|
||||
public float WorldHeight { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the projection matrix for transforming models into viewport
|
||||
/// </summary>
|
||||
public Matrix Projection
|
||||
{
|
||||
get
|
||||
{
|
||||
Matrix matrix = new Matrix();
|
||||
matrix.Translate(this._mMarginLeft, this._mMarginTop);
|
||||
matrix.Scale(_mScale, _mScale);
|
||||
matrix.Translate(-this.X, -this.Y);
|
||||
return matrix;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the rectangle bounds of the viewport in world coordinate
|
||||
/// </summary>
|
||||
public RectangleF Rectangle
|
||||
{
|
||||
get { return new RectangleF(this.X, this.Y, _mDeviceWidth / _mScale, _mDeviceHeight / _mScale); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resize the viewport, recalculating and correcting dimensions
|
||||
/// </summary>
|
||||
public void Resize()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert view coordinates to world coordinate
|
||||
/// </summary>
|
||||
/// <param name="screencoord"></param>
|
||||
/// <returns></returns>
|
||||
public PointF DeviceToWorldCoord(Point screencoord)
|
||||
{
|
||||
return new PointF(screencoord.X + X, screencoord.Y + Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert view coordinates to world coordinate
|
||||
/// </summary>
|
||||
/// <param name="screencoord"></param>
|
||||
/// <returns></returns>
|
||||
public PointF DeviceToWorldCoord(PointF screencoord)
|
||||
{
|
||||
return new PointF(screencoord.X + X, screencoord.Y + Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert world coordinates to view coordinate
|
||||
/// </summary>
|
||||
/// <param name="worldcoord"></param>
|
||||
/// <returns></returns>
|
||||
public PointF WorldToDeviceCoord(PointF worldcoord)
|
||||
{
|
||||
return new PointF(worldcoord.X - X, worldcoord.Y - Y);
|
||||
}
|
||||
|
||||
int _mDeviceWidth, _mDeviceHeight;
|
||||
int _mMarginLeft, _mMarginTop;
|
||||
float _mScale = 1.0f;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// An IViewport that is placed over a world coordinate system and provides methods to transform between world and view coordinates
|
||||
/// </summary>
|
||||
class ControlViewport : IViewport
|
||||
{
|
||||
/// <summary>
|
||||
/// Construct a Viewport
|
||||
/// </summary>
|
||||
/// <param name="view"></param>
|
||||
public ControlViewport(Control view)
|
||||
{
|
||||
_mDevice = view;
|
||||
_mhScroll = new HScrollBar();
|
||||
_mvScroll = new VScrollBar();
|
||||
_mScrollHolePatch = new UserControl();
|
||||
WorldWidth = view.Width;
|
||||
WorldHeight = view.Height;
|
||||
|
||||
_mDevice.Controls.Add(_mhScroll);
|
||||
_mDevice.Controls.Add(_mvScroll);
|
||||
_mDevice.Controls.Add(_mScrollHolePatch);
|
||||
|
||||
_mhScroll.Scroll += (s, e) => X = e.NewValue;
|
||||
_mvScroll.Scroll += (s, e) => Y = e.NewValue;
|
||||
_mDevice.Resize += (s, e) => this.Resize();
|
||||
_mDevice.MouseWheel += (s, e) => Y -= e.Delta > 0 ? WheelDelta : -WheelDelta;
|
||||
WheelDelta = _mvScroll.LargeChange;
|
||||
|
||||
_RecalculateMatrix();
|
||||
_RecalculateRectangle();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Identity Matrix
|
||||
/// </summary>
|
||||
public static readonly Matrix Identity = new Matrix(1, 0, 0, 1, 0, 0);
|
||||
|
||||
/// <summary>
|
||||
/// Get or set the number of pixels to scroll on each click of the mouse
|
||||
/// </summary>
|
||||
public int WheelDelta { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the Rectangle area in world coordinates where the Viewport is currently viewing over
|
||||
/// </summary>
|
||||
public RectangleF Rectangle
|
||||
{
|
||||
get
|
||||
{
|
||||
return _mRectangle;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the projection transformation matrix required for drawing models in the world projected into view
|
||||
/// </summary>
|
||||
public Matrix Projection
|
||||
{
|
||||
get
|
||||
{
|
||||
return _mMatrix;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resize the Viewport according to the view control and world dimensions, which ever larger and add scrollbars where approperiate
|
||||
/// </summary>
|
||||
public void Resize()
|
||||
{
|
||||
if (WorldWidth <= _mDevice.Width)
|
||||
{
|
||||
_mhScroll.Hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
_mhScroll.Show();
|
||||
_mhScroll.Maximum = (int)(WorldWidth - _mDevice.Width);
|
||||
_mhScroll.Dock = DockStyle.None;
|
||||
_mhScroll.Location = new Point(0, _mDevice.Height - _mhScroll.Height);
|
||||
_mhScroll.Width = _mDevice.Width - _mvScroll.Width;
|
||||
}
|
||||
|
||||
if (WorldHeight <= _mDevice.Height)
|
||||
{
|
||||
_mvScroll.Hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
_mvScroll.Show();
|
||||
_mvScroll.Maximum = (int)(WorldHeight - _mDevice.Height);
|
||||
_mvScroll.Dock = DockStyle.None;
|
||||
_mvScroll.Location = new Point(_mDevice.Width - _mvScroll.Width, 0);
|
||||
_mvScroll.Height = _mDevice.Height - _mhScroll.Height;
|
||||
}
|
||||
|
||||
_mScrollHolePatch.Location = new Point(_mhScroll.Right, _mvScroll.Bottom);
|
||||
_mScrollHolePatch.Size = new Size(_mvScroll.Width, _mhScroll.Height);
|
||||
|
||||
_RecalculateRectangle();
|
||||
_RecalculateMatrix();
|
||||
|
||||
_mDevice.Invalidate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert view coordinates to world coordinates
|
||||
/// </summary>
|
||||
/// <param name="screencoord"></param>
|
||||
/// <returns></returns>
|
||||
public PointF DeviceToWorldCoord(Point screencoord)
|
||||
{
|
||||
return new PointF(screencoord.X + X, screencoord.Y + Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert view coordinates to world coordinates
|
||||
/// </summary>
|
||||
/// <param name="screencoord"></param>
|
||||
/// <returns></returns>
|
||||
public PointF DeviceToWorldCoord(PointF screencoord)
|
||||
{
|
||||
return new PointF(screencoord.X + X, screencoord.Y + Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert world coordinates to view coordinates
|
||||
/// </summary>
|
||||
/// <param name="worldcoord"></param>
|
||||
/// <returns></returns>
|
||||
public PointF WorldToDeviceCoord(PointF worldcoord)
|
||||
{
|
||||
return new PointF(worldcoord.X - X, worldcoord.Y - Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get or set the world width
|
||||
/// </summary>
|
||||
public float WorldWidth
|
||||
{
|
||||
get { return _mWorldWidth; }
|
||||
set
|
||||
{
|
||||
if (!value.Equals(_mWorldWidth))
|
||||
{
|
||||
if (value < _mDevice.Width) value = _mDevice.Width;
|
||||
_mWorldWidth = value;
|
||||
Resize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get or set the world height
|
||||
/// </summary>
|
||||
public float WorldHeight
|
||||
{
|
||||
get { return _mWorldHeight; }
|
||||
set
|
||||
{
|
||||
if (!value.Equals(_mWorldHeight))
|
||||
{
|
||||
if (value < _mDevice.Height) value = _mDevice.Height;
|
||||
_mWorldHeight = value;
|
||||
Resize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get or set the world X coordinate of the Viewport location, represented by the top left corner of the Viewport Rectangle
|
||||
/// </summary>
|
||||
public float X
|
||||
{
|
||||
get { return _mhScroll.Value; }
|
||||
set
|
||||
{
|
||||
if (!((int)value).Equals(_mhScroll.Value))
|
||||
{
|
||||
if (value > _mhScroll.Maximum) value = _mhScroll.Maximum;
|
||||
else if (value < 0) value = 0;
|
||||
_mhScroll.Value = (int)value;
|
||||
_RecalculateRectangle();
|
||||
_RecalculateMatrix();
|
||||
_mDevice.Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get or set the wordl Y coordinate of the Viewport location, represented by the top left corner of the Viewport Rectangle
|
||||
/// </summary>
|
||||
public float Y
|
||||
{
|
||||
get { return _mvScroll.Value; }
|
||||
set
|
||||
{
|
||||
if (!((int)value).Equals(_mvScroll.Value))
|
||||
{
|
||||
if (value > _mvScroll.Maximum) value = _mvScroll.Maximum;
|
||||
else if (value < 0) value = 0;
|
||||
_mvScroll.Value = (int)value;
|
||||
_RecalculateRectangle();
|
||||
_RecalculateMatrix();
|
||||
_mDevice.Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void _RecalculateRectangle()
|
||||
{
|
||||
_mRectangle = new RectangleF(X, Y, _mDevice.Width, _mDevice.Height);
|
||||
}
|
||||
|
||||
private void _RecalculateMatrix()
|
||||
{
|
||||
_mMatrix = new Matrix();
|
||||
_mMatrix.Translate(-X, -Y);
|
||||
}
|
||||
|
||||
Control _mDevice;
|
||||
HScrollBar _mhScroll;
|
||||
VScrollBar _mvScroll;
|
||||
UserControl _mScrollHolePatch;
|
||||
RectangleF _mRectangle = RectangleF.Empty;
|
||||
Matrix _mMatrix = new Matrix();
|
||||
float _mWorldHeight, _mWorldWidth;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// IViewport for printing to image. The full chart in the world is printed as-is.
|
||||
/// </summary>
|
||||
class ImageViewport : IViewport
|
||||
{
|
||||
private float _mScale;
|
||||
|
||||
public ImageViewport(float scale, float worldWidth, float worldHeight)
|
||||
{
|
||||
_mScale = scale;
|
||||
WorldWidth = worldWidth;
|
||||
WorldHeight = worldHeight;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the projection matrix to transform world coordinates to device coordinates
|
||||
/// </summary>
|
||||
public Matrix Projection
|
||||
{
|
||||
get
|
||||
{
|
||||
Matrix projection = new Matrix();
|
||||
projection.Scale(_mScale, _mScale);
|
||||
return projection;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The device rectangle boundary in the world to capture and project onto device is the same rectangle of the world for ImageViewport
|
||||
/// So that the entire world is projected onto the ImageViewport
|
||||
/// </summary>
|
||||
public RectangleF Rectangle
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RectangleF(0, 0, this.WorldWidth, this.WorldHeight);
|
||||
}
|
||||
}
|
||||
|
||||
public void Resize()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The device and world coordinates are the same for ImageViewport
|
||||
/// </summary>
|
||||
public PointF DeviceToWorldCoord(Point screencoord)
|
||||
{
|
||||
return screencoord;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The device and world coordinates are the same for ImageViewport
|
||||
/// </summary>
|
||||
public PointF DeviceToWorldCoord(PointF screencoord)
|
||||
{
|
||||
return screencoord;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The device and world coordinates are the same for ImageViewport
|
||||
/// </summary>
|
||||
public PointF WorldToDeviceCoord(PointF worldcoord)
|
||||
{
|
||||
return worldcoord;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get or set the world height
|
||||
/// </summary>
|
||||
public float WorldHeight { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get or set the world width
|
||||
/// </summary>
|
||||
public float WorldWidth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// No effect for ImageViewport. X and Y world-coordinate offset is always at (0,0).
|
||||
/// </summary>
|
||||
public float X { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// No effect for ImageViewport. X and Y world-coordinate offset is always at (0,0).
|
||||
/// </summary>
|
||||
public float Y { get; set; }
|
||||
}
|
||||
}
|
||||
530
DataMirrorTools_Simulator/GanttChartExample/ExampleFull.Designer.cs
generated
Normal file
530
DataMirrorTools_Simulator/GanttChartExample/ExampleFull.Designer.cs
generated
Normal file
@@ -0,0 +1,530 @@
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
partial class ExampleFull
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ExampleFull));
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.numericUpDown_TimeInterval = new System.Windows.Forms.NumericUpDown();
|
||||
this.numericUpDown_indexOneFrameCount = new System.Windows.Forms.NumericUpDown();
|
||||
this.textBox_CurrentTime = new System.Windows.Forms.TextBox();
|
||||
this.textBox_AllCountFrame = new System.Windows.Forms.TextBox();
|
||||
this.pictureBox_Stop = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox_Pause = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox_Play = new System.Windows.Forms.PictureBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.textBox_NowIndex = new System.Windows.Forms.TextBox();
|
||||
this.textBox_MaxEnd = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.button_Save = new System.Windows.Forms.Button();
|
||||
this.button_Delete = new System.Windows.Forms.Button();
|
||||
this.button_Insert = new System.Windows.Forms.Button();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.textBox_Name = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.textBox_End = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.textBox_Duration = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.textBox_Start = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.textBox_ID = new System.Windows.Forms.TextBox();
|
||||
this.label_ID = new System.Windows.Forms.Label();
|
||||
this.button1_ZoomRedues = new System.Windows.Forms.Button();
|
||||
this.button_ZoomPlus = new System.Windows.Forms.Button();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.lblStatus = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.timer_Play = new System.Windows.Forms.Timer(this.components);
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this._mChart = new Braincase.GanttChart.Chart();
|
||||
this.panel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDown_TimeInterval)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDown_indexOneFrameCount)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_Stop)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_Pause)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_Play)).BeginInit();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.panel1.Controls.Add(this.numericUpDown_TimeInterval);
|
||||
this.panel1.Controls.Add(this.numericUpDown_indexOneFrameCount);
|
||||
this.panel1.Controls.Add(this.textBox_CurrentTime);
|
||||
this.panel1.Controls.Add(this.textBox_AllCountFrame);
|
||||
this.panel1.Controls.Add(this.pictureBox_Stop);
|
||||
this.panel1.Controls.Add(this.pictureBox_Pause);
|
||||
this.panel1.Controls.Add(this.pictureBox_Play);
|
||||
this.panel1.Controls.Add(this.label7);
|
||||
this.panel1.Controls.Add(this.label6);
|
||||
this.panel1.Controls.Add(this.textBox_NowIndex);
|
||||
this.panel1.Controls.Add(this.textBox_MaxEnd);
|
||||
this.panel1.Controls.Add(this.label1);
|
||||
this.panel1.Controls.Add(this.button_Save);
|
||||
this.panel1.Controls.Add(this.button_Delete);
|
||||
this.panel1.Controls.Add(this.button_Insert);
|
||||
this.panel1.Controls.Add(this.label12);
|
||||
this.panel1.Controls.Add(this.textBox_Name);
|
||||
this.panel1.Controls.Add(this.label5);
|
||||
this.panel1.Controls.Add(this.label10);
|
||||
this.panel1.Controls.Add(this.textBox_End);
|
||||
this.panel1.Controls.Add(this.label4);
|
||||
this.panel1.Controls.Add(this.textBox_Duration);
|
||||
this.panel1.Controls.Add(this.label3);
|
||||
this.panel1.Controls.Add(this.textBox_Start);
|
||||
this.panel1.Controls.Add(this.label2);
|
||||
this.panel1.Controls.Add(this.textBox_ID);
|
||||
this.panel1.Controls.Add(this.label_ID);
|
||||
this.panel1.Controls.Add(this.button1_ZoomRedues);
|
||||
this.panel1.Controls.Add(this.button_ZoomPlus);
|
||||
this.panel1.Location = new System.Drawing.Point(3, 3);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(1526, 29);
|
||||
this.panel1.TabIndex = 5;
|
||||
//
|
||||
// numericUpDown_TimeInterval
|
||||
//
|
||||
this.numericUpDown_TimeInterval.DecimalPlaces = 2;
|
||||
this.numericUpDown_TimeInterval.Increment = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
131072});
|
||||
this.numericUpDown_TimeInterval.Location = new System.Drawing.Point(1161, 2);
|
||||
this.numericUpDown_TimeInterval.Maximum = new decimal(new int[] {
|
||||
10,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numericUpDown_TimeInterval.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
131072});
|
||||
this.numericUpDown_TimeInterval.Name = "numericUpDown_TimeInterval";
|
||||
this.numericUpDown_TimeInterval.Size = new System.Drawing.Size(51, 23);
|
||||
this.numericUpDown_TimeInterval.TabIndex = 11;
|
||||
this.numericUpDown_TimeInterval.Value = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
131072});
|
||||
this.numericUpDown_TimeInterval.ValueChanged += new System.EventHandler(this.numericUpDown_TimeInterval_ValueChanged);
|
||||
//
|
||||
// numericUpDown_indexOneFrameCount
|
||||
//
|
||||
this.numericUpDown_indexOneFrameCount.Location = new System.Drawing.Point(1404, 2);
|
||||
this.numericUpDown_indexOneFrameCount.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numericUpDown_indexOneFrameCount.Name = "numericUpDown_indexOneFrameCount";
|
||||
this.numericUpDown_indexOneFrameCount.Size = new System.Drawing.Size(54, 23);
|
||||
this.numericUpDown_indexOneFrameCount.TabIndex = 10;
|
||||
this.numericUpDown_indexOneFrameCount.Value = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numericUpDown_indexOneFrameCount.ValueChanged += new System.EventHandler(this.numericUpDown_indexOneFrameCount_ValueChanged);
|
||||
//
|
||||
// textBox_CurrentTime
|
||||
//
|
||||
this.textBox_CurrentTime.Enabled = false;
|
||||
this.textBox_CurrentTime.Location = new System.Drawing.Point(1074, 2);
|
||||
this.textBox_CurrentTime.Name = "textBox_CurrentTime";
|
||||
this.textBox_CurrentTime.Size = new System.Drawing.Size(45, 23);
|
||||
this.textBox_CurrentTime.TabIndex = 9;
|
||||
//
|
||||
// textBox_AllCountFrame
|
||||
//
|
||||
this.textBox_AllCountFrame.Enabled = false;
|
||||
this.textBox_AllCountFrame.Location = new System.Drawing.Point(969, 1);
|
||||
this.textBox_AllCountFrame.Name = "textBox_AllCountFrame";
|
||||
this.textBox_AllCountFrame.Size = new System.Drawing.Size(45, 23);
|
||||
this.textBox_AllCountFrame.TabIndex = 9;
|
||||
//
|
||||
// pictureBox_Stop
|
||||
//
|
||||
this.pictureBox_Stop.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox_Stop.Image")));
|
||||
this.pictureBox_Stop.InitialImage = ((System.Drawing.Image)(resources.GetObject("pictureBox_Stop.InitialImage")));
|
||||
this.pictureBox_Stop.Location = new System.Drawing.Point(1373, 1);
|
||||
this.pictureBox_Stop.Name = "pictureBox_Stop";
|
||||
this.pictureBox_Stop.Size = new System.Drawing.Size(25, 22);
|
||||
this.pictureBox_Stop.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox_Stop.TabIndex = 8;
|
||||
this.pictureBox_Stop.TabStop = false;
|
||||
this.pictureBox_Stop.Click += new System.EventHandler(this.pictureBox_Stop_Click);
|
||||
//
|
||||
// pictureBox_Pause
|
||||
//
|
||||
this.pictureBox_Pause.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox_Pause.Image")));
|
||||
this.pictureBox_Pause.InitialImage = ((System.Drawing.Image)(resources.GetObject("pictureBox_Pause.InitialImage")));
|
||||
this.pictureBox_Pause.Location = new System.Drawing.Point(1342, 1);
|
||||
this.pictureBox_Pause.Name = "pictureBox_Pause";
|
||||
this.pictureBox_Pause.Size = new System.Drawing.Size(25, 22);
|
||||
this.pictureBox_Pause.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox_Pause.TabIndex = 8;
|
||||
this.pictureBox_Pause.TabStop = false;
|
||||
this.pictureBox_Pause.Click += new System.EventHandler(this.pictureBox_Pause_Click);
|
||||
//
|
||||
// pictureBox_Play
|
||||
//
|
||||
this.pictureBox_Play.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox_Play.Image")));
|
||||
this.pictureBox_Play.InitialImage = ((System.Drawing.Image)(resources.GetObject("pictureBox_Play.InitialImage")));
|
||||
this.pictureBox_Play.Location = new System.Drawing.Point(1311, 2);
|
||||
this.pictureBox_Play.Name = "pictureBox_Play";
|
||||
this.pictureBox_Play.Size = new System.Drawing.Size(25, 22);
|
||||
this.pictureBox_Play.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox_Play.TabIndex = 8;
|
||||
this.pictureBox_Play.TabStop = false;
|
||||
this.pictureBox_Play.Click += new System.EventHandler(this.pictureBox_Play_Click);
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(1219, 4);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(33, 15);
|
||||
this.label7.TabIndex = 7;
|
||||
this.label7.Text = "帧数";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(1121, 5);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(33, 15);
|
||||
this.label6.TabIndex = 7;
|
||||
this.label6.Text = "间隔";
|
||||
//
|
||||
// textBox_NowIndex
|
||||
//
|
||||
this.textBox_NowIndex.Enabled = false;
|
||||
this.textBox_NowIndex.Location = new System.Drawing.Point(1253, 1);
|
||||
this.textBox_NowIndex.Name = "textBox_NowIndex";
|
||||
this.textBox_NowIndex.Size = new System.Drawing.Size(51, 23);
|
||||
this.textBox_NowIndex.TabIndex = 6;
|
||||
this.textBox_NowIndex.TextChanged += new System.EventHandler(this.textBox_TimeInterval_TextChanged);
|
||||
//
|
||||
// textBox_MaxEnd
|
||||
//
|
||||
this.textBox_MaxEnd.Enabled = false;
|
||||
this.textBox_MaxEnd.Location = new System.Drawing.Point(849, 1);
|
||||
this.textBox_MaxEnd.Name = "textBox_MaxEnd";
|
||||
this.textBox_MaxEnd.Size = new System.Drawing.Size(48, 23);
|
||||
this.textBox_MaxEnd.TabIndex = 5;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(797, 4);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(46, 15);
|
||||
this.label1.TabIndex = 4;
|
||||
this.label1.Text = "总时间";
|
||||
//
|
||||
// button_Save
|
||||
//
|
||||
this.button_Save.Location = new System.Drawing.Point(177, 3);
|
||||
this.button_Save.Name = "button_Save";
|
||||
this.button_Save.Size = new System.Drawing.Size(49, 23);
|
||||
this.button_Save.TabIndex = 3;
|
||||
this.button_Save.Text = "保存";
|
||||
this.button_Save.UseVisualStyleBackColor = true;
|
||||
this.button_Save.Click += new System.EventHandler(this.button_Save_Click);
|
||||
//
|
||||
// button_Delete
|
||||
//
|
||||
this.button_Delete.Location = new System.Drawing.Point(122, 3);
|
||||
this.button_Delete.Name = "button_Delete";
|
||||
this.button_Delete.Size = new System.Drawing.Size(49, 23);
|
||||
this.button_Delete.TabIndex = 3;
|
||||
this.button_Delete.Text = "删除";
|
||||
this.button_Delete.UseVisualStyleBackColor = true;
|
||||
this.button_Delete.Click += new System.EventHandler(this.button_Delete_Click);
|
||||
//
|
||||
// button_Insert
|
||||
//
|
||||
this.button_Insert.Location = new System.Drawing.Point(67, 3);
|
||||
this.button_Insert.Name = "button_Insert";
|
||||
this.button_Insert.Size = new System.Drawing.Size(49, 23);
|
||||
this.button_Insert.TabIndex = 3;
|
||||
this.button_Insert.Text = "增加";
|
||||
this.button_Insert.UseVisualStyleBackColor = true;
|
||||
this.button_Insert.Click += new System.EventHandler(this.button_Insert_Click);
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Location = new System.Drawing.Point(1015, 6);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(59, 15);
|
||||
this.label12.TabIndex = 1;
|
||||
this.label12.Text = "当前时间";
|
||||
//
|
||||
// textBox_Name
|
||||
//
|
||||
this.textBox_Name.Enabled = false;
|
||||
this.textBox_Name.Location = new System.Drawing.Point(673, 3);
|
||||
this.textBox_Name.Name = "textBox_Name";
|
||||
this.textBox_Name.Size = new System.Drawing.Size(118, 23);
|
||||
this.textBox_Name.TabIndex = 2;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(619, 7);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(39, 15);
|
||||
this.label5.TabIndex = 1;
|
||||
this.label5.Text = "Name";
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(933, 5);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(33, 15);
|
||||
this.label10.TabIndex = 1;
|
||||
this.label10.Text = "总帧";
|
||||
//
|
||||
// textBox_End
|
||||
//
|
||||
this.textBox_End.Enabled = false;
|
||||
this.textBox_End.Location = new System.Drawing.Point(565, 1);
|
||||
this.textBox_End.Name = "textBox_End";
|
||||
this.textBox_End.Size = new System.Drawing.Size(48, 23);
|
||||
this.textBox_End.TabIndex = 2;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(532, 6);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(27, 15);
|
||||
this.label4.TabIndex = 1;
|
||||
this.label4.Text = "End";
|
||||
//
|
||||
// textBox_Duration
|
||||
//
|
||||
this.textBox_Duration.Enabled = false;
|
||||
this.textBox_Duration.Location = new System.Drawing.Point(477, 2);
|
||||
this.textBox_Duration.Name = "textBox_Duration";
|
||||
this.textBox_Duration.Size = new System.Drawing.Size(49, 23);
|
||||
this.textBox_Duration.TabIndex = 2;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(418, 5);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(53, 15);
|
||||
this.label3.TabIndex = 1;
|
||||
this.label3.Text = "Duration";
|
||||
//
|
||||
// textBox_Start
|
||||
//
|
||||
this.textBox_Start.Location = new System.Drawing.Point(367, 2);
|
||||
this.textBox_Start.Name = "textBox_Start";
|
||||
this.textBox_Start.Size = new System.Drawing.Size(45, 23);
|
||||
this.textBox_Start.TabIndex = 2;
|
||||
this.textBox_Start.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBox_Start_KeyUp);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(330, 5);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(31, 15);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "Start";
|
||||
//
|
||||
// textBox_ID
|
||||
//
|
||||
this.textBox_ID.Enabled = false;
|
||||
this.textBox_ID.Location = new System.Drawing.Point(290, 1);
|
||||
this.textBox_ID.Name = "textBox_ID";
|
||||
this.textBox_ID.Size = new System.Drawing.Size(34, 23);
|
||||
this.textBox_ID.TabIndex = 2;
|
||||
//
|
||||
// label_ID
|
||||
//
|
||||
this.label_ID.AutoSize = true;
|
||||
this.label_ID.Location = new System.Drawing.Point(232, 8);
|
||||
this.label_ID.Name = "label_ID";
|
||||
this.label_ID.Size = new System.Drawing.Size(59, 15);
|
||||
this.label_ID.TabIndex = 1;
|
||||
this.label_ID.Text = "工艺代码";
|
||||
//
|
||||
// button1_ZoomRedues
|
||||
//
|
||||
this.button1_ZoomRedues.Location = new System.Drawing.Point(36, 1);
|
||||
this.button1_ZoomRedues.Name = "button1_ZoomRedues";
|
||||
this.button1_ZoomRedues.Size = new System.Drawing.Size(25, 23);
|
||||
this.button1_ZoomRedues.TabIndex = 0;
|
||||
this.button1_ZoomRedues.Text = "-";
|
||||
this.button1_ZoomRedues.UseVisualStyleBackColor = true;
|
||||
this.button1_ZoomRedues.Click += new System.EventHandler(this.button1_ZoomRedues_Click);
|
||||
//
|
||||
// button_ZoomPlus
|
||||
//
|
||||
this.button_ZoomPlus.Location = new System.Drawing.Point(6, 1);
|
||||
this.button_ZoomPlus.Name = "button_ZoomPlus";
|
||||
this.button_ZoomPlus.Size = new System.Drawing.Size(24, 23);
|
||||
this.button_ZoomPlus.TabIndex = 0;
|
||||
this.button_ZoomPlus.Text = "+";
|
||||
this.button_ZoomPlus.UseVisualStyleBackColor = true;
|
||||
this.button_ZoomPlus.Click += new System.EventHandler(this.button_ZoomPlus_Click);
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.lblStatus});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 694);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1532, 22);
|
||||
this.statusStrip1.TabIndex = 7;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// lblStatus
|
||||
//
|
||||
this.lblStatus.Name = "lblStatus";
|
||||
this.lblStatus.Size = new System.Drawing.Size(1517, 17);
|
||||
this.lblStatus.Spring = true;
|
||||
//
|
||||
// timer_Play
|
||||
//
|
||||
this.timer_Play.Tick += new System.EventHandler(this.timer_Play_Tick);
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 1;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this._mChart, 0, 1);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 2;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 240F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(1532, 694);
|
||||
this.tableLayoutPanel1.TabIndex = 8;
|
||||
//
|
||||
// _mChart
|
||||
//
|
||||
this._mChart.AllowTaskDragDrop = false;
|
||||
this._mChart.BarHeight = 15;
|
||||
this._mChart.BarSpacing = 16;
|
||||
this._mChart.BarWidth = 40F;
|
||||
this._mChart.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this._mChart.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this._mChart.Font = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this._mChart.FullDateStringFormat = null;
|
||||
this._mChart.HeaderOneHeight = 12;
|
||||
this._mChart.HeaderScale = 0F;
|
||||
this._mChart.Location = new System.Drawing.Point(0, 35);
|
||||
this._mChart.Margin = new System.Windows.Forms.Padding(0);
|
||||
this._mChart.Name = "_mChart";
|
||||
this._mChart.Padding = new System.Windows.Forms.Padding(5);
|
||||
this._mChart.Size = new System.Drawing.Size(1532, 659);
|
||||
this._mChart.TabIndex = 4;
|
||||
this._mChart.Value = 0;
|
||||
//
|
||||
// ExampleFull
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1532, 716);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "ExampleFull";
|
||||
this.Text = "MesWork 工艺规划";
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDown_TimeInterval)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDown_indexOneFrameCount)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_Stop)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_Pause)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_Play)).EndInit();
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private GanttChart.Chart _mChart;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel lblStatus;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Button button_ZoomPlus;
|
||||
private System.Windows.Forms.Button button1_ZoomRedues;
|
||||
private System.Windows.Forms.TextBox textBox_Name;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.TextBox textBox_End;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.TextBox textBox_Duration;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox textBox_Start;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox textBox_ID;
|
||||
private System.Windows.Forms.Label label_ID;
|
||||
private System.Windows.Forms.Button button_Save;
|
||||
private System.Windows.Forms.Button button_Delete;
|
||||
private System.Windows.Forms.Button button_Insert;
|
||||
private System.Windows.Forms.TextBox textBox_MaxEnd;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.TextBox textBox_NowIndex;
|
||||
private System.Windows.Forms.PictureBox pictureBox_Play;
|
||||
private System.Windows.Forms.PictureBox pictureBox_Stop;
|
||||
private System.Windows.Forms.PictureBox pictureBox_Pause;
|
||||
private System.Windows.Forms.Timer timer_Play;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.TextBox textBox_AllCountFrame;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.TextBox textBox_CurrentTime;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.NumericUpDown numericUpDown_indexOneFrameCount;
|
||||
private System.Windows.Forms.NumericUpDown numericUpDown_TimeInterval;
|
||||
}
|
||||
}
|
||||
|
||||
104
DataMirrorTools_Simulator/GanttChartExample/ExampleFull.Play.cs
Normal file
104
DataMirrorTools_Simulator/GanttChartExample/ExampleFull.Play.cs
Normal file
@@ -0,0 +1,104 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
public partial class ExampleFull
|
||||
{
|
||||
|
||||
private void textBox_TimeInterval_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
//if()
|
||||
//InitPlay();
|
||||
}
|
||||
private void _mChart_PlaySliderMouseDrag(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (_mManager.MaxPlayLenth < 0.0001) return;
|
||||
textBox_NowIndex.Text = _mManager.NowIndex.ToString();
|
||||
textBox_CurrentTime.Text = ((float)_mManager.NowIndex * _mManager.TimeInterval).ToString();
|
||||
|
||||
float timeX;
|
||||
timeX = (_mManager.NowIndexXf * _mManager.MaxCountLenth) / _mManager.MaxPlayLenth;
|
||||
_mChart.Invalidate();
|
||||
}
|
||||
private void InitPlay()
|
||||
{
|
||||
|
||||
if (!_mManager.IsPlaye)
|
||||
{
|
||||
_mManager.NowIndex = 0;
|
||||
}
|
||||
SetMaxCountLenth();
|
||||
_mManager.NowIndexXf = _mManager.NowIndex * _mManager.TimeInterval * (_mManager.MaxCountLenth / (float)_mManager.AllCountFrame);
|
||||
}
|
||||
private void pictureBox_Play_Click(object sender, EventArgs e)
|
||||
{
|
||||
InitPlay();
|
||||
_mManager.IsPlaye = true;
|
||||
//int Interval = (int)(_mManager.TimeInterval * 1000);
|
||||
timer_Play.Interval = 30;
|
||||
timer_Play.Enabled = true;
|
||||
pictureBox_Pause.Enabled = true;
|
||||
pictureBox_Stop.Enabled = true;
|
||||
_mManager.IsLastPlaye = false;
|
||||
}
|
||||
private void pictureBox_Pause_Click(object sender, EventArgs e)
|
||||
{
|
||||
timer_Play.Enabled = false;
|
||||
|
||||
}
|
||||
private void pictureBox_Stop_Click(object sender, EventArgs e)
|
||||
{
|
||||
pictureBox_Pause.Enabled = false;
|
||||
pictureBox_Stop.Enabled = false;
|
||||
timer_Play.Enabled = false;
|
||||
_mManager.NowIndex = 0;
|
||||
_mManager.IsPlaye = false;
|
||||
_mChart.Invalidate();
|
||||
|
||||
}
|
||||
// int indexTest = 0;
|
||||
int indexOneFrameCount = 1;
|
||||
int indexOneFrameCountBase = 2;
|
||||
private void timer_Play_Tick(object sender, EventArgs e)
|
||||
{
|
||||
_mManager.NowIndexXf = _mManager.NowIndex * _mManager.MaxCountLenth/(float)_mManager.AllCountFrame;
|
||||
|
||||
//时间屏幕坐标点坐标 X
|
||||
_mManager.NowIndexXf = _mManager.NowIndexXf * _mChart.BarWidth / _mChart.HeaderScale;
|
||||
//_mManager.NowIndexXf = _mManager.NowIndex * _mManager.TimeInterval * ((float)_mManager.AllCountFrame / _mManager.MaxCountLenth);
|
||||
textBox_NowIndex.Text = _mManager.NowIndex.ToString();
|
||||
float currentTime = (float)(_mManager.NowIndex + 1) * _mManager.TimeInterval;
|
||||
if(currentTime>= _mManager.MaxCountLenth)
|
||||
{
|
||||
textBox_CurrentTime.Text = _mManager.MaxCountLenth.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
textBox_CurrentTime.Text = currentTime.ToString();
|
||||
}
|
||||
_mManager.NowIndex = _mManager.NowIndex + indexOneFrameCount+ indexOneFrameCountBase;
|
||||
if (_mManager.IsLastPlaye)
|
||||
{
|
||||
_mManager.IsLastPlaye = false;
|
||||
timer_Play.Enabled = false;
|
||||
_mManager.NowIndex = 0;
|
||||
}
|
||||
else if (_mManager.NowIndex > _mManager.AllCountFrame)
|
||||
{
|
||||
_mManager.NowIndex = _mManager.AllCountFrame;
|
||||
_mManager.IsLastPlaye = true;
|
||||
}
|
||||
|
||||
_mChart.Invalidate();
|
||||
}
|
||||
private void numericUpDown_indexOneFrameCount_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
indexOneFrameCount = (int)numericUpDown_indexOneFrameCount.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
404
DataMirrorTools_Simulator/GanttChartExample/ExampleFull.cs
Normal file
404
DataMirrorTools_Simulator/GanttChartExample/ExampleFull.cs
Normal file
@@ -0,0 +1,404 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
/// <summary>
|
||||
/// An elaborate example on how the chart control might be used.
|
||||
/// Start by collapsing all regions and then read the constructor.
|
||||
/// Refer to IProjectManager interface for method description.
|
||||
/// </summary>
|
||||
public partial class ExampleFull : Form
|
||||
{
|
||||
OverlayPainter _mOverlay = new OverlayPainter();
|
||||
|
||||
ProjectManager _mManager = null;
|
||||
object selectCureetTask;
|
||||
|
||||
public ExampleFull()
|
||||
{
|
||||
InitializeComponent();
|
||||
CheckForIllegalCrossThreadCalls = false;
|
||||
_mOverlay.PrintMode = true;
|
||||
|
||||
DataTable dt_CraftTasks;
|
||||
dt_CraftTasks = InitCraftTasks();
|
||||
|
||||
// Create a Project and some Tasks
|
||||
_mManager = new ProjectManager();
|
||||
|
||||
|
||||
InitTasks(ref _mManager, dt_CraftTasks);
|
||||
|
||||
// Initialize the Chart with our ProjectManager and CreateTaskDelegate
|
||||
_mChart.Init(_mManager);
|
||||
_mChart.CreateTaskDelegate = delegate() { return new MyTask(_mManager); };
|
||||
|
||||
// Attach event listeners for events we are interested in
|
||||
_mChart.TaskMouseOver += new EventHandler<TaskMouseEventArgs>(_mChart_TaskMouseOver);
|
||||
_mChart.TaskMouseOut += new EventHandler<TaskMouseEventArgs>(_mChart_TaskMouseOut);
|
||||
_mChart.TaskSelected += new EventHandler<TaskMouseEventArgs>(_mChart_TaskSelected);
|
||||
_mChart.TaskMouseDrop += _mChart_TaskMouseDrop;
|
||||
_mChart.PlaySliderMouseDrag += _mChart_PlaySliderMouseDrag;
|
||||
_mChart.AllowTaskDragDrop = true;
|
||||
|
||||
// Set Time information
|
||||
//_mManager.TimeScale = TimeScale.Day;
|
||||
|
||||
}
|
||||
|
||||
private void _mChart_TaskMouseDrop(object sender, TaskDragDropEventArgs e)
|
||||
{
|
||||
|
||||
|
||||
SetMaxCountLenth();
|
||||
selectCureetTask = e.Source;
|
||||
textBox_ID.Text = ((MyTask)selectCureetTask).ID.ToString();
|
||||
textBox_Start.Text = ((MyTask)selectCureetTask).Start.ToString();
|
||||
textBox_Duration.Text = ((MyTask)selectCureetTask).Duration.ToString();
|
||||
textBox_Name.Text = ((MyTask)selectCureetTask).Name;
|
||||
textBox_End.Text = (((MyTask)selectCureetTask).Start + ((MyTask)selectCureetTask).Duration).ToString();
|
||||
_mChart.Invalidate();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private DataTable InitCraftTasks()
|
||||
{
|
||||
DataTable dt = new DataTable();
|
||||
// DataRow dr;
|
||||
dt.Columns.Add("CraftID");
|
||||
dt.Columns.Add("Start");
|
||||
dt.Columns.Add("Duration");
|
||||
dt.Columns.Add("Name");
|
||||
dt.Rows.Add("1", "1", "10", "工艺Name01");
|
||||
dt.Rows.Add("2", "5", "20", "工艺Name02");
|
||||
dt.Rows.Add("3", "10", "30", "工艺Name03");
|
||||
dt.Rows.Add("4", "15", "10", "工艺Name04");
|
||||
dt.Rows.Add("5", "10", "20", "工艺Name05");
|
||||
dt.Rows.Add("6", "20", "20", "工艺Name06");
|
||||
|
||||
return dt;
|
||||
}
|
||||
private void InitTasks(ref ProjectManager m_Manager,DataTable dt)
|
||||
{
|
||||
string craftID ;
|
||||
string craftName ;
|
||||
string duration;
|
||||
string start ;
|
||||
for (int i = 0; i < dt.Rows.Count; i++)
|
||||
{
|
||||
craftID = dt.Rows[i]["CraftID"].ToString();
|
||||
craftName = dt.Rows[i]["Name"].ToString();
|
||||
duration = dt.Rows[i]["Duration"].ToString();
|
||||
start = dt.Rows[i]["Start"].ToString();
|
||||
|
||||
TaskAdd(ref m_Manager, craftID, start, duration, craftName);
|
||||
}
|
||||
}
|
||||
private void TaskAdd(ref ProjectManager m_Manager, string m_CraftID,string m_Start, string m_Duration,string m_Name)
|
||||
{
|
||||
try
|
||||
{
|
||||
string craftID = m_CraftID;
|
||||
float duration = (float)Convert.ToDouble(m_Duration);
|
||||
float start = (float)Convert.ToDouble(m_Start);
|
||||
var taskName = new MyTask(_mManager) { Name = m_Name };
|
||||
|
||||
_mManager.Add(taskName);
|
||||
_mManager.SetID(taskName, craftID);
|
||||
_mManager.SetComplete(taskName, 1.0f);
|
||||
_mManager.SetDuration(taskName, duration);
|
||||
_mManager.SetStart(taskName, start);
|
||||
SetMaxCountLenth();
|
||||
_mChart.Invalidate();
|
||||
}
|
||||
catch(Exception err) {
|
||||
LogNet.LogisTrac.WriteLog(typeof(ExampleFull), err);
|
||||
}
|
||||
}
|
||||
private void SetMaxCountLenth()
|
||||
{
|
||||
float maxPlayLenth = 0;
|
||||
float maxLeneh=0;
|
||||
float tempLeneh =0;
|
||||
|
||||
foreach(MyTask a in _mManager.Tasks)
|
||||
{
|
||||
tempLeneh = a.Start + a.Duration;
|
||||
if(tempLeneh> maxLeneh)
|
||||
{
|
||||
Task task = a;
|
||||
maxLeneh = tempLeneh;
|
||||
if (_mChart._mChartTaskRects.ContainsKey(task))
|
||||
{
|
||||
maxPlayLenth = _mChart._mChartTaskRects[a].X + _mChart._mChartTaskRects[a].Width;
|
||||
}
|
||||
//maxPlayLenth=a.
|
||||
//MaxPlayLenth
|
||||
}
|
||||
}
|
||||
//最大播放长度
|
||||
_mManager.MaxPlayLenth = maxPlayLenth;
|
||||
//时间最大值
|
||||
_mManager.MaxCountLenth = maxLeneh;
|
||||
//间隔时间
|
||||
_mManager.TimeInterval = (float)Convert.ToDouble(numericUpDown_TimeInterval.Value);
|
||||
//总帧数
|
||||
_mManager.AllCountFrame = (int)(_mManager.MaxCountLenth / _mManager.TimeInterval);
|
||||
textBox_MaxEnd.Text = maxLeneh.ToString();
|
||||
textBox_AllCountFrame.Text = _mManager.AllCountFrame.ToString();
|
||||
}
|
||||
|
||||
private void TaskSave()
|
||||
{
|
||||
foreach (MyTask a in _mManager.Tasks)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
private void TaskDelete(MyTask taskName)
|
||||
{
|
||||
try
|
||||
{
|
||||
_mManager.Delete(taskName);
|
||||
selectCureetTask = null;
|
||||
textBox_ID.Text = "";
|
||||
textBox_Start.Text = "";
|
||||
textBox_Duration.Text = "";
|
||||
textBox_Name.Text = "";
|
||||
textBox_End.Text = "";
|
||||
SetMaxCountLenth();
|
||||
_mChart.Invalidate();
|
||||
}
|
||||
catch(Exception err) {
|
||||
LogNet.LogisTrac.WriteLog(typeof(ExampleFull), err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void SetTaskStart(string m_Start)
|
||||
{
|
||||
if(selectCureetTask!=null)
|
||||
{
|
||||
float start = (float)Convert.ToDouble(m_Start);
|
||||
_mManager.SetStart((MyTask)selectCureetTask, start);
|
||||
SetMaxCountLenth();
|
||||
_mChart.Invalidate();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 选择task (e.Task)
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
void _mChart_TaskSelected(object sender, TaskMouseEventArgs e)
|
||||
{
|
||||
SetMaxCountLenth();
|
||||
textBox_ID.Text = e.Task.ID.ToString();
|
||||
textBox_Start.Text = e.Task.Start.ToString();
|
||||
textBox_Duration.Text = e.Task.Duration.ToString();
|
||||
textBox_Name.Text = e.Task.Name;
|
||||
textBox_End.Text = (e.Task.Start + e.Task.Duration).ToString();
|
||||
selectCureetTask = e.Task;
|
||||
}
|
||||
|
||||
void _mChart_TaskMouseOut(object sender, TaskMouseEventArgs e)
|
||||
{
|
||||
lblStatus.Text = "";
|
||||
_mChart.Invalidate();
|
||||
}
|
||||
|
||||
void _mChart_TaskMouseOver(object sender, TaskMouseEventArgs e)
|
||||
{
|
||||
lblStatus.Text = string.Format("工艺代码:{0} 开始时间: {1} 持续时间: {2} 结束时间: {3} 工艺名称: {4}",e.Task.ID.ToString(), e.Task.Start.ToString(),e.Task.Duration.ToString(), e.Task.End.ToString(),e.Task.Name);
|
||||
_mChart.Invalidate();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void button_ZoomPlus_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (_mChart.ZoomScaleIndex > 0)
|
||||
{
|
||||
_mChart.ZoomScaleIndex--;
|
||||
|
||||
_mChart.Refresh();
|
||||
SetMaxCountLenth();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void button1_ZoomRedues_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_mChart.ZoomScaleIndex < 10)
|
||||
{
|
||||
|
||||
_mChart.ZoomScaleIndex++;
|
||||
|
||||
_mChart.Refresh();
|
||||
SetMaxCountLenth();
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 增加工艺
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void button_Insert_Click(object sender, EventArgs e)
|
||||
{
|
||||
string craftID = textBox_ID.Text;
|
||||
string start = textBox_Start.Text;
|
||||
string duration = textBox_Duration.Text;
|
||||
string craftName = textBox_Name.Text;
|
||||
ProjectManager m_Manager = _mManager;
|
||||
TaskAdd(ref m_Manager, craftID, start, duration, craftName);
|
||||
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 删除选择的工艺
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void button_Delete_Click(object sender, EventArgs e)
|
||||
{
|
||||
MyTask taskName;
|
||||
if (selectCureetTask == null) return;
|
||||
taskName = (MyTask)selectCureetTask;
|
||||
TaskDelete(taskName);
|
||||
}
|
||||
/// <summary>
|
||||
/// 保存工艺规划
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void button_Save_Click(object sender, EventArgs e)
|
||||
{
|
||||
TaskSave();
|
||||
}
|
||||
|
||||
private void textBox_Start_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string m_Start = textBox_Start.Text;
|
||||
SetTaskStart(m_Start);
|
||||
}
|
||||
catch(Exception err)
|
||||
{
|
||||
LogNet.LogisTrac.WriteLog(typeof(ExampleFull), err);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void numericUpDown_TimeInterval_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
SetMaxCountLenth();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
#region overlay painter
|
||||
/// <summary>
|
||||
/// An example of how to encapsulate a helper painter for painter additional features on Chart
|
||||
/// </summary>
|
||||
public class OverlayPainter
|
||||
{
|
||||
/// <summary>
|
||||
/// Hook such a method to the chart paint event listeners
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
public void ChartOverlayPainter(object sender, ChartPaintEventArgs e)
|
||||
{
|
||||
// Don't want to print instructions to file
|
||||
if (this.PrintMode) return;
|
||||
|
||||
var g = e.Graphics;
|
||||
var chart = e.Chart;
|
||||
|
||||
// Demo: Static billboards begin -----------------------------------
|
||||
// Demonstrate how to draw static billboards
|
||||
// "push matrix" -- save our transformation matrix
|
||||
e.Chart.BeginBillboardMode(e.Graphics);
|
||||
|
||||
// draw mouse command instructions
|
||||
int margin = 300;
|
||||
int left = 20;
|
||||
var color = chart.HeaderFormat.Color;
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.AppendLine("THIS IS DRAWN BY A CUSTOM OVERLAY PAINTER TO SHOW DEFAULT MOUSE COMMANDS.");
|
||||
builder.AppendLine("*******************************************************************************************************");
|
||||
builder.AppendLine("Left Click - Select task and display properties in PropertyGrid");
|
||||
builder.AppendLine("Left Mouse Drag - Change task starting point");
|
||||
builder.AppendLine("Right Mouse Drag - Change task duration");
|
||||
builder.AppendLine("Middle Mouse Drag - Change task complete percentage");
|
||||
builder.AppendLine("Left Doubleclick - Toggle collaspe on task group");
|
||||
builder.AppendLine("Right Doubleclick - Split task into task parts");
|
||||
builder.AppendLine("Left Mouse Dragdrop onto another task - Group drag task under drop task");
|
||||
builder.AppendLine("Right Mouse Dragdrop onto another task part - Join task parts");
|
||||
builder.AppendLine("SHIFT + Left Mouse Dragdrop onto another task - Make drop task precedent of drag task");
|
||||
builder.AppendLine("ALT + Left Dragdrop onto another task - Ungroup drag task from drop task / Remove drop task from drag task precedent list");
|
||||
builder.AppendLine("SHIFT + Left Mouse Dragdrop - Order tasks");
|
||||
builder.AppendLine("SHIFT + Middle Click - Create new task");
|
||||
builder.AppendLine("ALT + Middle Click - Delete task");
|
||||
builder.AppendLine("Left Doubleclick - Toggle collaspe on task group");
|
||||
var size = g.MeasureString(builder.ToString(), e.Chart.Font);
|
||||
var background = new Rectangle(left, chart.Height - margin, (int)size.Width, (int)size.Height);
|
||||
background.Inflate(10, 10);
|
||||
g.FillRectangle(new System.Drawing.Drawing2D.LinearGradientBrush(background, Color.LightYellow, Color.Transparent, System.Drawing.Drawing2D.LinearGradientMode.Vertical), background);
|
||||
g.DrawRectangle(Pens.Brown, background);
|
||||
g.DrawString(builder.ToString(), chart.Font, color, new PointF(left, chart.Height - margin));
|
||||
|
||||
|
||||
// "pop matrix" -- restore the previous matrix
|
||||
e.Chart.EndBillboardMode(e.Graphics);
|
||||
// Demo: Static billboards end -----------------------------------
|
||||
}
|
||||
|
||||
public bool PrintMode { get; set; }
|
||||
}
|
||||
#endregion overlay painter
|
||||
|
||||
#region custom task and resource
|
||||
/// <summary>
|
||||
/// A custom resource of your own type (optional)
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class MyResource
|
||||
{
|
||||
public string Name { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// A custom task of your own type deriving from the Task interface (optional)
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class MyTask : Task
|
||||
{
|
||||
public MyTask(ProjectManager manager)
|
||||
: base()
|
||||
{
|
||||
Manager = manager;
|
||||
}
|
||||
|
||||
private ProjectManager Manager { get; set; }
|
||||
//1代表0.001
|
||||
public new float Start { get { return base.Start; } set { Manager.SetStart(this, value); } }
|
||||
public new float End { get { return base.End; } set { Manager.SetEnd(this, value); } }
|
||||
public new float Duration { get { return base.Duration; } set { Manager.SetDuration(this, value); } }
|
||||
public new float Complete { get { return base.Complete; } set { Manager.SetComplete(this, value); } }
|
||||
public new string ID { get { return base.ID; } set { Manager.SetID(this, value); } }
|
||||
}
|
||||
#endregion custom task and resource
|
||||
}
|
||||
368
DataMirrorTools_Simulator/GanttChartExample/ExampleFull.resx
Normal file
368
DataMirrorTools_Simulator/GanttChartExample/ExampleFull.resx
Normal file
@@ -0,0 +1,368 @@
|
||||
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<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" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</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" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBox_Stop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAABLpJREFUeF7t
|
||||
2zFuUwkUhWH2QJzYgiKKo1kNi0nPAlgDG6BBomALblNmC9lC2pn30ClG4VYXJ7Ev3yf9or9HwY7z/A4A
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgb3e93V7vd5vP++3msN9ePCz/Pi49Lf2ro7bedLnt
|
||||
rxsfbq4u7v75+P5DZuDULAN9ut1uvv9vQL1Fu8tv6xaZhbe2jnGz3fwsx9KbtW7iB+WN3e42X6pxdEJd
|
||||
XX7NXLym/dXmRzmITrH7zMZrKAbQGZT5eEnLoe+fH15n0vKqnxl5Cev72fLwOpvW3xszJ8e0fiJSHVzn
|
||||
l0+3XoCPcue0bplZOQavHvPyKnJE619nqyPrfFufesi8/In1+Z7qwDr/1ufmMjNdy0vxXXVcDWi3+ZyZ
|
||||
6VoOefjtsJrSITPTlcepq+Pq7Lt4yMx0LYdcv89RHFcDeszMdC1H9GWnuT1lZrqKo2pQmZmu6qiaU2am
|
||||
qzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ
|
||||
6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjll
|
||||
Zrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pO
|
||||
mZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qia
|
||||
U2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq
|
||||
5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqO
|
||||
qjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqq
|
||||
o2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu
|
||||
6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2am
|
||||
qzqq5pSZ6aqOqjllZrqWIz49P6rG9JSZ6VqO+PjsqJrTY2ama7+9eCgOqxFdPGRmupZDHn4/rIZ0yMx0
|
||||
3Vxd3BWH1YR2m8+Zma5/Pr7/UB5XZ9/1dnudmfkT+93lt+rAOt9ut5vvmZc/tbzN+lQdWefbumnm5Rhu
|
||||
tpuf1aF1fq1bZlaOxavInLx6vJD91eXX6uA6n253my+Zk5ewHPn++dF1Jl1tfmRGXlJ5fJ18mY/XsP5v
|
||||
VI2gk+w+s/Ga1vezxRg6pZbfGzMXb2H9RMRHwKfXuolPq07IOsb619lqLL1iu8tvfjBO2Pp8z/oQ3DLW
|
||||
IY/Kr98n8aWr47fedLntrxsflh+Ku/W5ucwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8Jd6
|
||||
9+4/HvM7DY9eJfwAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="pictureBox_Stop.InitialImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAABLpJREFUeF7t
|
||||
2zFuUwkUhWH2QJzYgiKKo1kNi0nPAlgDG6BBomALblNmC9lC2pn30ClG4VYXJ7Ev3yf9or9HwY7z/A4A
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgb3e93V7vd5vP++3msN9ePCz/Pi49Lf2ro7bedLnt
|
||||
rxsfbq4u7v75+P5DZuDULAN9ut1uvv9vQL1Fu8tv6xaZhbe2jnGz3fwsx9KbtW7iB+WN3e42X6pxdEJd
|
||||
XX7NXLym/dXmRzmITrH7zMZrKAbQGZT5eEnLoe+fH15n0vKqnxl5Cev72fLwOpvW3xszJ8e0fiJSHVzn
|
||||
l0+3XoCPcue0bplZOQavHvPyKnJE619nqyPrfFufesi8/In1+Z7qwDr/1ufmMjNdy0vxXXVcDWi3+ZyZ
|
||||
6VoOefjtsJrSITPTlcepq+Pq7Lt4yMx0LYdcv89RHFcDeszMdC1H9GWnuT1lZrqKo2pQmZmu6qiaU2am
|
||||
qzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ
|
||||
6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjll
|
||||
Zrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pO
|
||||
mZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qia
|
||||
U2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq
|
||||
5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqO
|
||||
qjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqq
|
||||
o2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu
|
||||
6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2amqzqq5pSZ6aqOqjllZrqqo2pOmZmu6qiaU2am
|
||||
qzqq5pSZ6aqOqjllZrqWIz49P6rG9JSZ6VqO+PjsqJrTY2ama7+9eCgOqxFdPGRmupZDHn4/rIZ0yMx0
|
||||
3Vxd3BWH1YR2m8+Zma5/Pr7/UB5XZ9/1dnudmfkT+93lt+rAOt9ut5vvmZc/tbzN+lQdWefbumnm5Rhu
|
||||
tpuf1aF1fq1bZlaOxavInLx6vJD91eXX6uA6n253my+Zk5ewHPn++dF1Jl1tfmRGXlJ5fJ18mY/XsP5v
|
||||
VI2gk+w+s/Ga1vezxRg6pZbfGzMXb2H9RMRHwKfXuolPq07IOsb619lqLL1iu8tvfjBO2Pp8z/oQ3DLW
|
||||
IY/Kr98n8aWr47fedLntrxsflh+Ku/W5ucwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8Jd6
|
||||
9+4/HvM7DY9eJfwAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="pictureBox_Pause.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAABP1JREFUeF7t
|
||||
2jGLXXUQxuFttEonJARsNFUE0wqxsfILiIhYCumin0BIk0qwEMTCNiDY2QhWgnVsggYETSGkEU0nkkrn
|
||||
bxd5Y9bsmbs79z4P/Po5Z86EZbNHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwHKu
|
||||
ulRdra5UF6p9sZ5lPdN6tvWM61nhid6sPqp+rP56TF9U16qL1RRr1jXzmj0902o983r29Q7gEW9U31bp
|
||||
w3lc96sb1Vk+lDXbmnHNmp7hca13sd4JHH1apY/kuP1UvVadNWumNVua+bitd8MB+6ZKH8bTdJaOZM2S
|
||||
Znya1jviAH1cpQ/iJJ2vTtuaIc12kta74oCsn8vTh3DSvqxO25ohzXbS1jvjALxQ/Vmlj2CL3q9Oy/pN
|
||||
VZppix5Wlyv23AdV+gC26l51Wj9q3a7STFt1s2LP/VCl5W/Z9WrX3qnSLFv2S/VsxZ56vUqL37qvql27
|
||||
VaVZtu7dij31eZWW3tGu/V6lObbOr3332J0qLb2jXf7t1nNVmqGjuxV76rcqLb2j9ceAu/JylWbo6EHF
|
||||
nkoL72qX/7O+5f+cHyf2VFp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDG
|
||||
ScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2
|
||||
Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6EcdKyu3Ig
|
||||
jJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy0
|
||||
7K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXfl
|
||||
QBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4
|
||||
adldORDGScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvu
|
||||
yoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6E
|
||||
cdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBjnQZUW3tHL1a5cqdIMHf1WsafuVmnpHT1X7cqFKs3Q0Z2K
|
||||
PfVNlZa+db9Wu5bm6OhWxZ56o0pL37pPql37okqzbN2rFXvqmernKi1+y96qdu1alWbZsu8q9tzNKi1/
|
||||
q25Xp+F8da9KM23VexV77nL1sEofwBatf8lPy/tVmmmL/qierzgAH1bpIzhp31anbc2QZjtp651xQL6u
|
||||
0odwkl6sTtuaIc12kta74gCtX1mmD+JpeqU6K9Ysacanya91D9yNKn0Yx+376qXqrFkzrdnSzMdtvRv4
|
||||
5/9H/u/P7ver9QFdrM6qNduacc2anuFxrXex3gk84u3qs+q/fl36VXW9OsuH8W9r1jXzmj0902o983r2
|
||||
9Q7gic5Vl6qr1fpjwPX3TvtiPct6pvVs6xnXswIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAMBhOzr6Gz1D7ZxfJj38AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="pictureBox_Pause.InitialImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAABP1JREFUeF7t
|
||||
2jGLXXUQxuFttEonJARsNFUE0wqxsfILiIhYCumin0BIk0qwEMTCNiDY2QhWgnVsggYETSGkEU0nkkrn
|
||||
bxd5Y9bsmbs79z4P/Po5Z86EZbNHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwHKu
|
||||
ulRdra5UF6p9sZ5lPdN6tvWM61nhid6sPqp+rP56TF9U16qL1RRr1jXzmj0902o983r29Q7gEW9U31bp
|
||||
w3lc96sb1Vk+lDXbmnHNmp7hca13sd4JHH1apY/kuP1UvVadNWumNVua+bitd8MB+6ZKH8bTdJaOZM2S
|
||||
Znya1jviAH1cpQ/iJJ2vTtuaIc12kta74oCsn8vTh3DSvqxO25ohzXbS1jvjALxQ/Vmlj2CL3q9Oy/pN
|
||||
VZppix5Wlyv23AdV+gC26l51Wj9q3a7STFt1s2LP/VCl5W/Z9WrX3qnSLFv2S/VsxZ56vUqL37qvql27
|
||||
VaVZtu7dij31eZWW3tGu/V6lObbOr3332J0qLb2jXf7t1nNVmqGjuxV76rcqLb2j9ceAu/JylWbo6EHF
|
||||
nkoL72qX/7O+5f+cHyf2VFp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDG
|
||||
ScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2
|
||||
Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6EcdKyu3Ig
|
||||
jJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy0
|
||||
7K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXfl
|
||||
QBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4
|
||||
adldORDGScvuyoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvu
|
||||
yoEwTlp2Vw6EcdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBgnLbsrB8I4adldORDGScvuyoEwTlp2Vw6E
|
||||
cdKyu3IgjJOW3ZUDYZy07K4cCOOkZXflQBjnQZUW3tHL1a5cqdIMHf1WsafuVmnpHT1X7cqFKs3Q0Z2K
|
||||
PfVNlZa+db9Wu5bm6OhWxZ56o0pL37pPql37okqzbN2rFXvqmernKi1+y96qdu1alWbZsu8q9tzNKi1/
|
||||
q25Xp+F8da9KM23VexV77nL1sEofwBatf8lPy/tVmmmL/qierzgAH1bpIzhp31anbc2QZjtp651xQL6u
|
||||
0odwkl6sTtuaIc12kta74gCtX1mmD+JpeqU6K9Ysacanya91D9yNKn0Yx+376qXqrFkzrdnSzMdtvRv4
|
||||
5/9H/u/P7ver9QFdrM6qNduacc2anuFxrXex3gk84u3qs+q/fl36VXW9OsuH8W9r1jXzmj0902o983r2
|
||||
9Q7gic5Vl6qr1fpjwPX3TvtiPct6pvVs6xnXswIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAMBhOzr6Gz1D7ZxfJj38AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="pictureBox_Play.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAABSZJREFUeF7t
|
||||
3U+oZnMcx/EhSULjT2JBEk2zEUmShaSJnUTSbGRMklKSRDaTSLJCSLNCommKQUJWkiaakkRCFkiIkiQS
|
||||
PofVNN/bnXvv85zzO+e8XvXezCy/n7uYee5zziYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABYruPSremx9FLal55IN6djE8zWrvRF+meFfkmPp60JZuXjVP1QVP2c7kvHJJi8d1P1g7BaB9L2BJP1
|
||||
YKrGv5b2pksSTMqFqRr8evo7PZJOSzAJT6dq7Bvpy3RbgtH7MFUjX0Rvp6sSjNaPqRr3ItudtiQYnWrQ
|
||||
y+indG86OsFoVGNeZh+kGxKMQjXiPtqTLk7QtGq8ffVXejidmqBJ1XD77vPU/XIkNKca7FC9la5M0Ixq
|
||||
qEPXfXh5boLBVQNtoe7zmXvSUQkGU42zpd5P1ycYRDXKFnsxXZSgV9UYW+3P9FA6JUEvqiG23mfplgRL
|
||||
Vw1wLL2RtiVYmmp4Y+updE6ChasGN8a+T3enIxMsTDW2Mbc/XZdgIaqRTaEXUvd9e9iQalxT6Y/UPbHl
|
||||
pATrUg1ran2adiZYs2pQU+31dEWCw1YNaep1D+I+O8GqqgHNoe/SXemIBCuqxjOn3kvXJihVo5ljz6cL
|
||||
EhykGstc+z09kDYn+E81lLn3SdqRoByI/u+1dHlixqph6OC6V86dlZihahA6tG/TnYmZqcagleteVXdN
|
||||
YiaqEWj1nkvnJyauOr4Or9/S/emExERVh9fa6l6ffVNigqqDa329mi5LTEh1aG2sR9OZiQmoDqyN9026
|
||||
IzFy1XG1uN5JVydGqjqqFt8z6bzEyFTH1HL6Ne1KxydGojqklttH6cbECFQHVD+9nE5PNKw6nPqre3bX
|
||||
pYlGVUdT/52caFB1LPXf3kSDqmNpmLzCoUHVoTRMtycaUx1Kw7Qn0ZjqUBqmrxONqQ6lYfoq0ZjqUBqm
|
||||
ZxONqQ6lYfKP9AZVh9Iw+W/eBlWHUv/tSzSoOpb674xEg6pjqb+6Rwd57ULDqqOpn7rfvzox0bDqcFpu
|
||||
vjA1ItUBtZx85XaEqkNq8Xlow0hVx9Ti8tifkauOqo3nwXETUR1XG8ujRyekOrDWl4dXT1B1aK0trz+Y
|
||||
sOrgOry8QGcGqsNr9byCbSaq42vlvMRzZqoR6NC8BnqmqjHo4B5PZyVmqBqE/u+1dHlixqphzL1P0o4E
|
||||
5UDm2u/pgbQ5wX+qocyx55Nv9nGIaixz6r10bYJSNZo59F26Kx2RYEXVeKbeE+nsBKuqBjTVXk9XJDhs
|
||||
1ZCm1qdpZ4I1qwY1lboXZD6YTkqwLtWwptAL6cIEG1KNa8ztT9clWIhqZGPs+3R3OjLBwlRjG1tPJa8O
|
||||
YCmqwY2lN9K2BEtTDa/1Pku3JFi6aoCt9md6KJ2SoBfVEFvsxXRRgl5VY2yp99P1CQZRjbKFfkz3pKMS
|
||||
DKYa59A9nc5NMLhqoEP1VroyQTOqofbd5+nWBM2pBttXf6WH06kJmlQNt4/2pIsTNK0a7zL7IN2QYBSq
|
||||
ES+jn9K96egEo/FDqga9yHanLQlG50CqRr2I3k5XJRit7kO5atwb6ct0W4LR6763XY18Pf2dHkmnJZiM
|
||||
x1I1+LW0N12SYJK6T7Or4a9W92+Y7Qkm781U/RBU/ZzuS8ckmI1d6YtU/VB0/Zq6hyRsTTBLx6Xulwef
|
||||
TK+kfal74HP3Z93fAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3btOlfhAc5/WO8AWEA
|
||||
AAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="pictureBox_Play.InitialImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAABSZJREFUeF7t
|
||||
3U+oZnMcx/EhSULjT2JBEk2zEUmShaSJnUTSbGRMklKSRDaTSLJCSLNCommKQUJWkiaakkRCFkiIkiQS
|
||||
PofVNN/bnXvv85zzO+e8XvXezCy/n7uYee5zziYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABYruPSremx9FLal55IN6djE8zWrvRF+meFfkmPp60JZuXjVP1QVP2c7kvHJJi8d1P1g7BaB9L2BJP1
|
||||
YKrGv5b2pksSTMqFqRr8evo7PZJOSzAJT6dq7Bvpy3RbgtH7MFUjX0Rvp6sSjNaPqRr3ItudtiQYnWrQ
|
||||
y+indG86OsFoVGNeZh+kGxKMQjXiPtqTLk7QtGq8ffVXejidmqBJ1XD77vPU/XIkNKca7FC9la5M0Ixq
|
||||
qEPXfXh5boLBVQNtoe7zmXvSUQkGU42zpd5P1ycYRDXKFnsxXZSgV9UYW+3P9FA6JUEvqiG23mfplgRL
|
||||
Vw1wLL2RtiVYmmp4Y+updE6ChasGN8a+T3enIxMsTDW2Mbc/XZdgIaqRTaEXUvd9e9iQalxT6Y/UPbHl
|
||||
pATrUg1ran2adiZYs2pQU+31dEWCw1YNaep1D+I+O8GqqgHNoe/SXemIBCuqxjOn3kvXJihVo5ljz6cL
|
||||
EhykGstc+z09kDYn+E81lLn3SdqRoByI/u+1dHlixqph6OC6V86dlZihahA6tG/TnYmZqcagleteVXdN
|
||||
YiaqEWj1nkvnJyauOr4Or9/S/emExERVh9fa6l6ffVNigqqDa329mi5LTEh1aG2sR9OZiQmoDqyN9026
|
||||
IzFy1XG1uN5JVydGqjqqFt8z6bzEyFTH1HL6Ne1KxydGojqklttH6cbECFQHVD+9nE5PNKw6nPqre3bX
|
||||
pYlGVUdT/52caFB1LPXf3kSDqmNpmLzCoUHVoTRMtycaUx1Kw7Qn0ZjqUBqmrxONqQ6lYfoq0ZjqUBqm
|
||||
ZxONqQ6lYfKP9AZVh9Iw+W/eBlWHUv/tSzSoOpb674xEg6pjqb+6Rwd57ULDqqOpn7rfvzox0bDqcFpu
|
||||
vjA1ItUBtZx85XaEqkNq8Xlow0hVx9Ti8tifkauOqo3nwXETUR1XG8ujRyekOrDWl4dXT1B1aK0trz+Y
|
||||
sOrgOry8QGcGqsNr9byCbSaq42vlvMRzZqoR6NC8BnqmqjHo4B5PZyVmqBqE/u+1dHlixqphzL1P0o4E
|
||||
5UDm2u/pgbQ5wX+qocyx55Nv9nGIaixz6r10bYJSNZo59F26Kx2RYEXVeKbeE+nsBKuqBjTVXk9XJDhs
|
||||
1ZCm1qdpZ4I1qwY1lboXZD6YTkqwLtWwptAL6cIEG1KNa8ztT9clWIhqZGPs+3R3OjLBwlRjG1tPJa8O
|
||||
YCmqwY2lN9K2BEtTDa/1Pku3JFi6aoCt9md6KJ2SoBfVEFvsxXRRgl5VY2yp99P1CQZRjbKFfkz3pKMS
|
||||
DKYa59A9nc5NMLhqoEP1VroyQTOqofbd5+nWBM2pBttXf6WH06kJmlQNt4/2pIsTNK0a7zL7IN2QYBSq
|
||||
ES+jn9K96egEo/FDqga9yHanLQlG50CqRr2I3k5XJRit7kO5atwb6ct0W4LR6763XY18Pf2dHkmnJZiM
|
||||
x1I1+LW0N12SYJK6T7Or4a9W92+Y7Qkm781U/RBU/ZzuS8ckmI1d6YtU/VB0/Zq6hyRsTTBLx6Xulwef
|
||||
TK+kfal74HP3Z93fAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3btOlfhAc5/WO8AWEA
|
||||
AAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>-5, 7</value>
|
||||
</metadata>
|
||||
<metadata name="timer_Play.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>105, 8</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>40</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgChADIAoQIyAKEgMgChczIA
|
||||
occyAKHqMgChmTIAoTwyAKEJMgChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgChADIAoQQyAKEvMgChdzIA
|
||||
odYyAKH7MgCh/zIAof8yAKH/MgCh6jIAoacyAKFJMgChEjIAoQAyAKEAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAKEAMgChADIAoQoyAKE+MgChkTIA
|
||||
oeoyAKH+MgCh+TIAoe0yAKH+MgCh/zIAofwyAKH3MgCh/jIAofgyAKHBMgChZDIAoR4yAKEBMgChAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAKEAMgChATIAoRUyAKFcMgChujIA
|
||||
ofEyAKH/MgCh9DIAobcyAKFPMgChfjIAof8yAKH/MgCh5TIAoVUyAKGLMgCh4jIAofwyAKH9MgCh2TIA
|
||||
oYcyAKEoMgChBTIAoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAKEAMgChAjIAoSYyAKF2MgCh0DIA
|
||||
ofcyAKH+MgCh8zIAof8yAKGjMgChDTIAoQAyAKFpMgCh/zIAof8yAKHhMgChHjIAoQIyAKEiMgChbjIA
|
||||
ocoyAKH3MgCh/jIAoeUyAKGfMgChQTIAoQsyAKEAAAAAAAAAAAAAAAAAMgChCDIAoUEyAKGXMgCh4jIA
|
||||
of4yAKH/MgChzzIAoW0yAKFoMgCh+zIAoZcyAKEAMgChADIAoWkyAKH/MgCh/zIAoeEyAKEeMgChADIA
|
||||
oQAyAKEBMgChETIAoVAyAKGiMgCh8DIAof8yAKH0MgChuTIAoW0yAKEVMgChADIAoQAyAKG2MgCh7TIA
|
||||
of8yAKHvMgCh7jIAofgyAKFLMgChADIAoTcyAKH1MgChlzIAoQAyAKEAMgChaTIAof8yAKH/MgCh4TIA
|
||||
oR4yAKEAAAAAAAAAAAAAAAAAMgChADIAoQcyAKE4MgChijIAod8yAKH9MgCh+zIAoc4yAKFdMgChADIA
|
||||
of8yAKHlMgChlDIAoToyAKGgMgCh7jIAoSwyAKEAMgChFzIAodgyAKGZMgChADIAoQAyAKFpMgCh/zIA
|
||||
of8yAKHxMgChfDIAoSkyAKEBMgChAAAAAAAAAAAAAAAAADIAoQAyAKECMgChITIAoW8yAKG/MgCh/zIA
|
||||
oZYyAKEAMgCh/zIAoZoyAKEBMgChADIAoZkyAKHSMgChEjIAoQAyAKEGMgChujIAoZoyAKEAMgChADIA
|
||||
oWkyAKH/MgCh/zIAof0yAKH+MgCh4TIAoZIyAKFEMgChDjIAoQAyAKEAAAAAAAAAAAAAAAAAMgChADIA
|
||||
oUIyAKH7MgChlzIAoQAyAKH/MgChlzIAoQAyAKEAMgChmjIAobMyAKEEMgChADIAoQAyAKGcMgChmzIA
|
||||
oQAyAKEAMgChaTIAof8yAKH/MgCh4zIAoZYyAKHRMgCh+zIAofQyAKHDMgChZDIAoSIyAKEBMgChAAAA
|
||||
AAAyAKEAMgChPzIAofsyAKGXMgChADIAof8yAKGXMgChADIAoQAyAKGaMgChiDIAoQAAAAAAMgChADIA
|
||||
oYgyAKGaMgChADIAoQAyAKFpMgCh/zIAof8yAKHhMgChIDIAoRIyAKFeMgChqzIAoe0yAKH+MgCh3jIA
|
||||
oYYyAKEqMgChADIAoQAyAKE/MgCh+zIAoZcyAKEAMgCh/zIAoZcyAKEAMgChADIAoZgyAKFtMgChAAAA
|
||||
AAAyAKEAMgChXDIAoZQyAKEAMgChADIAoWkyAKH/MgCh/zIAoeEyAKEeMgChADIAoQAyAKEGMgChMDIA
|
||||
oX8yAKHTMgCh+jIAoWkyAKEAMgChADIAoT8yAKH7MgChlzIAoQAyAKH/MgChlzIAoQAyAKEAMgChlTIA
|
||||
oWMyAKEAAAAAADIAoQAyAKE2MgChhTIAoQAyAKEAMgChaTIAof8yAKH/MgCh4TIAoR4yAKEAAAAAAAAA
|
||||
AAAyAKEAMgChATIAoRUyAKFYMgChQDIAoQAyAKEAMgChPzIAofsyAKGXMgChADIAof8yAKGXMgChADIA
|
||||
oQAyAKGLMgChQTIAoQAyAKEFMgChADIAoSMyAKF4MgChADIAoQAyAKFpMgCh/zIAof8yAKHhMgChHjIA
|
||||
oQAAAAAAAAAAAAAAAAAAAAAAMgChADIAoQAyAKEBMgChADIAoQAyAKE/MgCh+zIAoZcyAKEAMgCh/zIA
|
||||
oZcyAKEAMgChADIAoXcyAKEkMgChBzIAoUIyAKEBMgChFjIAoWUyAKEBMgChADIAoWkyAKH/MgCh/zIA
|
||||
oeEyAKEeMgChADIAoQAyAKE5MgChSTIAoQ8yAKEBMgChAAAAAAAAAAAAMgChADIAoT8yAKH7MgChlzIA
|
||||
oQAyAKH/MgChlzIAoQAyAKECMgChWzIAoQ8yAKEVMgChhTIAoQoyAKEHMgChMzIAoQEyAKEAMgChaTIA
|
||||
of8yAKH/MgCh4TIAoR4yAKEAMgChADIAoWkyAKH1MgChyzIAoX8yAKE4MgChBTIAoQAyAKEAMgChPzIA
|
||||
ofsyAKGXMgChADIAof8yAKGXMgChADIAoQMyAKFZMgChCzIAoS4yAKHDMgChGjIAoQAAAAAAAAAAADIA
|
||||
oQAyAKFpMgCh/zIAof8yAKHhMgChHjIAoQAyAKEAMgChLDIAoaEyAKHkMgCh/DIAoe8yAKGrMgChUzIA
|
||||
oREyAKFBMgCh+zIAoZcyAKEAMgCh/zIAoZcyAKEAMgChBzIAoVAyAKEEMgChQTIAodoyAKEjMgChAAAA
|
||||
AAAAAAAAMgChADIAoWkyAKH/MgCh/zIAoeEyAKEeMgChAAAAAAAyAKEAMgChBjIAoSAyAKFyMgChwjIA
|
||||
ofMyAKH4MgCh0zIAobMyAKH9MgChljIAoQAyAKH/MgChlzIAoQAyAKEBMgChBDIAoQAyAKFKMgCh7jIA
|
||||
oT0yAKEAAAAAADIAoQAyAKEAMgChbDIAof8yAKH/MgCh4TIAoR8yAKEAAAAAAAAAAAAAAAAAMgChADIA
|
||||
oQEyAKELMgChRzIAoZYyAKHeMgCh/TIAof8yAKGWMgChADIAof8yAKGXMgChAAAAAAAAAAAAMgChADIA
|
||||
oW0yAKH/MgChZDIAoQAyAKEEMgChHDIAoWAyAKHPMgCh/zIAof8yAKH3MgChkTIAoS8yAKELMgChADIA
|
||||
oQAAAAAAAAAAAAAAAAAyAKEAMgChATIAoSAyAKF2MgCh/zIAoZYyAKEAMgCh/zIAoZcyAKEAAAAAADIA
|
||||
oQAyAKEAMgChljIAof8yAKGeMgChOTIAoZEyAKHcMgCh+TIAof8yAKH/MgCh/zIAof8yAKH+MgCh6jIA
|
||||
obgyAKFXMgChITIAoQEyAKEAAAAAAAAAAAAAAAAAMgChADIAoT8yAKH7MgChlzIAoQAyAKH/MgChlzIA
|
||||
oQAAAAAAMgChADIAoQwyAKG9MgCh/zIAofMyAKHyMgCh/jIAof8yAKH/MgCh/zIAofoyAKH3MgCh/jIA
|
||||
of8yAKH/MgCh/zIAofsyAKHbMgChmzIAoUwyAKENMgChATIAoQAyAKEAMgChPzIAofsyAKGXMgChADIA
|
||||
of8yAKGXMgChATIAoRkyAKFbMgChsTIAofAyAKH/MgCh/zIAof8yAKH/MgCh/DIAoeYyAKGxMgChVTIA
|
||||
oUIyAKGFMgCh1TIAofUyAKH/MgCh/zIAof8yAKH/MgCh9DIAocUyAKGDMgChMDIAoQYyAKE/MgCh+zIA
|
||||
oZcyAKEAMgCh/zIAocEyAKGOMgCh2TIAofcyAKH/MgCh/zIAof8yAKH/MgCh7jIAobMyAKFwMgChJjIA
|
||||
oQoyAKEAMgChADIAoQEyAKEXMgChTTIAoZsyAKHYMgCh/TIAof8yAKH/MgCh/zIAof4yAKHqMgChszIA
|
||||
oZgyAKH+MgChljIAoQAyAKH/MgCh/zIAof8yAKH/MgCh/zIAof8yAKH0MgChyTIAoYEyAKE/MgChBzIA
|
||||
oQAAAAAAMgChADIAoSIyAKF2MgChQjIAoRIyAKEAMgChATIAoR4yAKFjMgChrjIAoecyAKH9MgCh/zIA
|
||||
of8yAKH/MgCh/zIAof8yAKGWMgChADIAof8yAKH/MgCh/zIAofkyAKHWMgChmjIAoUIyAKERMgChATIA
|
||||
oQAyAKEGMgChFTIAoQMyAKEAMgChKDIAoZUyAKHHMgChxjIAoXcyAKE3MgChBzIAoQAyAKEGMgChKTIA
|
||||
oXYyAKHDMgCh7jIAof4yAKH/MgCh/zIAoZYyAKEAMgChrjIAoeYyAKH+MgCh0zIAoVcyAKELMgChADIA
|
||||
oQAyAKEAMgChADIAoVUyAKHAMgChkjIAoVYyAKEUMgChATIAoRYyAKFhMgChqzIAodUyAKGmMgChZTIA
|
||||
oR8yAKEDMgChBDIAoS0yAKGiMgCh9DIAofUyAKHGMgChWTIAoQAyAKEGMgChKjIAoWsyAKHBMgCh3DIA
|
||||
ocEyAKFwMgChJTIAoQYyAKEAMgChDDIAoTgyAKF/MgChyjIAocMyAKGUMgChMzIAoQsyAKEEMgChJjIA
|
||||
oWUyAKG/MgCh0TIAoaYyAKGoMgCh1TIAodYyAKGNMgChQTIAoRAyAKEAMgChAAAAAAAyAKEAMgChADIA
|
||||
oQ8yAKE8MgChkDIAoc8yAKHfMgChpDIAoVIyAKEcMgChADIAoQEyAKETMgChRzIAoZ8yAKHGMgChvzIA
|
||||
oWQyAKEtMgChMzIAoY8yAKHvMgCh5zIAoa8yAKFcMgChHDIAoQMyAKEAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAADIAoQAyAKECMgChFTIAoVcyAKGaMgCh3DIAodEyAKGaMgChSDIAoQsyAKEAMgChATIA
|
||||
oSUyAKGGMgCh6TIAofEyAKHhMgChtzIAoXAyAKErMgChBTIAoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgChADIAoQIyAKElMgChXTIAobgyAKHbMgChxTIA
|
||||
oYUyAKFbMgChqzIAodEyAKHLMgChhDIAoTsyAKELMgChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAKEAMgChCzIA
|
||||
oTcyAKGTMgCh0zIAofAyAKG2MgChWjIAoRcyAKEBMgChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA/+Af//+AB//8AAD/8AAAP8AIAA8AGDABARg+AQEYD4ERGAPxMZgAcTOY
|
||||
ADEzmDAxM5g8MTKIPzEgCDDxIAgwMSB4MAEgeDgBJHg+ATxAD8E8AAHxOAAAMQAAAAEAAwABABwgAQBE
|
||||
BAEBwAABAEAAA+AAAA/4AAB//wAD///gD/8=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
102
DataMirrorTools_Simulator/GanttChartExample/ExampleSimple.Designer.cs
generated
Normal file
102
DataMirrorTools_Simulator/GanttChartExample/ExampleSimple.Designer.cs
generated
Normal file
@@ -0,0 +1,102 @@
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
partial class ExampleSimple
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.panel3 = new System.Windows.Forms.Panel();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 1;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.panel3, 0, 2);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 3;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 511F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(858, 556);
|
||||
this.tableLayoutPanel1.TabIndex = 0;
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel1.Location = new System.Drawing.Point(3, 3);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(852, 14);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.Tomato;
|
||||
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel2.Location = new System.Drawing.Point(3, 23);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(852, 14);
|
||||
this.panel2.TabIndex = 1;
|
||||
//
|
||||
// panel3
|
||||
//
|
||||
this.panel3.BackColor = System.Drawing.Color.Gold;
|
||||
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel3.Location = new System.Drawing.Point(3, 43);
|
||||
this.panel3.Name = "panel3";
|
||||
this.panel3.Size = new System.Drawing.Size(852, 510);
|
||||
this.panel3.TabIndex = 2;
|
||||
//
|
||||
// ExampleSimple
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(858, 556);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Name = "ExampleSimple";
|
||||
this.Text = "Simple Chart";
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.Panel panel3;
|
||||
}
|
||||
}
|
||||
24
DataMirrorTools_Simulator/GanttChartExample/ExampleSimple.cs
Normal file
24
DataMirrorTools_Simulator/GanttChartExample/ExampleSimple.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
public partial class ExampleSimple : Form
|
||||
{
|
||||
ProjectManager _mProject;
|
||||
|
||||
public ExampleSimple()
|
||||
{
|
||||
InitializeComponent();
|
||||
_mProject = new ProjectManager();
|
||||
_mProject.Add(new Task() { Name = "New Task" });
|
||||
//_mChart.Init(_mProject);
|
||||
}
|
||||
}
|
||||
}
|
||||
120
DataMirrorTools_Simulator/GanttChartExample/ExampleSimple.resx
Normal file
120
DataMirrorTools_Simulator/GanttChartExample/ExampleSimple.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<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" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</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" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
BIN
DataMirrorTools_Simulator/GanttChartExample/Mes32X32.ico
Normal file
BIN
DataMirrorTools_Simulator/GanttChartExample/Mes32X32.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
23
DataMirrorTools_Simulator/GanttChartExample/Program.cs
Normal file
23
DataMirrorTools_Simulator/GanttChartExample/Program.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Braincase.GanttChart
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new ExampleFull());
|
||||
//Application.Run(new ExampleSimple());
|
||||
//Application.Run(new ExampleGanttTreeView());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 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("GanttChart Example")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Braincase Solutions")]
|
||||
[assembly: AssemblyProduct("GanttChart Example")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[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)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("cdcf962f-b52a-4cd5-a1ea-4c6a1faa6adf")]
|
||||
|
||||
// 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")]
|
||||
63
DataMirrorTools_Simulator/GanttChartExample/Properties/Resources.Designer.cs
generated
Normal file
63
DataMirrorTools_Simulator/GanttChartExample/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Braincase.GanttChart.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||
/// </summary>
|
||||
// 此类是由 StronglyTypedResourceBuilder
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.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>
|
||||
/// 返回此类使用的缓存的 ResourceManager 实例。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Braincase.GanttChart.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
26
DataMirrorTools_Simulator/GanttChartExample/Properties/Settings.Designer.cs
generated
Normal file
26
DataMirrorTools_Simulator/GanttChartExample/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Braincase.GanttChart.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net461" />
|
||||
</packages>
|
||||
BIN
DataMirrorTools_Simulator/GanttChartExample/pic/停止 (1).png
Normal file
BIN
DataMirrorTools_Simulator/GanttChartExample/pic/停止 (1).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.4 KiB |
BIN
DataMirrorTools_Simulator/GanttChartExample/pic/快进 (2).png
Normal file
BIN
DataMirrorTools_Simulator/GanttChartExample/pic/快进 (2).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
BIN
DataMirrorTools_Simulator/GanttChartExample/pic/播放器-播放_44.png
Normal file
BIN
DataMirrorTools_Simulator/GanttChartExample/pic/播放器-播放_44.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
BIN
DataMirrorTools_Simulator/GanttChartExample/pic/播放器-暂停_44.png
Normal file
BIN
DataMirrorTools_Simulator/GanttChartExample/pic/播放器-暂停_44.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.5 KiB |
Reference in New Issue
Block a user