Merge pull request #17 from myssal/main

feat: english localization
This commit is contained in:
ww-rm
2025-04-29 16:08:56 +08:00
committed by GitHub
74 changed files with 31425 additions and 3509 deletions

6
SpineViewer/App.config Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="localize" value="zh-CN"/>
</appSettings>
</configuration>

View File

@@ -20,168 +20,127 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region #region
/// <summary> /// <summary>
/// 设计器支持所需的方法 - 不要修改 /// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。 /// 使用代码编辑器修改此方法的内容。
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
components = new System.ComponentModel.Container(); components = new System.ComponentModel.Container();
tableLayoutPanel1 = new TableLayoutPanel(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SkelFileListBox));
flowLayoutPanel1 = new FlowLayoutPanel(); tableLayoutPanel1 = new TableLayoutPanel();
button_AddFolder = new Button(); flowLayoutPanel1 = new FlowLayoutPanel();
button_AddFile = new Button(); button_AddFolder = new Button();
label_Tip = new Label(); button_AddFile = new Button();
listBox = new ListBox(); label_Tip = new Label();
contextMenuStrip = new ContextMenuStrip(components); listBox = new ListBox();
toolStripMenuItem_SelectAll = new ToolStripMenuItem(); contextMenuStrip = new ContextMenuStrip(components);
toolStripMenuItem_Paste = new ToolStripMenuItem(); toolStripMenuItem_SelectAll = new ToolStripMenuItem();
toolStripMenuItem_Remove = new ToolStripMenuItem(); toolStripMenuItem_Paste = new ToolStripMenuItem();
folderBrowserDialog = new FolderBrowserDialog(); toolStripMenuItem_Remove = new ToolStripMenuItem();
openFileDialog_Skel = new OpenFileDialog(); folderBrowserDialog = new FolderBrowserDialog();
tableLayoutPanel1.SuspendLayout(); openFileDialog_Skel = new OpenFileDialog();
flowLayoutPanel1.SuspendLayout(); tableLayoutPanel1.SuspendLayout();
contextMenuStrip.SuspendLayout(); flowLayoutPanel1.SuspendLayout();
SuspendLayout(); contextMenuStrip.SuspendLayout();
// SuspendLayout();
// tableLayoutPanel1 //
// // tableLayoutPanel1
tableLayoutPanel1.ColumnCount = 1; //
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); resources.ApplyResources(tableLayoutPanel1, "tableLayoutPanel1");
tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 0, 0); tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 0, 0);
tableLayoutPanel1.Controls.Add(listBox, 0, 1); tableLayoutPanel1.Controls.Add(listBox, 0, 1);
tableLayoutPanel1.Dock = DockStyle.Fill; tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.Location = new Point(0, 0); //
tableLayoutPanel1.Name = "tableLayoutPanel1"; // flowLayoutPanel1
tableLayoutPanel1.RowCount = 2; //
tableLayoutPanel1.RowStyles.Add(new RowStyle()); resources.ApplyResources(flowLayoutPanel1, "flowLayoutPanel1");
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); flowLayoutPanel1.Controls.Add(button_AddFolder);
tableLayoutPanel1.Size = new Size(801, 394); flowLayoutPanel1.Controls.Add(button_AddFile);
tableLayoutPanel1.TabIndex = 0; flowLayoutPanel1.Controls.Add(label_Tip);
// flowLayoutPanel1.Name = "flowLayoutPanel1";
// flowLayoutPanel1 //
// // button_AddFolder
flowLayoutPanel1.AutoSize = true; //
flowLayoutPanel1.AutoSizeMode = AutoSizeMode.GrowAndShrink; resources.ApplyResources(button_AddFolder, "button_AddFolder");
flowLayoutPanel1.Controls.Add(button_AddFolder); button_AddFolder.Name = "button_AddFolder";
flowLayoutPanel1.Controls.Add(button_AddFile); button_AddFolder.UseVisualStyleBackColor = true;
flowLayoutPanel1.Controls.Add(label_Tip); button_AddFolder.Click += button_AddFolder_Click;
flowLayoutPanel1.Dock = DockStyle.Fill; //
flowLayoutPanel1.Location = new Point(3, 3); // button_AddFile
flowLayoutPanel1.Name = "flowLayoutPanel1"; //
flowLayoutPanel1.Size = new Size(795, 40); resources.ApplyResources(button_AddFile, "button_AddFile");
flowLayoutPanel1.TabIndex = 1; button_AddFile.Name = "button_AddFile";
// button_AddFile.UseVisualStyleBackColor = true;
// button_AddFolder button_AddFile.Click += button_AddFile_Click;
// //
button_AddFolder.AutoSize = true; // label_Tip
button_AddFolder.AutoSizeMode = AutoSizeMode.GrowAndShrink; //
button_AddFolder.Location = new Point(3, 3); resources.ApplyResources(label_Tip, "label_Tip");
button_AddFolder.Name = "button_AddFolder"; label_Tip.Name = "label_Tip";
button_AddFolder.Size = new Size(122, 34); //
button_AddFolder.TabIndex = 0; // listBox
button_AddFolder.Text = "添加文件夹..."; //
button_AddFolder.UseVisualStyleBackColor = true; listBox.AllowDrop = true;
button_AddFolder.Click += button_AddFolder_Click; listBox.ContextMenuStrip = contextMenuStrip;
// resources.ApplyResources(listBox, "listBox");
// button_AddFile listBox.FormattingEnabled = true;
// listBox.Name = "listBox";
button_AddFile.AutoSize = true; listBox.SelectionMode = SelectionMode.MultiExtended;
button_AddFile.AutoSizeMode = AutoSizeMode.GrowAndShrink; listBox.DragDrop += listBox_DragDrop;
button_AddFile.Location = new Point(131, 3); listBox.DragEnter += listBox_DragEnter;
button_AddFile.Name = "button_AddFile"; //
button_AddFile.Size = new Size(104, 34); // contextMenuStrip
button_AddFile.TabIndex = 1; //
button_AddFile.Text = "添加文件..."; contextMenuStrip.ImageScalingSize = new Size(24, 24);
button_AddFile.UseVisualStyleBackColor = true; contextMenuStrip.Items.AddRange(new ToolStripItem[] { toolStripMenuItem_SelectAll, toolStripMenuItem_Paste, toolStripMenuItem_Remove });
button_AddFile.Click += button_AddFile_Click; contextMenuStrip.Name = "contextMenuStrip";
// resources.ApplyResources(contextMenuStrip, "contextMenuStrip");
// label_Tip //
// // toolStripMenuItem_SelectAll
label_Tip.Anchor = AnchorStyles.Left; //
label_Tip.AutoSize = true; toolStripMenuItem_SelectAll.Name = "toolStripMenuItem_SelectAll";
label_Tip.Location = new Point(241, 8); resources.ApplyResources(toolStripMenuItem_SelectAll, "toolStripMenuItem_SelectAll");
label_Tip.Name = "label_Tip"; toolStripMenuItem_SelectAll.Click += toolStripMenuItem_SelectAll_Click;
label_Tip.Size = new Size(139, 24); //
label_Tip.TabIndex = 3; // toolStripMenuItem_Paste
label_Tip.Text = "已添加 0 个文件"; //
label_Tip.TextAlign = ContentAlignment.MiddleCenter; toolStripMenuItem_Paste.Name = "toolStripMenuItem_Paste";
// resources.ApplyResources(toolStripMenuItem_Paste, "toolStripMenuItem_Paste");
// listBox toolStripMenuItem_Paste.Click += toolStripMenuItem_Paste_Click;
// //
listBox.AllowDrop = true; // toolStripMenuItem_Remove
listBox.ContextMenuStrip = contextMenuStrip; //
listBox.Dock = DockStyle.Fill; toolStripMenuItem_Remove.Name = "toolStripMenuItem_Remove";
listBox.FormattingEnabled = true; resources.ApplyResources(toolStripMenuItem_Remove, "toolStripMenuItem_Remove");
listBox.HorizontalScrollbar = true; toolStripMenuItem_Remove.Click += toolStripMenuItem_Remove_Click;
listBox.ItemHeight = 24; //
listBox.Location = new Point(3, 49); // openFileDialog_Skel
listBox.Name = "listBox"; //
listBox.SelectionMode = SelectionMode.MultiExtended; openFileDialog_Skel.AddExtension = false;
listBox.Size = new Size(795, 342); openFileDialog_Skel.AddToRecent = false;
listBox.TabIndex = 0; resources.ApplyResources(openFileDialog_Skel, "openFileDialog_Skel");
listBox.DragDrop += listBox_DragDrop; openFileDialog_Skel.Multiselect = true;
listBox.DragEnter += listBox_DragEnter; //
// // SkelFileListBox
// contextMenuStrip //
// resources.ApplyResources(this, "$this");
contextMenuStrip.ImageScalingSize = new Size(24, 24); AutoScaleMode = AutoScaleMode.Font;
contextMenuStrip.Items.AddRange(new ToolStripItem[] { toolStripMenuItem_SelectAll, toolStripMenuItem_Paste, toolStripMenuItem_Remove }); Controls.Add(tableLayoutPanel1);
contextMenuStrip.Name = "contextMenuStrip"; Name = "SkelFileListBox";
contextMenuStrip.Size = new Size(184, 94); tableLayoutPanel1.ResumeLayout(false);
// tableLayoutPanel1.PerformLayout();
// toolStripMenuItem_SelectAll flowLayoutPanel1.ResumeLayout(false);
// flowLayoutPanel1.PerformLayout();
toolStripMenuItem_SelectAll.Name = "toolStripMenuItem_SelectAll"; contextMenuStrip.ResumeLayout(false);
toolStripMenuItem_SelectAll.ShortcutKeys = Keys.Control | Keys.A; ResumeLayout(false);
toolStripMenuItem_SelectAll.Size = new Size(183, 30); }
toolStripMenuItem_SelectAll.Text = "全选";
toolStripMenuItem_SelectAll.Click += toolStripMenuItem_SelectAll_Click;
//
// toolStripMenuItem_Paste
//
toolStripMenuItem_Paste.Name = "toolStripMenuItem_Paste";
toolStripMenuItem_Paste.ShortcutKeys = Keys.Control | Keys.V;
toolStripMenuItem_Paste.Size = new Size(183, 30);
toolStripMenuItem_Paste.Text = "粘贴";
toolStripMenuItem_Paste.Click += toolStripMenuItem_Paste_Click;
//
// toolStripMenuItem_Remove
//
toolStripMenuItem_Remove.Name = "toolStripMenuItem_Remove";
toolStripMenuItem_Remove.ShortcutKeys = Keys.Delete;
toolStripMenuItem_Remove.Size = new Size(183, 30);
toolStripMenuItem_Remove.Text = "移除";
toolStripMenuItem_Remove.Click += toolStripMenuItem_Remove_Click;
//
// openFileDialog_Skel
//
openFileDialog_Skel.AddExtension = false;
openFileDialog_Skel.AddToRecent = false;
openFileDialog_Skel.Filter = "所有文件 (*.*)|*.*|skel 文件 (*.skel; *.json)|*.skel;*.json";
openFileDialog_Skel.Multiselect = true;
openFileDialog_Skel.Title = "批量选择skel文件";
//
// SkelFileListBox
//
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
Controls.Add(tableLayoutPanel1);
Name = "SkelFileListBox";
Size = new Size(801, 394);
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
flowLayoutPanel1.ResumeLayout(false);
flowLayoutPanel1.PerformLayout();
contextMenuStrip.ResumeLayout(false);
ResumeLayout(false);
}
#endregion #endregion
private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel1;
private ListBox listBox; private ListBox listBox;
private FlowLayoutPanel flowLayoutPanel1; private FlowLayoutPanel flowLayoutPanel1;
private Button button_AddFolder; private Button button_AddFolder;

View File

@@ -64,7 +64,7 @@ namespace SpineViewer.Controls
} }
} }
label_Tip.Text = $"已选择 {listBox.Items.Count} 个文件"; label_Tip.Text = $"{Properties.Resources.itemCountPrefix}{listBox.Items.Count}{Properties.Resources.itemCountSuffix}";
} }
private void button_AddFile_Click(object sender, EventArgs e) private void button_AddFile_Click(object sender, EventArgs e)
@@ -75,7 +75,7 @@ namespace SpineViewer.Controls
foreach (var p in openFileDialog_Skel.FileNames) foreach (var p in openFileDialog_Skel.FileNames)
listBox.Items.Add(Path.GetFullPath(p)); listBox.Items.Add(Path.GetFullPath(p));
label_Tip.Text = $"已选择 {listBox.Items.Count} 个文件"; label_Tip.Text = $"{Properties.Resources.itemCountPrefix}{listBox.Items.Count}{Properties.Resources.itemCountSuffix}";
} }
private void listBox_DragEnter(object sender, DragEventArgs e) private void listBox_DragEnter(object sender, DragEventArgs e)
@@ -92,7 +92,7 @@ namespace SpineViewer.Controls
return; return;
AddFromFileDrop((string[])e.Data.GetData(DataFormats.FileDrop)); AddFromFileDrop((string[])e.Data.GetData(DataFormats.FileDrop));
label_Tip.Text = $"已选择 {listBox.Items.Count} 个文件"; label_Tip.Text = $"{Properties.Resources.itemCountPrefix}{listBox.Items.Count}{Properties.Resources.itemCountSuffix}";
} }
private void toolStripMenuItem_SelectAll_Click(object sender, EventArgs e) private void toolStripMenuItem_SelectAll_Click(object sender, EventArgs e)
@@ -110,7 +110,7 @@ namespace SpineViewer.Controls
var paths = new string[fileDropList.Count]; var paths = new string[fileDropList.Count];
fileDropList.CopyTo(paths, 0); fileDropList.CopyTo(paths, 0);
AddFromFileDrop(paths); AddFromFileDrop(paths);
label_Tip.Text = $"已选择 {listBox.Items.Count} 个文件"; label_Tip.Text = $"{Properties.Resources.itemCountPrefix}{listBox.Items.Count}{Properties.Resources.itemCountSuffix}";
} }
private void toolStripMenuItem_Remove_Click(object sender, EventArgs e) private void toolStripMenuItem_Remove_Click(object sender, EventArgs e)
@@ -119,7 +119,7 @@ namespace SpineViewer.Controls
listBox.SelectedIndices.CopyTo(indices, 0); listBox.SelectedIndices.CopyTo(indices, 0);
for (int i = indices.Length - 1; i >= 0; i--) for (int i = indices.Length - 1; i >= 0; i--)
listBox.Items.RemoveAt(indices[i]); listBox.Items.RemoveAt(indices[i]);
label_Tip.Text = $"已选择 {listBox.Items.Count} 个文件"; label_Tip.Text = $"{Properties.Resources.itemCountPrefix}{listBox.Items.Count}{Properties.Resources.itemCountSuffix}";
} }
} }
} }

View File

@@ -0,0 +1,170 @@
<?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="button_AddFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 30</value>
</data>
<data name="button_AddFolder.Text" xml:space="preserve">
<value>Add Folder...</value>
</data>
<data name="button_AddFile.Location" type="System.Drawing.Point, System.Drawing">
<value>108, 2</value>
</data>
<data name="button_AddFile.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 30</value>
</data>
<data name="button_AddFile.Text" xml:space="preserve">
<value>Add Files...</value>
</data>
<data name="label_Tip.Location" type="System.Drawing.Point, System.Drawing">
<value>201, 7</value>
</data>
<data name="label_Tip.Size" type="System.Drawing.Size, System.Drawing">
<value>92, 20</value>
</data>
<data name="label_Tip.Text" xml:space="preserve">
<value>0 file added.</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="toolStripMenuItem_SelectAll.ShortcutKeys" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="toolStripMenuItem_SelectAll.Size" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="toolStripMenuItem_SelectAll.Text" xml:space="preserve">
<value>Select all</value>
</data>
<data name="toolStripMenuItem_Paste.Text" xml:space="preserve">
<value>Paste</value>
</data>
<data name="toolStripMenuItem_Remove.Text" xml:space="preserve">
<value>Remove</value>
</data>
<data name="openFileDialog_Skel.TrayLocation" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="openFileDialog_Skel.Filter" xml:space="preserve">
<value>All files (*.*)|*.*|Skel files (*.skel; *.json)|*.skel;*.json</value>
</data>
<data name="openFileDialog_Skel.Title" xml:space="preserve">
<value>Select .skel files</value>
</data>
</root>

View File

@@ -117,13 +117,311 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 2</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="flowLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>579, 34</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>556, 18</value> <value>556, 18</value>
</metadata> </metadata>
<data name="contextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 76</value>
</data>
<data name="&gt;&gt;contextMenuStrip.Name" xml:space="preserve">
<value>contextMenuStrip</value>
</data>
<data name="&gt;&gt;contextMenuStrip.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="listBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="listBox.HorizontalScrollbar" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="listBox.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 40</value>
</data>
<data name="listBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="listBox.Size" type="System.Drawing.Size, System.Drawing">
<value>579, 286</value>
</data>
<data name="listBox.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;listBox.Name" xml:space="preserve">
<value>listBox</value>
</data>
<data name="&gt;&gt;listBox.Type" xml:space="preserve">
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;listBox.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;listBox.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>583, 328</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="flowLayoutPanel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="listBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="button_AddFolder.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button_AddFolder.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="button_AddFolder.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 2</value>
</data>
<data name="button_AddFolder.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_AddFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 30</value>
</data>
<data name="button_AddFolder.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="button_AddFolder.Text" xml:space="preserve">
<value>添加文件夹...</value>
</data>
<data name="&gt;&gt;button_AddFolder.Name" xml:space="preserve">
<value>button_AddFolder</value>
</data>
<data name="&gt;&gt;button_AddFolder.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button_AddFolder.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;button_AddFolder.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="button_AddFile.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button_AddFile.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="button_AddFile.Location" type="System.Drawing.Point, System.Drawing">
<value>110, 2</value>
</data>
<data name="button_AddFile.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_AddFile.Size" type="System.Drawing.Size, System.Drawing">
<value>88, 30</value>
</data>
<data name="button_AddFile.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="button_AddFile.Text" xml:space="preserve">
<value>添加文件...</value>
</data>
<data name="&gt;&gt;button_AddFile.Name" xml:space="preserve">
<value>button_AddFile</value>
</data>
<data name="&gt;&gt;button_AddFile.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button_AddFile.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;button_AddFile.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label_Tip.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="label_Tip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label_Tip.Location" type="System.Drawing.Point, System.Drawing">
<value>202, 7</value>
</data>
<data name="label_Tip.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="label_Tip.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 20</value>
</data>
<data name="label_Tip.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="label_Tip.Text" xml:space="preserve">
<value>已添加 0 个文件</value>
</data>
<data name="label_Tip.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label_Tip.Name" xml:space="preserve">
<value>label_Tip</value>
</data>
<data name="&gt;&gt;label_Tip.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label_Tip.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;label_Tip.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="toolStripMenuItem_SelectAll.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Ctrl+A</value>
</data>
<data name="toolStripMenuItem_SelectAll.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 24</value>
</data>
<data name="toolStripMenuItem_SelectAll.Text" xml:space="preserve">
<value>全选</value>
</data>
<data name="toolStripMenuItem_Paste.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Ctrl+V</value>
</data>
<data name="toolStripMenuItem_Paste.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 24</value>
</data>
<data name="toolStripMenuItem_Paste.Text" xml:space="preserve">
<value>粘贴</value>
</data>
<data name="toolStripMenuItem_Remove.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Del</value>
</data>
<data name="toolStripMenuItem_Remove.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 24</value>
</data>
<data name="toolStripMenuItem_Remove.Text" xml:space="preserve">
<value>移除</value>
</data>
<metadata name="folderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="folderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>286, 21</value> <value>286, 21</value>
</metadata> </metadata>
<metadata name="openFileDialog_Skel.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="openFileDialog_Skel.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>31, 27</value> <value>31, 27</value>
</metadata> </metadata>
<data name="openFileDialog_Skel.Filter" xml:space="preserve">
<value>所有文件 (*.*)|*.*|skel 文件 (*.skel; *.json)|*.skel;*.json</value>
</data>
<data name="openFileDialog_Skel.Title" xml:space="preserve">
<value>批量选择skel文件</value>
</data>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, System.Private.CoreLib, Culture=neutral, PublicKeyToken=7cec85d7bea7798e">
<value>en</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>583, 328</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_SelectAll.Name" xml:space="preserve">
<value>toolStripMenuItem_SelectAll</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_SelectAll.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Paste.Name" xml:space="preserve">
<value>toolStripMenuItem_Paste</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Paste.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Remove.Name" xml:space="preserve">
<value>toolStripMenuItem_Remove</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Remove.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;folderBrowserDialog.Name" xml:space="preserve">
<value>folderBrowserDialog</value>
</data>
<data name="&gt;&gt;folderBrowserDialog.Type" xml:space="preserve">
<value>System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;openFileDialog_Skel.Name" xml:space="preserve">
<value>openFileDialog_Skel</value>
</data>
<data name="&gt;&gt;openFileDialog_Skel.Type" xml:space="preserve">
<value>System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>SkelFileListBox</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root> </root>

View File

@@ -20,298 +20,252 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region #region
/// <summary> /// <summary>
/// 设计器支持所需的方法 - 不要修改 /// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。 /// 使用代码编辑器修改此方法的内容。
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
components = new System.ComponentModel.Container(); components = new System.ComponentModel.Container();
listView = new ListView(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SpineListView));
columnHeader_Name = new ColumnHeader(); listView = new ListView();
contextMenuStrip = new ContextMenuStrip(components); columnHeader_Name = new ColumnHeader();
toolStripMenuItem_Add = new ToolStripMenuItem(); contextMenuStrip = new ContextMenuStrip(components);
toolStripMenuItem_Insert = new ToolStripMenuItem(); toolStripMenuItem_Add = new ToolStripMenuItem();
toolStripMenuItem_Remove = new ToolStripMenuItem(); toolStripMenuItem_Insert = new ToolStripMenuItem();
toolStripSeparator1 = new ToolStripSeparator(); toolStripMenuItem_Remove = new ToolStripMenuItem();
toolStripMenuItem_BatchAdd = new ToolStripMenuItem(); toolStripSeparator1 = new ToolStripSeparator();
toolStripMenuItem_RemoveAll = new ToolStripMenuItem(); toolStripMenuItem_BatchAdd = new ToolStripMenuItem();
toolStripSeparator2 = new ToolStripSeparator(); toolStripMenuItem_RemoveAll = new ToolStripMenuItem();
toolStripMenuItem_MoveUp = new ToolStripMenuItem(); toolStripSeparator2 = new ToolStripSeparator();
toolStripMenuItem_MoveDown = new ToolStripMenuItem(); toolStripMenuItem_MoveUp = new ToolStripMenuItem();
toolStripMenuItem_MoveTop = new ToolStripMenuItem(); toolStripMenuItem_MoveDown = new ToolStripMenuItem();
toolStripMenuItem_MoveBottom = new ToolStripMenuItem(); toolStripMenuItem_MoveTop = new ToolStripMenuItem();
toolStripSeparator3 = new ToolStripSeparator(); toolStripMenuItem_MoveBottom = new ToolStripMenuItem();
toolStripMenuItem_CopyPreview = new ToolStripMenuItem(); toolStripSeparator3 = new ToolStripSeparator();
toolStripMenuItem_AddFromClipboard = new ToolStripMenuItem(); toolStripMenuItem_CopyPreview = new ToolStripMenuItem();
toolStripMenuItem_SelectAll = new ToolStripMenuItem(); toolStripMenuItem_AddFromClipboard = new ToolStripMenuItem();
toolStripSeparator4 = new ToolStripSeparator(); toolStripMenuItem_SelectAll = new ToolStripMenuItem();
toolStripMenuItem_ChangeView = new ToolStripMenuItem(); toolStripSeparator4 = new ToolStripSeparator();
toolStripMenuItem_LargeIconView = new ToolStripMenuItem(); toolStripMenuItem_ChangeView = new ToolStripMenuItem();
toolStripMenuItem_ListView = new ToolStripMenuItem(); toolStripMenuItem_LargeIconView = new ToolStripMenuItem();
toolStripMenuItem_DetailsView = new ToolStripMenuItem(); toolStripMenuItem_ListView = new ToolStripMenuItem();
imageList_LargeIcon = new ImageList(components); toolStripMenuItem_DetailsView = new ToolStripMenuItem();
imageList_SmallIcon = new ImageList(components); imageList_LargeIcon = new ImageList(components);
timer_SelectedIndexChangedDebounce = new System.Windows.Forms.Timer(components); imageList_SmallIcon = new ImageList(components);
statusStrip = new StatusStrip(); timer_SelectedIndexChangedDebounce = new System.Windows.Forms.Timer(components);
toolStripStatusLabel_CountInfo = new ToolStripStatusLabel(); statusStrip = new StatusStrip();
tableLayoutPanel = new TableLayoutPanel(); toolStripStatusLabel_CountInfo = new ToolStripStatusLabel();
contextMenuStrip.SuspendLayout(); tableLayoutPanel = new TableLayoutPanel();
statusStrip.SuspendLayout(); contextMenuStrip.SuspendLayout();
tableLayoutPanel.SuspendLayout(); statusStrip.SuspendLayout();
SuspendLayout(); tableLayoutPanel.SuspendLayout();
// SuspendLayout();
// listView //
// // listView
listView.Alignment = ListViewAlignment.Left; //
listView.AllowDrop = true; resources.ApplyResources(listView, "listView");
listView.Columns.AddRange(new ColumnHeader[] { columnHeader_Name }); listView.AllowDrop = true;
listView.ContextMenuStrip = contextMenuStrip; listView.Columns.AddRange(new ColumnHeader[] { columnHeader_Name });
listView.Dock = DockStyle.Fill; listView.ContextMenuStrip = contextMenuStrip;
listView.FullRowSelect = true; listView.FullRowSelect = true;
listView.GridLines = true; listView.GridLines = true;
listView.LargeImageList = imageList_LargeIcon; listView.LargeImageList = imageList_LargeIcon;
listView.Location = new Point(0, 0); listView.Name = "listView";
listView.Margin = new Padding(0); listView.ShowItemToolTips = true;
listView.Name = "listView"; listView.SmallImageList = imageList_SmallIcon;
listView.ShowItemToolTips = true; listView.UseCompatibleStateImageBehavior = false;
listView.Size = new Size(336, 414); listView.View = View.Details;
listView.SmallImageList = imageList_SmallIcon; listView.ItemDrag += listView_ItemDrag;
listView.TabIndex = 1; listView.SelectedIndexChanged += listView_SelectedIndexChanged;
listView.UseCompatibleStateImageBehavior = false; listView.DragDrop += listView_DragDrop;
listView.View = View.Details; listView.DragEnter += listView_DragEnter;
listView.ItemDrag += listView_ItemDrag; listView.DragOver += listView_DragOver;
listView.SelectedIndexChanged += listView_SelectedIndexChanged; //
listView.DragDrop += listView_DragDrop; // columnHeader_Name
listView.DragEnter += listView_DragEnter; //
listView.DragOver += listView_DragOver; resources.ApplyResources(columnHeader_Name, "columnHeader_Name");
// //
// columnHeader_Name // contextMenuStrip
// //
columnHeader_Name.Text = "名称"; resources.ApplyResources(contextMenuStrip, "contextMenuStrip");
columnHeader_Name.Width = 300; contextMenuStrip.ImageScalingSize = new Size(24, 24);
// contextMenuStrip.Items.AddRange(new ToolStripItem[] { toolStripMenuItem_Add, toolStripMenuItem_Insert, toolStripMenuItem_Remove, toolStripSeparator1, toolStripMenuItem_BatchAdd, toolStripMenuItem_RemoveAll, toolStripSeparator2, toolStripMenuItem_MoveUp, toolStripMenuItem_MoveDown, toolStripMenuItem_MoveTop, toolStripMenuItem_MoveBottom, toolStripSeparator3, toolStripMenuItem_CopyPreview, toolStripMenuItem_AddFromClipboard, toolStripMenuItem_SelectAll, toolStripSeparator4, toolStripMenuItem_ChangeView });
// contextMenuStrip contextMenuStrip.Name = "contextMenuStrip";
// contextMenuStrip.Closed += contextMenuStrip_Closed;
contextMenuStrip.ImageScalingSize = new Size(24, 24); contextMenuStrip.Opening += contextMenuStrip_Opening;
contextMenuStrip.Items.AddRange(new ToolStripItem[] { toolStripMenuItem_Add, toolStripMenuItem_Insert, toolStripMenuItem_Remove, toolStripSeparator1, toolStripMenuItem_BatchAdd, toolStripMenuItem_RemoveAll, toolStripSeparator2, toolStripMenuItem_MoveUp, toolStripMenuItem_MoveDown, toolStripMenuItem_MoveTop, toolStripMenuItem_MoveBottom, toolStripSeparator3, toolStripMenuItem_CopyPreview, toolStripMenuItem_AddFromClipboard, toolStripMenuItem_SelectAll, toolStripSeparator4, toolStripMenuItem_ChangeView }); //
contextMenuStrip.Name = "contextMenuStrip"; // toolStripMenuItem_Add
contextMenuStrip.Size = new Size(255, 451); //
contextMenuStrip.Closed += contextMenuStrip_Closed; resources.ApplyResources(toolStripMenuItem_Add, "toolStripMenuItem_Add");
contextMenuStrip.Opening += contextMenuStrip_Opening; toolStripMenuItem_Add.Name = "toolStripMenuItem_Add";
// toolStripMenuItem_Add.Click += toolStripMenuItem_Add_Click;
// toolStripMenuItem_Add //
// // toolStripMenuItem_Insert
toolStripMenuItem_Add.Name = "toolStripMenuItem_Add"; //
toolStripMenuItem_Add.Size = new Size(254, 30); resources.ApplyResources(toolStripMenuItem_Insert, "toolStripMenuItem_Insert");
toolStripMenuItem_Add.Text = "添加..."; toolStripMenuItem_Insert.Name = "toolStripMenuItem_Insert";
toolStripMenuItem_Add.Click += toolStripMenuItem_Add_Click; toolStripMenuItem_Insert.Click += toolStripMenuItem_Insert_Click;
// //
// toolStripMenuItem_Insert // toolStripMenuItem_Remove
// //
toolStripMenuItem_Insert.Name = "toolStripMenuItem_Insert"; resources.ApplyResources(toolStripMenuItem_Remove, "toolStripMenuItem_Remove");
toolStripMenuItem_Insert.Size = new Size(254, 30); toolStripMenuItem_Remove.Name = "toolStripMenuItem_Remove";
toolStripMenuItem_Insert.Text = "插入..."; toolStripMenuItem_Remove.Click += toolStripMenuItem_Remove_Click;
toolStripMenuItem_Insert.Click += toolStripMenuItem_Insert_Click; //
// // toolStripSeparator1
// toolStripMenuItem_Remove //
// resources.ApplyResources(toolStripSeparator1, "toolStripSeparator1");
toolStripMenuItem_Remove.Name = "toolStripMenuItem_Remove"; toolStripSeparator1.Name = "toolStripSeparator1";
toolStripMenuItem_Remove.ShortcutKeys = Keys.Delete; //
toolStripMenuItem_Remove.Size = new Size(254, 30); // toolStripMenuItem_BatchAdd
toolStripMenuItem_Remove.Text = "移除"; //
toolStripMenuItem_Remove.Click += toolStripMenuItem_Remove_Click; resources.ApplyResources(toolStripMenuItem_BatchAdd, "toolStripMenuItem_BatchAdd");
// toolStripMenuItem_BatchAdd.Name = "toolStripMenuItem_BatchAdd";
// toolStripSeparator1 toolStripMenuItem_BatchAdd.Click += toolStripMenuItem_BatchAdd_Click;
// //
toolStripSeparator1.Name = "toolStripSeparator1"; // toolStripMenuItem_RemoveAll
toolStripSeparator1.Size = new Size(251, 6); //
// resources.ApplyResources(toolStripMenuItem_RemoveAll, "toolStripMenuItem_RemoveAll");
// toolStripMenuItem_BatchAdd toolStripMenuItem_RemoveAll.Name = "toolStripMenuItem_RemoveAll";
// toolStripMenuItem_RemoveAll.Click += toolStripMenuItem_RemoveAll_Click;
toolStripMenuItem_BatchAdd.Name = "toolStripMenuItem_BatchAdd"; //
toolStripMenuItem_BatchAdd.Size = new Size(254, 30); // toolStripSeparator2
toolStripMenuItem_BatchAdd.Text = "批量添加..."; //
toolStripMenuItem_BatchAdd.Click += toolStripMenuItem_BatchAdd_Click; resources.ApplyResources(toolStripSeparator2, "toolStripSeparator2");
// toolStripSeparator2.Name = "toolStripSeparator2";
// toolStripMenuItem_RemoveAll //
// // toolStripMenuItem_MoveUp
toolStripMenuItem_RemoveAll.Name = "toolStripMenuItem_RemoveAll"; //
toolStripMenuItem_RemoveAll.Size = new Size(254, 30); resources.ApplyResources(toolStripMenuItem_MoveUp, "toolStripMenuItem_MoveUp");
toolStripMenuItem_RemoveAll.Text = "移除全部"; toolStripMenuItem_MoveUp.Name = "toolStripMenuItem_MoveUp";
toolStripMenuItem_RemoveAll.Click += toolStripMenuItem_RemoveAll_Click; toolStripMenuItem_MoveUp.Click += toolStripMenuItem_MoveUp_Click;
// //
// toolStripSeparator2 // toolStripMenuItem_MoveDown
// //
toolStripSeparator2.Name = "toolStripSeparator2"; resources.ApplyResources(toolStripMenuItem_MoveDown, "toolStripMenuItem_MoveDown");
toolStripSeparator2.Size = new Size(251, 6); toolStripMenuItem_MoveDown.Name = "toolStripMenuItem_MoveDown";
// toolStripMenuItem_MoveDown.Click += toolStripMenuItem_MoveDown_Click;
// toolStripMenuItem_MoveUp //
// // toolStripMenuItem_MoveTop
toolStripMenuItem_MoveUp.Name = "toolStripMenuItem_MoveUp"; //
toolStripMenuItem_MoveUp.ShortcutKeys = Keys.Alt | Keys.W; resources.ApplyResources(toolStripMenuItem_MoveTop, "toolStripMenuItem_MoveTop");
toolStripMenuItem_MoveUp.Size = new Size(254, 30); toolStripMenuItem_MoveTop.Name = "toolStripMenuItem_MoveTop";
toolStripMenuItem_MoveUp.Text = "上移"; toolStripMenuItem_MoveTop.Click += toolStripMenuItem_MoveTop_Click;
toolStripMenuItem_MoveUp.Click += toolStripMenuItem_MoveUp_Click; //
// // toolStripMenuItem_MoveBottom
// toolStripMenuItem_MoveDown //
// resources.ApplyResources(toolStripMenuItem_MoveBottom, "toolStripMenuItem_MoveBottom");
toolStripMenuItem_MoveDown.Name = "toolStripMenuItem_MoveDown"; toolStripMenuItem_MoveBottom.Name = "toolStripMenuItem_MoveBottom";
toolStripMenuItem_MoveDown.ShortcutKeys = Keys.Alt | Keys.S; toolStripMenuItem_MoveBottom.Click += toolStripMenuItem_MoveBottom_Click;
toolStripMenuItem_MoveDown.Size = new Size(254, 30); //
toolStripMenuItem_MoveDown.Text = "下移"; // toolStripSeparator3
toolStripMenuItem_MoveDown.Click += toolStripMenuItem_MoveDown_Click; //
// resources.ApplyResources(toolStripSeparator3, "toolStripSeparator3");
// toolStripMenuItem_MoveTop toolStripSeparator3.Name = "toolStripSeparator3";
// //
toolStripMenuItem_MoveTop.Name = "toolStripMenuItem_MoveTop"; // toolStripMenuItem_CopyPreview
toolStripMenuItem_MoveTop.ShortcutKeys = Keys.Alt | Keys.Shift | Keys.W; //
toolStripMenuItem_MoveTop.Size = new Size(254, 30); resources.ApplyResources(toolStripMenuItem_CopyPreview, "toolStripMenuItem_CopyPreview");
toolStripMenuItem_MoveTop.Text = "置顶"; toolStripMenuItem_CopyPreview.Name = "toolStripMenuItem_CopyPreview";
toolStripMenuItem_MoveTop.Click += toolStripMenuItem_MoveTop_Click; toolStripMenuItem_CopyPreview.Click += toolStripMenuItem_CopyPreview_Click;
// //
// toolStripMenuItem_MoveBottom // toolStripMenuItem_AddFromClipboard
// //
toolStripMenuItem_MoveBottom.Name = "toolStripMenuItem_MoveBottom"; resources.ApplyResources(toolStripMenuItem_AddFromClipboard, "toolStripMenuItem_AddFromClipboard");
toolStripMenuItem_MoveBottom.ShortcutKeys = Keys.Alt | Keys.Shift | Keys.S; toolStripMenuItem_AddFromClipboard.Name = "toolStripMenuItem_AddFromClipboard";
toolStripMenuItem_MoveBottom.Size = new Size(254, 30); toolStripMenuItem_AddFromClipboard.Click += toolStripMenuItem_AddFromClipboard_Click;
toolStripMenuItem_MoveBottom.Text = "置底"; //
toolStripMenuItem_MoveBottom.Click += toolStripMenuItem_MoveBottom_Click; // toolStripMenuItem_SelectAll
// //
// toolStripSeparator3 resources.ApplyResources(toolStripMenuItem_SelectAll, "toolStripMenuItem_SelectAll");
// toolStripMenuItem_SelectAll.Name = "toolStripMenuItem_SelectAll";
toolStripSeparator3.Name = "toolStripSeparator3"; toolStripMenuItem_SelectAll.Click += toolStripMenuItem_SelectAll_Click;
toolStripSeparator3.Size = new Size(251, 6); //
// // toolStripSeparator4
// toolStripMenuItem_CopyPreview //
// resources.ApplyResources(toolStripSeparator4, "toolStripSeparator4");
toolStripMenuItem_CopyPreview.Name = "toolStripMenuItem_CopyPreview"; toolStripSeparator4.Name = "toolStripSeparator4";
toolStripMenuItem_CopyPreview.ShortcutKeys = Keys.Control | Keys.C; //
toolStripMenuItem_CopyPreview.Size = new Size(254, 30); // toolStripMenuItem_ChangeView
toolStripMenuItem_CopyPreview.Text = "复制预览图"; //
toolStripMenuItem_CopyPreview.Click += toolStripMenuItem_CopyPreview_Click; resources.ApplyResources(toolStripMenuItem_ChangeView, "toolStripMenuItem_ChangeView");
// toolStripMenuItem_ChangeView.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_LargeIconView, toolStripMenuItem_ListView, toolStripMenuItem_DetailsView });
// toolStripMenuItem_AddFromClipboard toolStripMenuItem_ChangeView.Name = "toolStripMenuItem_ChangeView";
// //
toolStripMenuItem_AddFromClipboard.Name = "toolStripMenuItem_AddFromClipboard"; // toolStripMenuItem_LargeIconView
toolStripMenuItem_AddFromClipboard.ShortcutKeys = Keys.Control | Keys.V; //
toolStripMenuItem_AddFromClipboard.Size = new Size(254, 30); resources.ApplyResources(toolStripMenuItem_LargeIconView, "toolStripMenuItem_LargeIconView");
toolStripMenuItem_AddFromClipboard.Text = "从剪贴板添加"; toolStripMenuItem_LargeIconView.Name = "toolStripMenuItem_LargeIconView";
toolStripMenuItem_AddFromClipboard.Click += toolStripMenuItem_AddFromClipboard_Click; toolStripMenuItem_LargeIconView.Click += toolStripMenuItem_LargeIconView_Click;
// //
// toolStripMenuItem_SelectAll // toolStripMenuItem_ListView
// //
toolStripMenuItem_SelectAll.Name = "toolStripMenuItem_SelectAll"; resources.ApplyResources(toolStripMenuItem_ListView, "toolStripMenuItem_ListView");
toolStripMenuItem_SelectAll.ShortcutKeys = Keys.Control | Keys.A; toolStripMenuItem_ListView.Name = "toolStripMenuItem_ListView";
toolStripMenuItem_SelectAll.Size = new Size(254, 30); toolStripMenuItem_ListView.Click += toolStripMenuItem_ListView_Click;
toolStripMenuItem_SelectAll.Text = "全选"; //
toolStripMenuItem_SelectAll.Click += toolStripMenuItem_SelectAll_Click; // toolStripMenuItem_DetailsView
// //
// toolStripSeparator4 resources.ApplyResources(toolStripMenuItem_DetailsView, "toolStripMenuItem_DetailsView");
// toolStripMenuItem_DetailsView.Name = "toolStripMenuItem_DetailsView";
toolStripSeparator4.Name = "toolStripSeparator4"; toolStripMenuItem_DetailsView.Click += toolStripMenuItem_DetailsView_Click;
toolStripSeparator4.Size = new Size(251, 6); //
// // imageList_LargeIcon
// toolStripMenuItem_ChangeView //
// imageList_LargeIcon.ColorDepth = ColorDepth.Depth32Bit;
toolStripMenuItem_ChangeView.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_LargeIconView, toolStripMenuItem_ListView, toolStripMenuItem_DetailsView }); resources.ApplyResources(imageList_LargeIcon, "imageList_LargeIcon");
toolStripMenuItem_ChangeView.Name = "toolStripMenuItem_ChangeView"; imageList_LargeIcon.TransparentColor = Color.Transparent;
toolStripMenuItem_ChangeView.Size = new Size(254, 30); //
toolStripMenuItem_ChangeView.Text = "切换视图"; // imageList_SmallIcon
// //
// toolStripMenuItem_LargeIconView imageList_SmallIcon.ColorDepth = ColorDepth.Depth32Bit;
// resources.ApplyResources(imageList_SmallIcon, "imageList_SmallIcon");
toolStripMenuItem_LargeIconView.Name = "toolStripMenuItem_LargeIconView"; imageList_SmallIcon.TransparentColor = Color.Transparent;
toolStripMenuItem_LargeIconView.ShortcutKeys = Keys.Alt | Keys.D1; //
toolStripMenuItem_LargeIconView.Size = new Size(241, 34); // timer_SelectedIndexChangedDebounce
toolStripMenuItem_LargeIconView.Text = "大图标"; //
toolStripMenuItem_LargeIconView.Click += toolStripMenuItem_LargeIconView_Click; timer_SelectedIndexChangedDebounce.Interval = 30;
// timer_SelectedIndexChangedDebounce.Tick += timer_SelectedIndexChangedDebounce_Tick;
// toolStripMenuItem_ListView //
// // statusStrip
toolStripMenuItem_ListView.Name = "toolStripMenuItem_ListView"; //
toolStripMenuItem_ListView.ShortcutKeys = Keys.Alt | Keys.D2; resources.ApplyResources(statusStrip, "statusStrip");
toolStripMenuItem_ListView.Size = new Size(241, 34); statusStrip.ImageScalingSize = new Size(24, 24);
toolStripMenuItem_ListView.Text = "列表"; statusStrip.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel_CountInfo });
toolStripMenuItem_ListView.Click += toolStripMenuItem_ListView_Click; statusStrip.Name = "statusStrip";
// statusStrip.SizingGrip = false;
// toolStripMenuItem_DetailsView //
// // toolStripStatusLabel_CountInfo
toolStripMenuItem_DetailsView.Name = "toolStripMenuItem_DetailsView"; //
toolStripMenuItem_DetailsView.ShortcutKeys = Keys.Alt | Keys.D3; resources.ApplyResources(toolStripStatusLabel_CountInfo, "toolStripStatusLabel_CountInfo");
toolStripMenuItem_DetailsView.Size = new Size(241, 34); toolStripStatusLabel_CountInfo.Name = "toolStripStatusLabel_CountInfo";
toolStripMenuItem_DetailsView.Text = "详细信息"; //
toolStripMenuItem_DetailsView.Click += toolStripMenuItem_DetailsView_Click; // tableLayoutPanel
// //
// imageList_LargeIcon resources.ApplyResources(tableLayoutPanel, "tableLayoutPanel");
// tableLayoutPanel.Controls.Add(listView, 0, 0);
imageList_LargeIcon.ColorDepth = ColorDepth.Depth32Bit; tableLayoutPanel.Controls.Add(statusStrip, 0, 1);
imageList_LargeIcon.ImageSize = new Size(96, 96); tableLayoutPanel.Name = "tableLayoutPanel";
imageList_LargeIcon.TransparentColor = Color.Transparent; //
// // SpineListView
// imageList_SmallIcon //
// resources.ApplyResources(this, "$this");
imageList_SmallIcon.ColorDepth = ColorDepth.Depth32Bit; AutoScaleMode = AutoScaleMode.Font;
imageList_SmallIcon.ImageSize = new Size(48, 48); Controls.Add(tableLayoutPanel);
imageList_SmallIcon.TransparentColor = Color.Transparent; Name = "SpineListView";
// contextMenuStrip.ResumeLayout(false);
// timer_SelectedIndexChangedDebounce statusStrip.ResumeLayout(false);
// statusStrip.PerformLayout();
timer_SelectedIndexChangedDebounce.Interval = 30; tableLayoutPanel.ResumeLayout(false);
timer_SelectedIndexChangedDebounce.Tick += timer_SelectedIndexChangedDebounce_Tick; tableLayoutPanel.PerformLayout();
// ResumeLayout(false);
// statusStrip }
//
statusStrip.Dock = DockStyle.Fill;
statusStrip.ImageScalingSize = new Size(24, 24);
statusStrip.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel_CountInfo });
statusStrip.Location = new Point(0, 414);
statusStrip.Name = "statusStrip";
statusStrip.Size = new Size(336, 31);
statusStrip.SizingGrip = false;
statusStrip.TabIndex = 2;
statusStrip.Text = "statusStrip1";
//
// toolStripStatusLabel_CountInfo
//
toolStripStatusLabel_CountInfo.Name = "toolStripStatusLabel_CountInfo";
toolStripStatusLabel_CountInfo.Size = new Size(178, 24);
toolStripStatusLabel_CountInfo.Text = "已选择 0 项,共 0 项";
//
// tableLayoutPanel
//
tableLayoutPanel.ColumnCount = 1;
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
tableLayoutPanel.Controls.Add(listView, 0, 0);
tableLayoutPanel.Controls.Add(statusStrip, 0, 1);
tableLayoutPanel.Dock = DockStyle.Fill;
tableLayoutPanel.Location = new Point(0, 0);
tableLayoutPanel.Name = "tableLayoutPanel";
tableLayoutPanel.RowCount = 2;
tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
tableLayoutPanel.RowStyles.Add(new RowStyle());
tableLayoutPanel.Size = new Size(336, 445);
tableLayoutPanel.TabIndex = 3;
//
// SpineListView
//
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
Controls.Add(tableLayoutPanel);
Name = "SpineListView";
Size = new Size(336, 445);
contextMenuStrip.ResumeLayout(false);
statusStrip.ResumeLayout(false);
statusStrip.PerformLayout();
tableLayoutPanel.ResumeLayout(false);
tableLayoutPanel.PerformLayout();
ResumeLayout(false);
}
#endregion #endregion
private ContextMenuStrip contextMenuStrip; private ContextMenuStrip contextMenuStrip;
private ToolStripMenuItem toolStripMenuItem_Add; private ToolStripMenuItem toolStripMenuItem_Add;
private ToolStripMenuItem toolStripMenuItem_Insert; private ToolStripMenuItem toolStripMenuItem_Insert;
private ToolStripMenuItem toolStripMenuItem_Remove; private ToolStripMenuItem toolStripMenuItem_Remove;

View File

@@ -16,6 +16,7 @@ using NLog;
using SpineViewer.Extensions; using SpineViewer.Extensions;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Spine.SpineView; using SpineViewer.Spine.SpineView;
using SpineViewer.Utils.Localize;
namespace SpineViewer.Controls namespace SpineViewer.Controls
{ {
@@ -47,11 +48,12 @@ namespace SpineViewer.Controls
Spines = spines.AsReadOnly(); Spines = spines.AsReadOnly();
} }
/// <summary> /// <summary>
/// 显示骨骼信息的属性面板 /// 显示骨骼信息的属性面板
/// </summary> /// </summary>
[Category("自定义"), Description("用于显示模型属性的组合属性页")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
public SpineViewPropertyGrid? SpinePropertyGrid { get; set; } [LocalizedDescription(typeof(Properties.Resources), "descModelAttributes")]
public SpineViewPropertyGrid? SpinePropertyGrid { get; set; }
/// <summary> /// <summary>
/// 选中的索引 /// 选中的索引
@@ -101,7 +103,7 @@ namespace SpineViewer.Controls
{ {
logger.Error(ex.ToString()); logger.Error(ex.ToString());
logger.Error("Failed to load {} {}", result.SkelPath, result.AtlasPath); logger.Error("Failed to load {} {}", result.SkelPath, result.AtlasPath);
MessagePopup.Error(ex.ToString(), "骨骼加载失败"); MessagePopup.Error(ex.ToString(), Properties.Resources.errorLoadSkeleton);
} }
logger.LogCurrentProcessMemoryUsage(); logger.LogCurrentProcessMemoryUsage();
@@ -142,7 +144,7 @@ namespace SpineViewer.Controls
int success = 0; int success = 0;
int error = 0; int error = 0;
worker.ReportProgress(0, $"已处理 0/{totalCount}"); worker.ReportProgress(0, $"{Properties.Resources.process} 0/{totalCount}");
for (int i = 0; i < totalCount; i++) for (int i = 0; i < totalCount; i++)
{ {
if (worker.CancellationPending) if (worker.CancellationPending)
@@ -174,7 +176,7 @@ namespace SpineViewer.Controls
error++; error++;
} }
worker.ReportProgress((int)((i + 1) * 100.0) / totalCount, $"已处理 {i + 1}/{totalCount}"); worker.ReportProgress((int)((i + 1) * 100.0) / totalCount, $"{Properties.Resources.process} {i + 1}/{totalCount}");
} }
// 选中最后一项 // 选中最后一项
@@ -222,7 +224,7 @@ namespace SpineViewer.Controls
{ {
if (validPaths.Count > 100) if (validPaths.Count > 100)
{ {
if (MessagePopup.Quest($"共发现 {validPaths.Count} 个可加载骨骼,数量较多,是否一次性全部加载?") == DialogResult.Cancel) if (MessagePopup.Quest($"{Properties.Resources.loadAllSkeletonPrefix}{validPaths.Count}{Properties.Resources.loadAllSkeletonSuffix}", Properties.Resources.msgBoxQuest) == DialogResult.Cancel)
return; return;
} }
BatchAdd(new Dialogs.BatchOpenSpineDialogResult(SpineVersion.Auto, validPaths.ToArray())); BatchAdd(new Dialogs.BatchOpenSpineDialogResult(SpineVersion.Auto, validPaths.ToArray()));
@@ -276,7 +278,7 @@ namespace SpineViewer.Controls
if (listView.SelectedItems.Count > 0) if (listView.SelectedItems.Count > 0)
listView.SelectedItems[0].EnsureVisible(); listView.SelectedItems[0].EnsureVisible();
toolStripStatusLabel_CountInfo.Text = $"已选择 {listView.SelectedItems.Count} 项,共 {listView.Items.Count} 项"; toolStripStatusLabel_CountInfo.Text = $"{Properties.Resources.countInfoStatusPrefix} {listView.SelectedItems.Count} {Properties.Resources.countInfoStatusMidfix} {listView.Items.Count} {Properties.Resources.countInfoStatusSuffix}";
} }
private void listView_ItemDrag(object sender, ItemDragEventArgs e) private void listView_ItemDrag(object sender, ItemDragEventArgs e)
@@ -411,7 +413,7 @@ namespace SpineViewer.Controls
if (listView.SelectedIndices.Count > 1) if (listView.SelectedIndices.Count > 1)
{ {
if (MessagePopup.Quest($"确定移除所选 {listView.SelectedIndices.Count} 项吗?") != DialogResult.OK) if (MessagePopup.Quest($"{Properties.Resources.removeItemConfirmPrefix} {listView.SelectedIndices.Count} {Properties.Resources.removeItemConfirmSuffix}", Properties.Resources.msgBoxQuest) != DialogResult.OK)
return; return;
} }
@@ -511,7 +513,7 @@ namespace SpineViewer.Controls
if (listView.Items.Count <= 0) if (listView.Items.Count <= 0)
return; return;
if (MessagePopup.Quest($"确认移除所有 {listView.Items.Count} 项吗?") != DialogResult.OK) if (MessagePopup.Quest($"{Properties.Resources.removeAllItemPrefix} {listView.Items.Count} {Properties.Resources.removeItemConfirmSuffix}", Properties.Resources.msgBoxQuest) != DialogResult.OK)
return; return;
listView.Items.Clear(); listView.Items.Clear();

View File

@@ -0,0 +1,272 @@
<?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>
<data name="columnHeader_Name.Text" xml:space="preserve">
<value>Name</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="toolStripMenuItem_Add.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_Add.Text" xml:space="preserve">
<value>Add to...</value>
</data>
<data name="toolStripMenuItem_Insert.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_Insert.Text" xml:space="preserve">
<value>Insert...</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="toolStripMenuItem_Remove.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_Remove.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_Remove.Text" xml:space="preserve">
<value>Remove</value>
</data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>189, 6</value>
</data>
<data name="toolStripMenuItem_BatchAdd.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_BatchAdd.Text" xml:space="preserve">
<value>Bulk add...</value>
</data>
<data name="toolStripMenuItem_RemoveAll.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_RemoveAll.Text" xml:space="preserve">
<value>Remove all</value>
</data>
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
<value>189, 6</value>
</data>
<data name="toolStripMenuItem_MoveUp.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_MoveUp.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_MoveUp.Text" xml:space="preserve">
<value>Up</value>
</data>
<data name="toolStripMenuItem_MoveDown.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_MoveDown.Text" xml:space="preserve">
<value>Down</value>
</data>
<data name="toolStripMenuItem_MoveTop.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_MoveTop.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_MoveTop.Text" xml:space="preserve">
<value>Stick to top</value>
</data>
<data name="toolStripMenuItem_MoveBottom.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_MoveBottom.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_MoveBottom.Text" xml:space="preserve">
<value>Bottom</value>
</data>
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
<value>189, 6</value>
</data>
<data name="toolStripMenuItem_CopyPreview.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_CopyPreview.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_CopyPreview.Text" xml:space="preserve">
<value>Copy preview</value>
</data>
<data name="toolStripMenuItem_AddFromClipboard.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_AddFromClipboard.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_AddFromClipboard.Text" xml:space="preserve">
<value>Add to clipboard</value>
</data>
<data name="toolStripMenuItem_SelectAll.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_SelectAll.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_SelectAll.Text" xml:space="preserve">
<value>Select all</value>
</data>
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
<value>189, 6</value>
</data>
<data name="toolStripMenuItem_LargeIconView.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_LargeIconView.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 26</value>
</data>
<data name="toolStripMenuItem_LargeIconView.Text" xml:space="preserve">
<value>Large icon</value>
</data>
<data name="toolStripMenuItem_ListView.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_ListView.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 26</value>
</data>
<data name="toolStripMenuItem_ListView.Text" xml:space="preserve">
<value>List</value>
</data>
<data name="toolStripMenuItem_DetailsView.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>(none)</value>
</data>
<data name="toolStripMenuItem_DetailsView.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 26</value>
</data>
<data name="toolStripMenuItem_DetailsView.Text" xml:space="preserve">
<value>More info</value>
</data>
<data name="toolStripMenuItem_ChangeView.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 24</value>
</data>
<data name="toolStripMenuItem_ChangeView.Text" xml:space="preserve">
<value>Switch view</value>
</data>
<data name="contextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>193, 340</value>
</data>
<data name="toolStripStatusLabel_CountInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>206, 20</value>
</data>
<data name="toolStripStatusLabel_CountInfo.Text" xml:space="preserve">
<value>0 items selected, 0 items total</value>
</data>
</root>

View File

@@ -117,19 +117,458 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<value>17, 17</value> <data name="toolStripMenuItem_DetailsView.Size" type="System.Drawing.Size, System.Drawing">
</metadata> <value>200, 26</value>
<metadata name="imageList_LargeIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> </data>
<value>511, 20</value> <data name="toolStripMenuItem_MoveTop.Text" xml:space="preserve">
</metadata> <value>置顶</value>
<metadata name="imageList_SmallIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> </data>
<value>252, 19</value> <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
</metadata> <value>8, 20</value>
<metadata name="timer_SelectedIndexChangedDebounce.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> </data>
<value>771, 24</value> <data name="toolStripMenuItem_BatchAdd.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="toolStripMenuItem_SelectAll.Text" xml:space="preserve">
<value>全选</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Insert.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_ChangeView.Name" xml:space="preserve">
<value>toolStripMenuItem_ChangeView</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Add.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 6</value>
</data>
<data name="toolStripMenuItem_ChangeView.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_SelectAll.Name" xml:space="preserve">
<value>toolStripMenuItem_SelectAll</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_DetailsView.Name" xml:space="preserve">
<value>toolStripMenuItem_DetailsView</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="columnHeader_Name.Width" type="System.Int32, mscorlib">
<value>300</value>
</data>
<data name="listView.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 345</value>
</data>
<data name="toolStripMenuItem_LargeIconView.Text" xml:space="preserve">
<value>大图标</value>
</data>
<data name="&gt;&gt;listView.Parent" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 6</value>
</data>
<data name="&gt;&gt;toolStripSeparator3.Name" xml:space="preserve">
<value>toolStripSeparator3</value>
</data>
<data name="&gt;&gt;listView.Name" xml:space="preserve">
<value>listView</value>
</data>
<data name="toolStripMenuItem_MoveBottom.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>SpineListView</value>
</data>
<data name="toolStripMenuItem_MoveDown.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="&gt;&gt;listView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="toolStripMenuItem_Add.Text" xml:space="preserve">
<value>添加...</value>
</data>
<data name="toolStripMenuItem_MoveUp.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="&gt;&gt;toolStripSeparator1.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_LargeIconView.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_CopyPreview.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="toolStripMenuItem_MoveTop.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Alt+Shift+W</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_MoveBottom.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripSeparator4.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="contextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>221, 340</value>
</data>
<data name="&gt;&gt;timer_SelectedIndexChangedDebounce.Name" xml:space="preserve">
<value>timer_SelectedIndexChangedDebounce</value>
</data>
<data name="toolStripMenuItem_AddFromClipboard.Text" xml:space="preserve">
<value>从剪贴板添加</value>
</data>
<data name="&gt;&gt;tableLayoutPanel.Name" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="&gt;&gt;columnHeader_Name.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="listView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="listView.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 371</value>
</data>
<data name="toolStripMenuItem_Add.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="toolStripMenuItem_Remove.Text" xml:space="preserve">
<value>移除</value>
</data>
<data name="&gt;&gt;imageList_SmallIcon.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="imageList_LargeIcon.ImageSize" type="System.Drawing.Size, System.Drawing">
<value>96, 96</value>
</data>
<data name="statusStrip.Text" xml:space="preserve">
<value>statusStrip1</value>
</data>
<data name="&gt;&gt;statusStrip.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="toolStripMenuItem_ListView.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Alt+2</value>
</data>
<data name="&gt;&gt;toolStripSeparator3.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_CopyPreview.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_SelectAll.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_DetailsView.Text" xml:space="preserve">
<value>详细信息</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_MoveTop.Name" xml:space="preserve">
<value>toolStripMenuItem_MoveTop</value>
</data>
<data name="toolStripMenuItem_Remove.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="tableLayoutPanel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_LargeIconView.Name" xml:space="preserve">
<value>toolStripMenuItem_LargeIconView</value>
</data>
<data name="toolStripStatusLabel_CountInfo.Text" xml:space="preserve">
<value>已选择 0 项,共 0 项</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Insert.Name" xml:space="preserve">
<value>toolStripMenuItem_Insert</value>
</data>
<data name="toolStripMenuItem_MoveBottom.Text" xml:space="preserve">
<value>置底</value>
</data>
<data name="toolStripMenuItem_MoveUp.Text" xml:space="preserve">
<value>上移</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_MoveDown.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tableLayoutPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 371</value>
</data>
<data name="listView.Alignment" type="System.Windows.Forms.ListViewAlignment, System.Windows.Forms">
<value>Left</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_BatchAdd.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_Insert.Text" xml:space="preserve">
<value>插入...</value>
</data>
<data name="toolStripMenuItem_CopyPreview.Text" xml:space="preserve">
<value>复制预览图</value>
</data>
<data name="toolStripMenuItem_ChangeView.Text" xml:space="preserve">
<value>切换视图</value>
</data>
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 6</value>
</data>
<data name="columnHeader_Name.Text" xml:space="preserve">
<value>名称</value>
</data>
<data name="toolStripMenuItem_RemoveAll.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_AddFromClipboard.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_DetailsView.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_CopyPreview.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Ctrl+C</value>
</data>
<data name="&gt;&gt;toolStripSeparator2.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_AddFromClipboard.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_ListView.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;contextMenuStrip.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;contextMenuStrip.Name" xml:space="preserve">
<value>contextMenuStrip</value>
</data>
<data name="tableLayoutPanel.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Remove.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;statusStrip.Parent" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_RemoveAll.Name" xml:space="preserve">
<value>toolStripMenuItem_RemoveAll</value>
</data>
<data name="toolStripMenuItem_MoveDown.Text" xml:space="preserve">
<value>下移</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_MoveTop.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 6</value>
</data>
<data name="toolStripMenuItem_RemoveAll.Text" xml:space="preserve">
<value>移除全部</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_AddFromClipboard.Name" xml:space="preserve">
<value>toolStripMenuItem_AddFromClipboard</value>
</data>
<data name="&gt;&gt;toolStripStatusLabel_CountInfo.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_ListView.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 26</value>
</data>
<data name="toolStripMenuItem_MoveTop.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="toolStripMenuItem_MoveUp.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Alt+W</value>
</data>
<data name="toolStripMenuItem_LargeIconView.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Alt+1</value>
</data>
<data name="toolStripMenuItem_AddFromClipboard.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Ctrl+V</value>
</data>
<data name="&gt;&gt;statusStrip.Name" xml:space="preserve">
<value>statusStrip</value>
</data>
<data name="&gt;&gt;toolStripSeparator1.Name" xml:space="preserve">
<value>toolStripSeparator1</value>
</data>
<data name="listView.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="toolStripMenuItem_BatchAdd.Text" xml:space="preserve">
<value>批量添加...</value>
</data>
<data name="&gt;&gt;imageList_LargeIcon.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_MoveBottom.Name" xml:space="preserve">
<value>toolStripMenuItem_MoveBottom</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Add.Name" xml:space="preserve">
<value>toolStripMenuItem_Add</value>
</data>
<data name="&gt;&gt;imageList_LargeIcon.Name" xml:space="preserve">
<value>imageList_LargeIcon</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_MoveUp.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_ChangeView.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="imageList_SmallIcon.ImageSize" type="System.Drawing.Size, System.Drawing">
<value>48, 48</value>
</data>
<data name="toolStripMenuItem_LargeIconView.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 26</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_MoveDown.Name" xml:space="preserve">
<value>toolStripMenuItem_MoveDown</value>
</data>
<data name="tableLayoutPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="statusStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value>
</data>
<data name="&gt;&gt;toolStripSeparator4.Name" xml:space="preserve">
<value>toolStripSeparator4</value>
</data>
<data name="statusStrip.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;toolStripSeparator2.Name" xml:space="preserve">
<value>toolStripSeparator2</value>
</data>
<data name="&gt;&gt;columnHeader_Name.Name" xml:space="preserve">
<value>columnHeader_Name</value>
</data>
<data name="toolStripMenuItem_DetailsView.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Alt+3</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_Remove.Name" xml:space="preserve">
<value>toolStripMenuItem_Remove</value>
</data>
<data name="toolStripMenuItem_Remove.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Del</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_BatchAdd.Name" xml:space="preserve">
<value>toolStripMenuItem_BatchAdd</value>
</data>
<data name="tableLayoutPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;timer_SelectedIndexChangedDebounce.Type" xml:space="preserve">
<value>System.Windows.Forms.Timer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_SelectAll.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Ctrl+A</value>
</data>
<data name="&gt;&gt;tableLayoutPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;imageList_SmallIcon.Name" xml:space="preserve">
<value>imageList_SmallIcon</value>
</data>
<data name="tableLayoutPanel.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="listView" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="statusStrip" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Percent,100,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_RemoveAll.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripStatusLabel_CountInfo.Name" xml:space="preserve">
<value>toolStripStatusLabel_CountInfo</value>
</data>
<data name="listView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="toolStripMenuItem_MoveBottom.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Alt+Shift+S</value>
</data>
<data name="tableLayoutPanel.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="statusStrip.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="toolStripStatusLabel_CountInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>145, 20</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_ListView.Name" xml:space="preserve">
<value>toolStripMenuItem_ListView</value>
</data>
<data name="&gt;&gt;tableLayoutPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="toolStripMenuItem_ListView.Text" xml:space="preserve">
<value>列表</value>
</data>
<data name="&gt;&gt;listView.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_Insert.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_SelectAll.Size" type="System.Drawing.Size, System.Drawing">
<value>220, 24</value>
</data>
<data name="statusStrip.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 345</value>
</data>
<data name="toolStripMenuItem_MoveDown.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Alt+S</value>
</data>
<data name="&gt;&gt;statusStrip.Type" xml:space="preserve">
<value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_MoveUp.Name" xml:space="preserve">
<value>toolStripMenuItem_MoveUp</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_CopyPreview.Name" xml:space="preserve">
<value>toolStripMenuItem_CopyPreview</value>
</data>
<data name="statusStrip.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 10, 0</value>
</data>
<data name="tableLayoutPanel.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata> </metadata>
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1176, 24</value> <value>1176, 24</value>
</metadata> </metadata>
<metadata name="timer_SelectedIndexChangedDebounce.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>771, 24</value>
</metadata>
<metadata name="imageList_LargeIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>511, 20</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, System.Private.CoreLib, Culture=neutral, PublicKeyToken=7cec85d7bea7798e">
<value>ebu-KE</value>
</metadata>
<metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="imageList_SmallIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>252, 19</value>
</metadata>
</root> </root>

View File

@@ -20,259 +20,199 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region #region
/// <summary> /// <summary>
/// 设计器支持所需的方法 - 不要修改 /// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。 /// 使用代码编辑器修改此方法的内容。
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
components = new System.ComponentModel.Container(); components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SpinePreviewPanel)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SpinePreviewPanel));
panel_Render = new Panel(); panel_Render = new Panel();
tableLayoutPanel1 = new TableLayoutPanel(); tableLayoutPanel1 = new TableLayoutPanel();
flowLayoutPanel1 = new FlowLayoutPanel(); flowLayoutPanel1 = new FlowLayoutPanel();
button_Stop = new Button(); button_Stop = new Button();
imageList = new ImageList(components); imageList = new ImageList(components);
button_Restart = new Button(); button_Restart = new Button();
button_Start = new Button(); button_Start = new Button();
button_ForwardStep = new Button(); button_ForwardStep = new Button();
button_ForwardFast = new Button(); button_ForwardFast = new Button();
button_FullScreen = new Button(); button_FullScreen = new Button();
panel_ViewContainer = new Panel(); panel_ViewContainer = new Panel();
panel_RenderContainer = new Panel(); panel_RenderContainer = new Panel();
toolTip = new ToolTip(components); toolTip = new ToolTip(components);
spinePreviewFullScreenForm = new SpineViewer.Forms.SpinePreviewFullScreenForm(); spinePreviewFullScreenForm = new Forms.SpinePreviewFullScreenForm();
wallpaperForm = new WallpaperForm(); wallpaperForm = new WallpaperForm();
tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.SuspendLayout();
flowLayoutPanel1.SuspendLayout(); flowLayoutPanel1.SuspendLayout();
panel_ViewContainer.SuspendLayout(); panel_ViewContainer.SuspendLayout();
panel_RenderContainer.SuspendLayout(); panel_RenderContainer.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// panel_Render // panel_Render
// //
panel_Render.BackColor = SystemColors.ControlDarkDark; resources.ApplyResources(panel_Render, "panel_Render");
panel_Render.Location = new Point(157, 136); panel_Render.BackColor = SystemColors.ControlDarkDark;
panel_Render.Margin = new Padding(0); panel_Render.Name = "panel_Render";
panel_Render.Name = "panel_Render"; toolTip.SetToolTip(panel_Render, resources.GetString("panel_Render.ToolTip"));
panel_Render.Size = new Size(320, 320); panel_Render.MouseDown += panel_Render_MouseDown;
panel_Render.TabIndex = 1; panel_Render.MouseMove += panel_Render_MouseMove;
panel_Render.MouseDown += panel_Render_MouseDown; panel_Render.MouseUp += panel_Render_MouseUp;
panel_Render.MouseMove += panel_Render_MouseMove; panel_Render.MouseWheel += panel_Render_MouseWheel;
panel_Render.MouseUp += panel_Render_MouseUp; //
panel_Render.MouseWheel += panel_Render_MouseWheel; // tableLayoutPanel1
// //
// tableLayoutPanel1 resources.ApplyResources(tableLayoutPanel1, "tableLayoutPanel1");
// tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 0, 1);
tableLayoutPanel1.ColumnCount = 1; tableLayoutPanel1.Controls.Add(panel_ViewContainer, 0, 0);
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 0, 1); toolTip.SetToolTip(tableLayoutPanel1, resources.GetString("tableLayoutPanel1.ToolTip"));
tableLayoutPanel1.Controls.Add(panel_ViewContainer, 0, 0); //
tableLayoutPanel1.Dock = DockStyle.Fill; // flowLayoutPanel1
tableLayoutPanel1.Location = new Point(0, 0); //
tableLayoutPanel1.Margin = new Padding(0); resources.ApplyResources(flowLayoutPanel1, "flowLayoutPanel1");
tableLayoutPanel1.Name = "tableLayoutPanel1"; flowLayoutPanel1.Controls.Add(button_Stop);
tableLayoutPanel1.RowCount = 2; flowLayoutPanel1.Controls.Add(button_Restart);
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); flowLayoutPanel1.Controls.Add(button_Start);
tableLayoutPanel1.RowStyles.Add(new RowStyle()); flowLayoutPanel1.Controls.Add(button_ForwardStep);
tableLayoutPanel1.Size = new Size(641, 636); flowLayoutPanel1.Controls.Add(button_ForwardFast);
tableLayoutPanel1.TabIndex = 2; flowLayoutPanel1.Controls.Add(button_FullScreen);
// flowLayoutPanel1.Name = "flowLayoutPanel1";
// flowLayoutPanel1 toolTip.SetToolTip(flowLayoutPanel1, resources.GetString("flowLayoutPanel1.ToolTip"));
// //
flowLayoutPanel1.Anchor = AnchorStyles.None; // button_Stop
flowLayoutPanel1.AutoSize = true; //
flowLayoutPanel1.AutoSizeMode = AutoSizeMode.GrowAndShrink; resources.ApplyResources(button_Stop, "button_Stop");
flowLayoutPanel1.Controls.Add(button_Stop); button_Stop.ImageList = imageList;
flowLayoutPanel1.Controls.Add(button_Restart); button_Stop.Name = "button_Stop";
flowLayoutPanel1.Controls.Add(button_Start); toolTip.SetToolTip(button_Stop, resources.GetString("button_Stop.ToolTip"));
flowLayoutPanel1.Controls.Add(button_ForwardStep); button_Stop.UseVisualStyleBackColor = true;
flowLayoutPanel1.Controls.Add(button_ForwardFast); button_Stop.Click += button_Stop_Click;
flowLayoutPanel1.Controls.Add(button_FullScreen); //
flowLayoutPanel1.Location = new Point(101, 594); // imageList
flowLayoutPanel1.Margin = new Padding(0); //
flowLayoutPanel1.Name = "flowLayoutPanel1"; imageList.ColorDepth = ColorDepth.Depth32Bit;
flowLayoutPanel1.Size = new Size(438, 42); imageList.ImageStream = (ImageListStreamer)resources.GetObject("imageList.ImageStream");
flowLayoutPanel1.TabIndex = 1; imageList.TransparentColor = Color.Transparent;
// imageList.Images.SetKeyName(0, "arrows-maximize");
// button_Stop imageList.Images.SetKeyName(1, "forward-fast");
// imageList.Images.SetKeyName(2, "forward-step");
button_Stop.AutoSize = true; imageList.Images.SetKeyName(3, "pause");
button_Stop.AutoSizeMode = AutoSizeMode.GrowAndShrink; imageList.Images.SetKeyName(4, "rotate-left");
button_Stop.ImageKey = "stop"; imageList.Images.SetKeyName(5, "start");
button_Stop.ImageList = imageList; imageList.Images.SetKeyName(6, "stop");
button_Stop.Location = new Point(3, 3); //
button_Stop.Name = "button_Stop"; // button_Restart
button_Stop.Padding = new Padding(15, 3, 15, 3); //
button_Stop.Size = new Size(67, 36); resources.ApplyResources(button_Restart, "button_Restart");
button_Stop.TabIndex = 0; button_Restart.ImageList = imageList;
toolTip.SetToolTip(button_Stop, "停止播放并重置时间到初始"); button_Restart.Name = "button_Restart";
button_Stop.UseVisualStyleBackColor = true; toolTip.SetToolTip(button_Restart, resources.GetString("button_Restart.ToolTip"));
button_Stop.Click += button_Stop_Click; button_Restart.UseVisualStyleBackColor = true;
// button_Restart.Click += button_Restart_Click;
// imageList //
// // button_Start
imageList.ColorDepth = ColorDepth.Depth32Bit; //
imageList.ImageStream = (ImageListStreamer)resources.GetObject("imageList.ImageStream"); resources.ApplyResources(button_Start, "button_Start");
imageList.TransparentColor = Color.Transparent; button_Start.ImageList = imageList;
imageList.Images.SetKeyName(0, "arrows-maximize"); button_Start.Name = "button_Start";
imageList.Images.SetKeyName(1, "forward-fast"); toolTip.SetToolTip(button_Start, resources.GetString("button_Start.ToolTip"));
imageList.Images.SetKeyName(2, "forward-step"); button_Start.UseVisualStyleBackColor = true;
imageList.Images.SetKeyName(3, "pause"); button_Start.Click += button_Start_Click;
imageList.Images.SetKeyName(4, "rotate-left"); //
imageList.Images.SetKeyName(5, "start"); // button_ForwardStep
imageList.Images.SetKeyName(6, "stop"); //
// resources.ApplyResources(button_ForwardStep, "button_ForwardStep");
// button_Restart button_ForwardStep.ImageList = imageList;
// button_ForwardStep.Name = "button_ForwardStep";
button_Restart.AutoSize = true; toolTip.SetToolTip(button_ForwardStep, resources.GetString("button_ForwardStep.ToolTip"));
button_Restart.AutoSizeMode = AutoSizeMode.GrowAndShrink; button_ForwardStep.UseVisualStyleBackColor = true;
button_Restart.ImageKey = "rotate-left"; button_ForwardStep.Click += button_ForwardStep_Click;
button_Restart.ImageList = imageList; //
button_Restart.Location = new Point(76, 3); // button_ForwardFast
button_Restart.Name = "button_Restart"; //
button_Restart.Padding = new Padding(15, 3, 15, 3); resources.ApplyResources(button_ForwardFast, "button_ForwardFast");
button_Restart.Size = new Size(67, 36); button_ForwardFast.ImageList = imageList;
button_Restart.TabIndex = 1; button_ForwardFast.Name = "button_ForwardFast";
toolTip.SetToolTip(button_Restart, "从头开始播放"); toolTip.SetToolTip(button_ForwardFast, resources.GetString("button_ForwardFast.ToolTip"));
button_Restart.UseVisualStyleBackColor = true; button_ForwardFast.UseVisualStyleBackColor = true;
button_Restart.Click += button_Restart_Click; button_ForwardFast.Click += button_ForwardFast_Click;
// //
// button_Start // button_FullScreen
// //
button_Start.AutoSize = true; resources.ApplyResources(button_FullScreen, "button_FullScreen");
button_Start.AutoSizeMode = AutoSizeMode.GrowAndShrink; button_FullScreen.ImageList = imageList;
button_Start.BackgroundImageLayout = ImageLayout.Center; button_FullScreen.Name = "button_FullScreen";
button_Start.ImageKey = "pause"; toolTip.SetToolTip(button_FullScreen, resources.GetString("button_FullScreen.ToolTip"));
button_Start.ImageList = imageList; button_FullScreen.UseVisualStyleBackColor = true;
button_Start.Location = new Point(149, 3); button_FullScreen.Click += button_FullScreen_Click;
button_Start.Name = "button_Start"; //
button_Start.Padding = new Padding(15, 3, 15, 3); // panel_ViewContainer
button_Start.Size = new Size(67, 36); //
button_Start.TabIndex = 2; resources.ApplyResources(panel_ViewContainer, "panel_ViewContainer");
toolTip.SetToolTip(button_Start, "开始/暂停"); panel_ViewContainer.Controls.Add(panel_RenderContainer);
button_Start.UseVisualStyleBackColor = true; panel_ViewContainer.Name = "panel_ViewContainer";
button_Start.Click += button_Start_Click; toolTip.SetToolTip(panel_ViewContainer, resources.GetString("panel_ViewContainer.ToolTip"));
// //
// button_ForwardStep // panel_RenderContainer
// //
button_ForwardStep.AutoSize = true; resources.ApplyResources(panel_RenderContainer, "panel_RenderContainer");
button_ForwardStep.AutoSizeMode = AutoSizeMode.GrowAndShrink; panel_RenderContainer.BackColor = SystemColors.ControlDark;
button_ForwardStep.ImageKey = "forward-step"; panel_RenderContainer.Controls.Add(panel_Render);
button_ForwardStep.ImageList = imageList; panel_RenderContainer.Name = "panel_RenderContainer";
button_ForwardStep.Location = new Point(222, 3); toolTip.SetToolTip(panel_RenderContainer, resources.GetString("panel_RenderContainer.ToolTip"));
button_ForwardStep.Name = "button_ForwardStep"; panel_RenderContainer.SizeChanged += panel_RenderContainer_SizeChanged;
button_ForwardStep.Padding = new Padding(15, 3, 15, 3); //
button_ForwardStep.Size = new Size(67, 36); // spinePreviewFullScreenForm
button_ForwardStep.TabIndex = 3; //
toolTip.SetToolTip(button_ForwardStep, "快进 1 帧"); resources.ApplyResources(spinePreviewFullScreenForm, "spinePreviewFullScreenForm");
button_ForwardStep.UseVisualStyleBackColor = true; spinePreviewFullScreenForm.ControlBox = false;
button_ForwardStep.Click += button_ForwardStep_Click; spinePreviewFullScreenForm.FormBorderStyle = FormBorderStyle.None;
// spinePreviewFullScreenForm.MaximizeBox = false;
// button_ForwardFast spinePreviewFullScreenForm.MinimizeBox = false;
// spinePreviewFullScreenForm.Name = "SpinePreviewFullScreenForm";
button_ForwardFast.AutoSize = true; spinePreviewFullScreenForm.ShowIcon = false;
button_ForwardFast.AutoSizeMode = AutoSizeMode.GrowAndShrink; spinePreviewFullScreenForm.ShowInTaskbar = false;
button_ForwardFast.ImageKey = "forward-fast"; toolTip.SetToolTip(spinePreviewFullScreenForm, resources.GetString("spinePreviewFullScreenForm.ToolTip"));
button_ForwardFast.ImageList = imageList; spinePreviewFullScreenForm.TopMost = true;
button_ForwardFast.Location = new Point(295, 3); spinePreviewFullScreenForm.FormClosing += spinePreviewFullScreenForm_FormClosing;
button_ForwardFast.Name = "button_ForwardFast"; spinePreviewFullScreenForm.KeyDown += spinePreviewFullScreenForm_KeyDown;
button_ForwardFast.Padding = new Padding(15, 3, 15, 3); //
button_ForwardFast.Size = new Size(67, 36); // wallpaperForm
button_ForwardFast.TabIndex = 4; //
toolTip.SetToolTip(button_ForwardFast, "快进 10 帧"); resources.ApplyResources(wallpaperForm, "wallpaperForm");
button_ForwardFast.UseVisualStyleBackColor = true; wallpaperForm.ControlBox = false;
button_ForwardFast.Click += button_ForwardFast_Click; wallpaperForm.FormBorderStyle = FormBorderStyle.None;
// wallpaperForm.MaximizeBox = false;
// button_FullScreen wallpaperForm.MinimizeBox = false;
// wallpaperForm.Name = "WallpaperForm";
button_FullScreen.AutoSize = true; wallpaperForm.ShowIcon = false;
button_FullScreen.AutoSizeMode = AutoSizeMode.GrowAndShrink; wallpaperForm.ShowInTaskbar = false;
button_FullScreen.ImageKey = "arrows-maximize"; toolTip.SetToolTip(wallpaperForm, resources.GetString("wallpaperForm.ToolTip"));
button_FullScreen.ImageList = imageList; wallpaperForm.WindowState = FormWindowState.Minimized;
button_FullScreen.Location = new Point(368, 3); wallpaperForm.FormClosing += wallpaperForm_FormClosing;
button_FullScreen.Name = "button_FullScreen"; //
button_FullScreen.Padding = new Padding(15, 3, 15, 3); // SpinePreviewPanel
button_FullScreen.Size = new Size(67, 36); //
button_FullScreen.TabIndex = 5; resources.ApplyResources(this, "$this");
toolTip.SetToolTip(button_FullScreen, "全屏预览"); AutoScaleMode = AutoScaleMode.Font;
button_FullScreen.UseVisualStyleBackColor = true; Controls.Add(tableLayoutPanel1);
button_FullScreen.Click += button_FullScreen_Click; Name = "SpinePreviewPanel";
// toolTip.SetToolTip(this, resources.GetString("$this.ToolTip"));
// panel_ViewContainer tableLayoutPanel1.ResumeLayout(false);
// tableLayoutPanel1.PerformLayout();
panel_ViewContainer.Controls.Add(panel_RenderContainer); flowLayoutPanel1.ResumeLayout(false);
panel_ViewContainer.Dock = DockStyle.Fill; flowLayoutPanel1.PerformLayout();
panel_ViewContainer.Location = new Point(0, 0); panel_ViewContainer.ResumeLayout(false);
panel_ViewContainer.Margin = new Padding(0); panel_RenderContainer.ResumeLayout(false);
panel_ViewContainer.Name = "panel_ViewContainer"; ResumeLayout(false);
panel_ViewContainer.Size = new Size(641, 594); }
panel_ViewContainer.TabIndex = 6;
//
// panel_RenderContainer
//
panel_RenderContainer.BackColor = SystemColors.ControlDark;
panel_RenderContainer.Controls.Add(panel_Render);
panel_RenderContainer.Dock = DockStyle.Fill;
panel_RenderContainer.Location = new Point(0, 0);
panel_RenderContainer.Margin = new Padding(0);
panel_RenderContainer.Name = "panel_RenderContainer";
panel_RenderContainer.Size = new Size(641, 594);
panel_RenderContainer.TabIndex = 0;
panel_RenderContainer.SizeChanged += panel_RenderContainer_SizeChanged;
//
// spinePreviewFullScreenForm
//
spinePreviewFullScreenForm.ClientSize = new Size(2560, 1440);
spinePreviewFullScreenForm.ControlBox = false;
spinePreviewFullScreenForm.FormBorderStyle = FormBorderStyle.None;
spinePreviewFullScreenForm.MaximizeBox = false;
spinePreviewFullScreenForm.MinimizeBox = false;
spinePreviewFullScreenForm.Name = "SpinePreviewFullScreenForm";
spinePreviewFullScreenForm.ShowIcon = false;
spinePreviewFullScreenForm.ShowInTaskbar = false;
spinePreviewFullScreenForm.StartPosition = FormStartPosition.Manual;
spinePreviewFullScreenForm.TopMost = true;
spinePreviewFullScreenForm.Visible = false;
spinePreviewFullScreenForm.FormClosing += spinePreviewFullScreenForm_FormClosing;
spinePreviewFullScreenForm.KeyDown += spinePreviewFullScreenForm_KeyDown;
//
// wallpaperForm
//
wallpaperForm.ClientSize = new Size(0, 0);
wallpaperForm.ControlBox = false;
wallpaperForm.FormBorderStyle = FormBorderStyle.None;
wallpaperForm.MaximizeBox = false;
wallpaperForm.MinimizeBox = false;
wallpaperForm.Name = "WallpaperForm";
wallpaperForm.ShowIcon = false;
wallpaperForm.ShowInTaskbar = false;
wallpaperForm.StartPosition = FormStartPosition.Manual;
wallpaperForm.Visible = false;
wallpaperForm.WindowState = FormWindowState.Minimized;
wallpaperForm.FormClosing += wallpaperForm_FormClosing;
//
// SpinePreviewPanel
//
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
Controls.Add(tableLayoutPanel1);
Name = "SpinePreviewPanel";
Size = new Size(641, 636);
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
flowLayoutPanel1.ResumeLayout(false);
flowLayoutPanel1.PerformLayout();
panel_ViewContainer.ResumeLayout(false);
panel_RenderContainer.ResumeLayout(false);
ResumeLayout(false);
}
#endregion #endregion
private Panel panel_Render; private Panel panel_Render;
private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel1;
private Panel panel_RenderContainer; private Panel panel_RenderContainer;
private FlowLayoutPanel flowLayoutPanel1; private FlowLayoutPanel flowLayoutPanel1;

View File

@@ -12,6 +12,9 @@ using System.Diagnostics;
using NLog; using NLog;
using SpineViewer.Utils; using SpineViewer.Utils;
using System.Drawing.Design; using System.Drawing.Design;
using System.Reflection;
using System.Resources;
using SpineViewer.Utils.Localize;
namespace SpineViewer.Controls namespace SpineViewer.Controls
{ {
@@ -30,15 +33,17 @@ namespace SpineViewer.Controls
/// <summary> /// <summary>
/// 要绑定的 Spine 列表控件 /// 要绑定的 Spine 列表控件
/// </summary> /// </summary>
[Category("自定义"), Description("相关联的 SpineListView")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
[LocalizedDescription(typeof(Properties.Resources), "descAssociatedSpineListView")]
public SpineListView? SpineListView { get; set; } public SpineListView? SpineListView { get; set; }
/// <summary> /// <summary>
/// 属性信息面板 /// 属性信息面板
/// </summary> /// </summary>
[Category("自定义"), Description("用于显示画面属性的属性页")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
public PropertyGrid? PropertyGrid [LocalizedDescription(typeof(Properties.Resources), "descDisplayImageProperties")]
{ public PropertyGrid? PropertyGrid
{
get => propertyGrid; get => propertyGrid;
set set
{ {
@@ -489,7 +494,7 @@ namespace SpineViewer.Controls
{ {
logger.Fatal(ex.ToString()); logger.Fatal(ex.ToString());
logger.Fatal("Render task stopped"); logger.Fatal("Render task stopped");
MessagePopup.Error(ex.ToString(), "预览画面已停止渲染"); MessagePopup.Error(ex.ToString(), Properties.Resources.previewRenderStopped);
} }
finally finally
{ {
@@ -507,6 +512,7 @@ namespace SpineViewer.Controls
private void panel_RenderContainer_SizeChanged(object sender, EventArgs e) private void panel_RenderContainer_SizeChanged(object sender, EventArgs e)
{ {
if (renderWindow is null) return; if (renderWindow is null) return;
float parentW = panel_Render.Parent.Width; float parentW = panel_Render.Parent.Width;
@@ -785,37 +791,47 @@ namespace SpineViewer.Controls
[RefreshProperties(RefreshProperties.All)] [RefreshProperties(RefreshProperties.All)]
[TypeConverter(typeof(ResolutionConverter))] [TypeConverter(typeof(ResolutionConverter))]
[Category("[0] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayResolution")]
public Size Resolution { get => PreviewPanel.Resolution; set => PreviewPanel.Resolution = value; } public Size Resolution { get => PreviewPanel.Resolution; set => PreviewPanel.Resolution = value; }
[TypeConverter(typeof(PointFConverter))] [TypeConverter(typeof(PointFConverter))]
[Category("[0] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
public PointF Center { get => PreviewPanel.Center; set => PreviewPanel.Center = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayCenter")]
public PointF Center { get => PreviewPanel.Center; set => PreviewPanel.Center = value; }
[Category("[0] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
public float Zoom { get => PreviewPanel.Zoom; set => PreviewPanel.Zoom = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayZoom")]
public float Zoom { get => PreviewPanel.Zoom; set => PreviewPanel.Zoom = value; }
[Category("[0] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
public float Rotation { get => PreviewPanel.Rotation; set => PreviewPanel.Rotation = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayRotation")]
public float Rotation { get => PreviewPanel.Rotation; set => PreviewPanel.Rotation = value; }
[Category("[0] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
public bool FlipX { get => PreviewPanel.FlipX; set => PreviewPanel.FlipX = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayFlipHorizontal")]
public bool FlipX { get => PreviewPanel.FlipX; set => PreviewPanel.FlipX = value; }
[Category("[0] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
public bool FlipY { get => PreviewPanel.FlipY; set => PreviewPanel.FlipY = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayFlipVertical")]
public bool FlipY { get => PreviewPanel.FlipY; set => PreviewPanel.FlipY = value; }
[Category("[0] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryCustom")]
public bool RenderSelectedOnly { get => PreviewPanel.RenderSelectedOnly; set => PreviewPanel.RenderSelectedOnly = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayRenderSelected")]
public bool RenderSelectedOnly { get => PreviewPanel.RenderSelectedOnly; set => PreviewPanel.RenderSelectedOnly = value; }
[Category("[1] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public bool ShowAxis { get => PreviewPanel.ShowAxis; set => PreviewPanel.ShowAxis = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayShowAxis")]
public bool ShowAxis { get => PreviewPanel.ShowAxis; set => PreviewPanel.ShowAxis = value; }
[Category("[1] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public uint MaxFps { get => PreviewPanel.MaxFps; set => PreviewPanel.MaxFps = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayMaximumFrameRate")]
public uint MaxFps { get => PreviewPanel.MaxFps; set => PreviewPanel.MaxFps = value; }
[Editor(typeof(SFMLColorEditor), typeof(UITypeEditor))] [Editor(typeof(SFMLColorEditor), typeof(UITypeEditor))]
[TypeConverter(typeof(SFMLColorConverter))] [TypeConverter(typeof(SFMLColorConverter))]
[Category("[1] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public SFML.Graphics.Color BackgroundColor { get => PreviewPanel.BackgroundColor; set => PreviewPanel.BackgroundColor = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayBackgroundColor")]
public SFML.Graphics.Color BackgroundColor { get => PreviewPanel.BackgroundColor; set => PreviewPanel.BackgroundColor = value; }
} }
} }

View File

@@ -0,0 +1,123 @@
<?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>
<data name="about" xml:space="preserve">
<value>About</value>
</data>
</root>

View File

@@ -0,0 +1,323 @@
<?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>
<data name="panel_Render.ToolTip" xml:space="preserve">
<value />
</data>
<data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA8iMAAAJNU0Z0AUkBTAIBAQcB
AAGsAQABrAEAAR8BAAEYAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABfAMAATADAAEBAQABIAYAAV0+
AAMEAQUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9DAAH/AwAB/wMAAf8DAAH/A1UB
sWQAA1kB7wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/Ay0BRbcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9cAANEAXgDAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/swAB/wMAAf8DAAH/AwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/AwAB
/zcAAf8DAAH/BwAB/wMAAf8DAAH/AwAB/wMAAf9XAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf+vAAH/AwAB/wNRAaQnAAH/AwAB/wMAAf8DAAH/MwAB/wMAAf8IAANOAZcDAAH/AwAB/wMAAf8D
AAH/Ay4BSE8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB/+AAAxUBHQMAAf8DAAH/AwAB/y8AAf8DAAH/EwAB
/wMAAf8DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf/kAAMmATgDAAH/AwAB/wMAAf8r
AAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8DAAH/QwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/6wAB/wMAAf8D
AAH/KwAB/wMAAf8cAANGAfYDAAH/AwAB/wMAAf8DAAH/AwQBBTsAAf8DAAH/AwAB/0sAAf8DAAH/AwAB
/+8AAf8DAAH/AwAB/ycAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf9LAAH/AwAB
/wMAAf/vAAH/AwAB/wMAAf8nAAH/AwAB/ygAAwcBCQMAAf8DAAH/AwAB/wMAAf8DYAHjLwAB/wMAAf8D
AAH/SwAB/wMAAf8DAAH/7AADIAEtAwAB/wMAAf8nAAH/AwAB/zMAAf8DAAH/AwAB/wMAAf8DAAH/KwAB
/wMAAf8DAAH/SwAB/wMAAf8DAAH/8wAB/wMAAf8nAAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8nAAH/AwAB
/wMAAf9LAAH/AwAB/wMAAf/zAAH/AwAB/ycAAf8DAAH/PAADPwFsAwAB/wMAAf8nAAH/AwAB/wMAAf9L
AAH/AwAB/wMAAf/zAAH/AwAB/ycAAf8DAAH/OwAB/wMAAf8DAAH/AwAB/ycAAf8DAAH/AwAB/0sAAf8D
AAH/AwAB/5sAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/NAADCAEKAwAB/wMAAf8nAAH/AwAB
/zAAA10BzgMAAf8DAAH/AwAB/wMAAf8EAScAAf8DAAH/AwAB/0sAAf8DAAH/AwAB/5QAAwUBBgMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/zMAAf8DAAH/AwAB/ycAAf8DAAH/LwAB/wMAAf8D
AAH/AwAB/wMAAf8vAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf+UAAMFAQYDAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8zAAH/AwAB/wMAAf8nAAH/AwAB/ycAAf8DAAH/AwAB/wMAAf8DAAH/NwAB
/wMAAf8DAAH/SwAB/wMAAf8DAAH/lAADBQEGAwAB/wMAAf8PAAH/AwAB/wMAAf8DFQEcLwAB/wMAAf8D
AAH/KwAB/wMAAf8cAAM9AWkDAAH/AwAB/wMAAf8DAAH/A0MBdjsAAf8DAAH/AwAB/0sAAf8DAAH/AwAB
/5QAAwUBBgMAAf8DAAH/CwAB/wMAAf8DAAH/AxMBGjMAAf8DAAH/AwAB/ysAAf8DAAH/GwAB/wMAAf8D
AAH/AwAB/wMAAf9DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf+UAAMFAQYDAAH/AwAB/wcAAf8DAAH/AwAB
/wMbASYzAAH/AwAB/wMAAf8vAAH/AwAB/xMAAf8DAAH/AwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/SwAB
/wMAAf8DAAH/lAADBQEGAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMdASgkAANbAe4DAAH/AwAB
/wMAAf8EAS8AAf8DAAH/CAADGAEhAwAB/wMAAf8DAAH/AwAB/wNcActPAAH/AwAB/wMAAf9LAAH/AwAB
/wMAAf+UAAMFAQYDAAH/AwAB/wMAAf8DAAH/A2AB4wMAAf8DAAH/AwAB/wMAAf8DUAGfFwAB/wMAAf8D
AAH/AwAB/wMAAf83AAH/AwAB/wcAAf8DAAH/AwAB/wMAAf8DAAH/VwAB/wMAAf8DAAH/AwAB/wMqAUAD
KgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUAD
AAH/AwAB/wMAAf8DAAH/mwAB/wMAAf8DAAH/Ax0BKQQAAwIBAwMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DBwEJWAAD
WQHDAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/5wAAxIBFwMAAf8UAANKAYkDAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9DAAH/AwAB/wMAAf8DAAH/AyEB+2cAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wNbAcXIAANGAYADWgG/Ay4BSFQAA1oBv3QAA0YBgANaAb8DWgG/A1oBvwNaAb8DWgG/A1oB
vwNaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvwNaAb8DLgFIpwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/FAADPQFpAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/EwAB/wMAAf8DAAH/LwAB/wMAAf8DAAH/KAADGQEiAwAB/wMAAf8jAAH/AwAB/wMAAf8oAAM/AW0D
AAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/KwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/FAADAwEEAwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DAAH/AwAB/yQAA1YBtgMAAf8DAAH/AwAB
/wMAAf8kAAM7AfkDAAH/AwAB/xwAA1kB8QMAAf8DAAH/AwAB/wMAAf8DPgH4IwAB/wMAAf8DAAH/NwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8D
AAH/AwAB/wMAAf8DAAH/IAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8gAAM7AfkDAAH/AwAB/xwAA1kB
8QMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/x8AAf8DAAH/AwAB/zcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/ycAAf8DAAH/AwAB
/wMAAf8DAAH/AxQB/jMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wNZAbsYAANWAbUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DUQGeGAADOwH5AwAB/wMAAf8c
AANZAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A1ABnRcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB
/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB
/wMAAf8rAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8D
AAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB/wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAzsB+QMAAf8D
AAH/HAADWQHxAwAB/wMAAf8DEQEWBAEDAAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/zcAAf8D
AAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswcAAf8D
AAH/AwAB/wMAAf8jAAH/AwAB/wMAAf8DAAH/BwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoBwAB
/wMAAf8DAAH/AwAB/wMAAf8QAANWAbUDAAH/AwAB/wMzAVAHAAH/AwAB/wMAAf8DAAH/AwAB/xAAAzsB
+QMAAf8DAAH/HAADWQHxAwAB/wMAAf8DEQEWCwAB/wMAAf8DAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf83
AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wNWAbML
AAH/AwAB/wMAAf8DFAH+GwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/Az0B
aAgAA2AB2wMAAf8DAAH/AwAB/wMAAf8MAANWAbUDAAH/AwAB/wMzAVAIAANgAeMDAAH/AwAB/wMAAf8D
AAH/DAADOwH5AwAB/wMAAf8cAANZAfEDAAH/AwAB/wMRARYMAAMzAVIDAAH/AwAB/wMAAf8DAAH/AwAB
/wcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB
/ycAAf8DAAH/A1YBsw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/DAAD
VAGrAwAB/wMAAf8DPQFoDAADJQE3AwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAzIB
TwMAAf8DAAH/AwAB/wMAAf8IAAM7AfkDAAH/AwAB/xwAA1kB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB
/wMAAf8DAAH/AxQB/gMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB
/wMAAf8DAAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xAAAwwBDwMAAf8D
RgH2DAADVAGrAwAB/wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8D
AAH/AwAB/wMAAf8EAAM7AfkDAAH/AwAB/xwAA1kB8QMAAf8DAAH/AxEBFhgAA1oB6QMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB
/0cAAf8DAAH/AwAB/wMUAf4DAAH/AwAB/wMAAf8DAAH/LAADVAGrAwAB/wMAAf8DPQFoGwAB/wMAAf8D
AAH/AwAB/wNdAc4DAAH/AwAB/wMzAVAbAAH/AwAB/wMAAf8DAAH/AygB+gMAAf8DAAH/HAADWQHxAwAB
/wMAAf8DEQEWIwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB
/wMAAf8PAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8wAANUAasDAAH/AwAB/wM9AWgf
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DMwFQHwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/HAADWQHxAwAB
/wMAAf8DEQEWJwAB/wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB
/w8AAf8DAAH/AwAB/08AAf8DAAH/AwAB/wMAAf80AANUAasDAAH/AwAB/wM9AWgjAAH/AwAB/wMAAf8D
AAH/AwAB/wMzAVAjAAH/AwAB/wMAAf8DAAH/AwAB/xwAA1kB8QMAAf8DAAH/AxEBFisAAf8DAAH/AwAB
/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB
/wMAAf8DAAH/AxQB/jAAA1QBqwMAAf8DAAH/Az0BaB8AAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMzAVAf
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8cAANZAfEDAAH/AwAB/wMRARYkAANcAdkDAAH/AwAB/wMAAf83
AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf9HAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/ywAA1QBqwMAAf8DAAH/Az0BaBsAAf8DAAH/AwAB/wMAAf8DWQHxAwAB
/wMAAf8DMwFQGwAB/wMAAf8DAAH/AwAB/wMUAf4DAAH/AwAB/xwAA1kB8QMAAf8DAAH/AxEBFiMAAf8D
AAH/AwAB/wMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8D
AAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xcAAf8DWAG4DAADVAGrAwAB
/wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8DAAH/AwAB/wMAAf8E
AAM7AfkDAAH/AwAB/xwAA1kB8QMAAf8DAAH/AxEBFhgAAzABSgMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YB
sw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DFAH+DwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D
PQFoEwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAwkBDAMAAf8DAAH/AwAB/wMAAf8I
AAM7AfkDAAH/AwAB/xwAA1kB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB/wMAAf8DAAH/AygB/QMAAf8D
AAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/JwAB/wMAAf8D
VgGzCwAB/wMAAf8DAAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8MAANUAasDAAH/AwAB
/wM9AWgIAAM6AWADAAH/AwAB/wMAAf8DAAH/DAADVgG1AwAB/wMAAf8DMwFQCAADSwGMAwAB/wMAAf8D
AAH/AwAB/wwAAzsB+QMAAf8DAAH/HAADWQHxAwAB/wMAAf8DEQEWDAADBwEJAwAB/wMAAf8DAAH/AwAB
/wMAAf8HAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB
/wMAAf8nAAH/AwAB/wNWAbMHAAH/AwAB/wMAAf8DAAH/IwAB/wMAAf8DAAH/AwAB/wcAAf8DAAH/AwAB
/wwAA1QBqwMAAf8DAAH/Az0BaAcAAf8DAAH/AwAB/wMAAf8DAAH/EAADVgG1AwAB/wMAAf8DMwFQBwAB
/wMAAf8DAAH/AwAB/wMAAf8QAAM7AfkDAAH/AwAB/xwAA1kB8QMAAf8DAAH/AxEBFgsAAf8DAAH/AwAB
/wMAAf8DAAH/A08BmQsAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB
/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB/wMAAf8rAAH/AwAB/wMAAf8DFAH+AwAB
/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8DAAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB
/wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAzsB+QMAAf8DAAH/HAADWQHxAwAB/wMAAf8DEQEWBwAB
/wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB
/wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8zAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DUQH0GAADVgG1AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/A10B7BgAAzsB+QMAAf8DAAH/HAADWQHxAwAB/wMAAf8DYQHrAwAB/wMAAf8DAAH/AwAB
/wNRAfQXAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB
/wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D
AAH/AwAB/wMAAf8DQwF3HAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8DMAFMHAADOwH5AwAB/wMAAf8c
AANZAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8fAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8DKgFAAyoB
QAMqAUADAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8DKgFAAyoBQAMqAUADAAH/AwAB/wMAAf8nAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8bAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwYBCCAAA1YBtgMAAf8DAAH/AwAB/wMAAf8DAgEDIAAD
OwH5AwAB/wMAAf8cAANZAfEDAAH/AwAB/wMAAf8DAAH/AwAB/yMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/ycAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xQAA0wBkAMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/y8AAf8DAAH/AwAB/ygAAzYBWAMAAf8DAAH/IwAB
/wMAAf8DAAH/Aw0BESQAA1UBrQMAAf8DAAH/OwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8sAANaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvwNaAb8DFQEcGAAD
TwGZA1oBvwNaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvxgAA04BlzQAA0sBjTAAAwwBDygAA1ABmjAAAygB
PEAAAzgBWwNaAb8DWgG/A1oBvwMwAUwYAANEAXoDWgG/A1oBvwNaAb8DIAEtHAABQgFNAT4HAAE+AwAB
KAMAAXwDAAEwAwABAQEAAQEGAAEDFgAD/wEAAf8B4AEHAf8B+AE/Av8B4AIAAXgEAAH/AcABAQH/AfgB
HwL/AcACAAF4BAAB/wGDAeAB/wH5AQcC/wHAAgABOAQAAf8BjwH4AX8B+QGBAv8BxwH/Af4BOAQAAv8B
/AE/AfkB4AL/AccB/wH+ATgEAAL/Af4BHwH5AfgBPwH/AccB/wH+ATgEAAP/AR8B+QH8AQ8B/wHHAf8B
/gE4BAAD/wGPAfkB/wEHAf8BxwH/Af4BOAQAA/8BjwH5Af8BgQH/AccB/wH+ATgEAAP/AY8B+QH/AeAB
/wHHAf8B/gE4BAAD/wHPAfkB/wH4AX8BxwH/Af4BOAQAA/8BzwH5Af8B/AF/AccB/wH+ATgEAAP/Ac8B
+QH/AfgBfwHHAf8B/gE4BAAB8AEPAf8BjwH5Af8B4AF/AccB/wH+ATgEAAHgAQcB/wGPAfkB/wHBAf8B
xwH/Af4BOAQAAeABBwH/AY8B+QH/AQcB/wHHAf8B/gE4BAAB4wGHAf8BHwH5AfwBDwH/AccB/wH+ATgE
AAHjAQ8B/wEfAfkB+AE/Af8BxwH/Af4BOAQAAeIBHwH+AT8B+QHgAv8BxwH/Af4BOAQAAeABDwH4AT8B
+QGBAv8BxwH/Af4BOAQAAeABAwHgAf8B+QEHAv8BwAIAATgEAAHwAYABAQH/AfgBDwL/AcACAAF4BAAB
8wHgAQcB/wH4AT8C/wHgAgABeAQAAf8B/gE/Af8B/gP/AfgBAAEBAfgEAAHwAQcBwAEPAR8B/AF/AeMB
/AF/AeMB/wHwAR4BAwLwAQcBwAEOAQ8B+AE/AeMB+AEfAeMB/wHgAQwBAQLwAX8B/gEOAQcB+AEfAeMB
+AEPAeMB/wHgAQwBAQLwAT8B/AEOAQEB+AEHAeMB+AEDAeMB/wHjAYwBcQLwAR8B+AEOAQAB+AEDAeMB
+AEBAeMB/wHjAYwBcQHwAfEBDwHwAY4BEAF4AUEB4wH4AWAB4wH/AeMBjAFxAfAB8QGHAeEBjgEYATgB
YAHjAfgBcAEjAf8B4wGMAXEB8AHxAsMBjgEcARgBcAFjAfgBfAEDAf8B4wGMAXEB8AHzAeEBhwGOAR8B
CAF8ASMB+AF+AQMB/wHjAYwBcQHwAf8B8AEPAf4BHwGAAX4BAwH4AX8BgwH/AeMBjAFxAfAB/wH4AR8B
/gEfAcABfwEDAfgBfwHDAf8B4wGMAXEB8AH/AfwBPwH+AR8B4AF/AYMB+AF/AeMB/wHjAYwBcQHwAf8B
+AEfAf4BHwHAAX8BAwH4AX8BwwH/AeMBjAFxAfAB/wHwAQ8B/gEfAYABfgEDAfgBfwGDAf8B4wGMAXEB
8AHzAeEBhwHOAR8BCAF8ASMB+AF+AQMB/wHjAYwBcQHwAfECwwGOAR4BGAFwAWMB+AF8AQMB/wHjAYwB
cQHwAfEBhwHhAY4BGAE4AWAB4wH4AXABIwH/AeMBjAFxAfAB8QEPAfABjgEQAXgBQQHjAfgBYAFjAf8B
4wGMAXEC8AEfAfgBDgEAAfgBAwHjAfgBQQHjAf8B4wGMAXEC8AE/AfwBDgEBAfgBBwHjAfgBAwHjAf8B
4wGMAXEC8AF/Af4BDgEDAfgBDwHjAfgBDwHjAf8B4AEMAQEC8AEHAeABDgEHAfgBHwHjAfgBHwHjAf8B
4AEMAQEC8AEHAcABDwEfAfwBfwHjAfwBPwHjAf8B8AEeAQMB8AH4AQcB4AEfAb8B/gH/AfcB/gH/AfcB
/wH4AT8BBwHwCw==
</value>
</data>
<data name="button_Stop.ToolTip" xml:space="preserve">
<value>Stop playback and reset time.</value>
</data>
<data name="button_Restart.ToolTip" xml:space="preserve">
<value>Play from the beginning.</value>
</data>
<data name="button_Start.ToolTip" xml:space="preserve">
<value>Play/Pause</value>
</data>
<data name="button_ForwardStep.ToolTip" xml:space="preserve">
<value>Fast forward 1 frame</value>
</data>
<data name="button_ForwardFast.ToolTip" xml:space="preserve">
<value>Fast forward 10 frames.</value>
</data>
<data name="button_FullScreen.ToolTip" xml:space="preserve">
<value>Fullscreen preview.</value>
</data>
<data name="flowLayoutPanel1.ToolTip" xml:space="preserve">
<value />
</data>
<data name="panel_RenderContainer.ToolTip" xml:space="preserve">
<value />
</data>
<data name="panel_ViewContainer.ToolTip" xml:space="preserve">
<value />
</data>
<data name="tableLayoutPanel1.ToolTip" xml:space="preserve">
<value />
</data>
<data name="spinePreviewFullScreenForm.ToolTip" xml:space="preserve">
<value />
</data>
<data name="wallpaperForm.ToolTip" xml:space="preserve">
<value />
</data>
<data name="$this.ToolTip" xml:space="preserve">
<value />
</data>
</root>

View File

@@ -117,17 +117,231 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<value>17, 17</value> <data name="button_Start.Size" type="System.Drawing.Size, System.Drawing">
</metadata> <value>59, 34</value>
</data>
<data name="button_FullScreen.Location" type="System.Drawing.Point, System.Drawing">
<value>317, 2</value>
</data>
<data name="&gt;&gt;button_Restart.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;button_FullScreen.Name" xml:space="preserve">
<value>button_FullScreen</value>
</data>
<data name="panel_Render.ToolTip" xml:space="preserve">
<value />
</data>
<data name="&gt;&gt;panel_RenderContainer.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="panel_RenderContainer.ToolTip" xml:space="preserve">
<value />
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="panel_ViewContainer.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>466, 530</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="panel_Render.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="panel_ViewContainer.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="button_Start.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="button_ForwardFast.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="&gt;&gt;button_Restart.Name" xml:space="preserve">
<value>button_Restart</value>
</data>
<data name="button_Stop.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Start.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
<value>Center</value>
</data>
<data name="&gt;&gt;wallpaperForm.Name" xml:space="preserve">
<value>wallpaperForm</value>
</data>
<data name="&gt;&gt;panel_Render.Name" xml:space="preserve">
<value>panel_Render</value>
</data>
<data name="panel_Render.Location" type="System.Drawing.Point, System.Drawing">
<value>114, 113</value>
</data>
<data name="button_Start.ImageKey" xml:space="preserve">
<value>pause</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="flowLayoutPanel1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panel_ViewContainer" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Percent,100,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="button_ForwardStep.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="panel_RenderContainer.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="button_ForwardStep.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>11, 2, 11, 2</value>
</data>
<data name="flowLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="button_FullScreen.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 34</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;button_Stop.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="button_Restart.Location" type="System.Drawing.Point, System.Drawing">
<value>65, 2</value>
</data>
<data name="&gt;&gt;button_ForwardStep.Name" xml:space="preserve">
<value>button_ForwardStep</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;button_FullScreen.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="button_ForwardFast.ToolTip" xml:space="preserve">
<value>快进 10 帧</value>
</data>
<data name="button_ForwardFast.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="panel_RenderContainer.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;button_ForwardStep.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="flowLayoutPanel1.ToolTip" xml:space="preserve">
<value />
</data>
<data name="button_FullScreen.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;panel_ViewContainer.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel_Render.Parent" xml:space="preserve">
<value>panel_RenderContainer</value>
</data>
<data name="button_ForwardFast.ImageKey" xml:space="preserve">
<value>forward-fast</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>44, 492</value>
</data>
<data name="wallpaperForm.ToolTip" xml:space="preserve">
<value />
</data>
<data name="&gt;&gt;button_ForwardStep.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Stop.ImageKey" xml:space="preserve">
<value>stop</value>
</data>
<data name="panel_ViewContainer.ToolTip" xml:space="preserve">
<value />
</data>
<data name="spinePreviewFullScreenForm.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>2560, 1440</value>
</data>
<data name="&gt;&gt;panel_RenderContainer.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;panel_RenderContainer.Name" xml:space="preserve">
<value>panel_RenderContainer</value>
</data>
<data name="button_ForwardFast.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_Stop.ToolTip" xml:space="preserve">
<value>停止播放并重置时间到初始</value>
</data>
<data name="&gt;&gt;imageList.Name" xml:space="preserve">
<value>imageList</value>
</data>
<data name="button_FullScreen.ToolTip" xml:space="preserve">
<value>全屏预览</value>
</data>
<data name="&gt;&gt;panel_ViewContainer.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;wallpaperForm.Type" xml:space="preserve">
<value>SpineViewer.WallpaperForm, SpineViewer, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="spinePreviewFullScreenForm.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>Manual</value>
</data>
<data name="button_Restart.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_ForwardStep.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;panel_ViewContainer.Name" xml:space="preserve">
<value>panel_ViewContainer</value>
</data>
<data name="&gt;&gt;button_Stop.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_FullScreen.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="button_FullScreen.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="button_ForwardFast.Location" type="System.Drawing.Point, System.Drawing">
<value>254, 2</value>
</data>
<data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA8iMAAAJNU0Z0AUkBTAIBAQcB SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA9CMAAAJNU0Z0AUkBTAIBAQcB
AAGQAQABkAEAAR8BAAEYAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABfAMAATADAAEBAQABIAYAAV0+ AAGkAQABqAEAAR8BAAEYAQAE/wEhARAI/wFCAU0BNgcAATYDAAEoAwABfAMAATADAAEBAQABIAYAAV0+
AAMEAQUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9DAAH/AwAB/wMAAf8DAAH/A1UB AAMEAQUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9DAAH/AwAB/wMAAf8DAAH/A1UB
sWQAA1gB7wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D sWQAA1kB7wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/Ay0BRbcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/Ay0BRbcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9cAANEAXgDAAH/AwAB AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9cAANEAXgDAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
@@ -138,7 +352,7 @@
AAH/Ay4BSE8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB/+AAAxUBHQMAAf8DAAH/AwAB/y8AAf8DAAH/EwAB AAH/Ay4BSE8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB/+AAAxUBHQMAAf8DAAH/AwAB/y8AAf8DAAH/EwAB
/wMAAf8DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf/kAAMmATgDAAH/AwAB/wMAAf8r /wMAAf8DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf/kAAMmATgDAAH/AwAB/wMAAf8r
AAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8DAAH/QwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/6wAB/wMAAf8D AAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8DAAH/QwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/6wAB/wMAAf8D
AAH/KwAB/wMAAf8cAANCAfYDAAH/AwAB/wMAAf8DAAH/AwQBBTsAAf8DAAH/AwAB/0sAAf8DAAH/AwAB AAH/KwAB/wMAAf8cAANEAfYDAAH/AwAB/wMAAf8DAAH/AwQBBTsAAf8DAAH/AwAB/0sAAf8DAAH/AwAB
/+8AAf8DAAH/AwAB/ycAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf9LAAH/AwAB /+8AAf8DAAH/AwAB/ycAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf9LAAH/AwAB
/wMAAf/vAAH/AwAB/wMAAf8nAAH/AwAB/ygAAwcBCQMAAf8DAAH/AwAB/wMAAf8DYAHjLwAB/wMAAf8D /wMAAf/vAAH/AwAB/wMAAf8nAAH/AwAB/ygAAwcBCQMAAf8DAAH/AwAB/wMAAf8DYAHjLwAB/wMAAf8D
AAH/SwAB/wMAAf8DAAH/7AADIAEtAwAB/wMAAf8nAAH/AwAB/zMAAf8DAAH/AwAB/wMAAf8DAAH/KwAB AAH/SwAB/wMAAf8DAAH/7AADIAEtAwAB/wMAAf8nAAH/AwAB/zMAAf8DAAH/AwAB/wMAAf8DAAH/KwAB
@@ -155,7 +369,7 @@
/5QAAwUBBgMAAf8DAAH/CwAB/wMAAf8DAAH/AxMBGjMAAf8DAAH/AwAB/ysAAf8DAAH/GwAB/wMAAf8D /5QAAwUBBgMAAf8DAAH/CwAB/wMAAf8DAAH/AxMBGjMAAf8DAAH/AwAB/ysAAf8DAAH/GwAB/wMAAf8D
AAH/AwAB/wMAAf9DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf+UAAMFAQYDAAH/AwAB/wcAAf8DAAH/AwAB AAH/AwAB/wMAAf9DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf+UAAMFAQYDAAH/AwAB/wcAAf8DAAH/AwAB
/wMbASYzAAH/AwAB/wMAAf8vAAH/AwAB/xMAAf8DAAH/AwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/SwAB /wMbASYzAAH/AwAB/wMAAf8vAAH/AwAB/xMAAf8DAAH/AwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/SwAB
/wMAAf8DAAH/lAADBQEGAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMdASgkAANZAe4DAAH/AwAB /wMAAf8DAAH/lAADBQEGAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMdASgkAANaAe4DAAH/AwAB
/wMAAf8EAS8AAf8DAAH/CAADGAEhAwAB/wMAAf8DAAH/AwAB/wNcActPAAH/AwAB/wMAAf9LAAH/AwAB /wMAAf8EAS8AAf8DAAH/CAADGAEhAwAB/wMAAf8DAAH/AwAB/wNcActPAAH/AwAB/wMAAf9LAAH/AwAB
/wMAAf+UAAMFAQYDAAH/AwAB/wMAAf8DAAH/A2AB4wMAAf8DAAH/AwAB/wMAAf8DUAGfFwAB/wMAAf8D /wMAAf+UAAMFAQYDAAH/AwAB/wMAAf8DAAH/A2AB4wMAAf8DAAH/AwAB/wMAAf8DUAGfFwAB/wMAAf8D
AAH/AwAB/wMAAf83AAH/AwAB/wcAAf8DAAH/AwAB/wMAAf8DAAH/VwAB/wMAAf8DAAH/AwAB/wMqAUAD AAH/AwAB/wMAAf83AAH/AwAB/wcAAf8DAAH/AwAB/wMAAf8DAAH/VwAB/wMAAf8DAAH/AwAB/wMqAUAD
@@ -173,82 +387,82 @@
AAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D AAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/KwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/FAADAwEEAwAB/wMAAf8DAAH/AwAB AAH/KwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/FAADAwEEAwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DAAH/AwAB/yQAA1YBtgMAAf8DAAH/AwAB /wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DAAH/AwAB/yQAA1YBtgMAAf8DAAH/AwAB
/wMAAf8kAAM1AfkDAAH/AwAB/xwAA1cB8QMAAf8DAAH/AwAB/wMAAf8DPAH4IwAB/wMAAf8DAAH/NwAB /wMAAf8kAAM4AfkDAAH/AwAB/xwAA1gB8QMAAf8DAAH/AwAB/wMAAf8DPQH4IwAB/wMAAf8DAAH/NwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8D /wMAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8D
AAH/AwAB/wMAAf8DAAH/IAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8gAAM1AfkDAAH/AwAB/xwAA1cB AAH/AwAB/wMAAf8DAAH/IAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8gAAM4AfkDAAH/AwAB/xwAA1gB
8QMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/x8AAf8DAAH/AwAB/zcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB 8QMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/x8AAf8DAAH/AwAB/zcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/ycAAf8DAAH/AwAB /wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/ycAAf8DAAH/AwAB
/wMAAf8DAAH/AxIB/jMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/AwAB/wMAAf8D /wMAAf8DAAH/AxMB/jMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wNZAbsYAANWAbUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DUQGeGAADNQH5AwAB/wMAAf8c AAH/AwAB/wNZAbsYAANWAbUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DUQGeGAADOAH5AwAB/wMAAf8c
AANXAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A1ABnRcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB AANYAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A1ABnRcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB
/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB /w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB
/wMAAf8rAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8D /wMAAf8rAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8D
AAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB/wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAzUB+QMAAf8D AAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB/wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAzgB+QMAAf8D
AAH/HAADVwHxAwAB/wMAAf8DEQEWBAEDAAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/zcAAf8D AAH/HAADWAHxAwAB/wMAAf8DEQEWBAEDAAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/zcAAf8D
AAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswcAAf8D AAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswcAAf8D
AAH/AwAB/wMAAf8jAAH/AwAB/wMAAf8DAAH/BwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoBwAB AAH/AwAB/wMAAf8jAAH/AwAB/wMAAf8DAAH/BwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoBwAB
/wMAAf8DAAH/AwAB/wMAAf8QAANWAbUDAAH/AwAB/wMzAVAHAAH/AwAB/wMAAf8DAAH/AwAB/xAAAzUB /wMAAf8DAAH/AwAB/wMAAf8QAANWAbUDAAH/AwAB/wMzAVAHAAH/AwAB/wMAAf8DAAH/AwAB/xAAAzgB
+QMAAf8DAAH/HAADVwHxAwAB/wMAAf8DEQEWCwAB/wMAAf8DAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf83 +QMAAf8DAAH/HAADWAHxAwAB/wMAAf8DEQEWCwAB/wMAAf8DAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf83
AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wNWAbML AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wNWAbML
AAH/AwAB/wMAAf8DEgH+GwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/Az0B AAH/AwAB/wMAAf8DEwH+GwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/Az0B
aAgAA2AB2wMAAf8DAAH/AwAB/wMAAf8MAANWAbUDAAH/AwAB/wMzAVAIAANgAeMDAAH/AwAB/wMAAf8D aAgAA2AB2wMAAf8DAAH/AwAB/wMAAf8MAANWAbUDAAH/AwAB/wMzAVAIAANgAeMDAAH/AwAB/wMAAf8D
AAH/DAADNQH5AwAB/wMAAf8cAANXAfEDAAH/AwAB/wMRARYMAAMzAVIDAAH/AwAB/wMAAf8DAAH/AwAB AAH/DAADOAH5AwAB/wMAAf8cAANYAfEDAAH/AwAB/wMRARYMAAMzAVIDAAH/AwAB/wMAAf8DAAH/AwAB
/wcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB /wcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB
/ycAAf8DAAH/A1YBsw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/DAAD /ycAAf8DAAH/A1YBsw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/DAAD
VAGrAwAB/wMAAf8DPQFoDAADJQE3AwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAzIB VAGrAwAB/wMAAf8DPQFoDAADJQE3AwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAzIB
TwMAAf8DAAH/AwAB/wMAAf8IAAM1AfkDAAH/AwAB/xwAA1cB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB TwMAAf8DAAH/AwAB/wMAAf8IAAM4AfkDAAH/AwAB/xwAA1gB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB
/wMAAf8DAAH/AxIB/gMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB /wMAAf8DAAH/AxMB/gMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB
/wMAAf8DAAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xAAAwwBDwMAAf8D /wMAAf8DAAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xAAAwwBDwMAAf8D
QgH2DAADVAGrAwAB/wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8D RAH2DAADVAGrAwAB/wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8D
AAH/AwAB/wMAAf8EAAM1AfkDAAH/AwAB/xwAA1cB8QMAAf8DAAH/AxEBFhgAA1oB6QMAAf8DAAH/AwAB AAH/AwAB/wMAAf8EAAM4AfkDAAH/AwAB/xwAA1gB8QMAAf8DAAH/AxEBFhgAA1oB6QMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB /wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB
/0cAAf8DAAH/AwAB/wMSAf4DAAH/AwAB/wMAAf8DAAH/LAADVAGrAwAB/wMAAf8DPQFoGwAB/wMAAf8D /0cAAf8DAAH/AwAB/wMTAf4DAAH/AwAB/wMAAf8DAAH/LAADVAGrAwAB/wMAAf8DPQFoGwAB/wMAAf8D
AAH/AwAB/wNdAc4DAAH/AwAB/wMzAVAbAAH/AwAB/wMAAf8DAAH/AyYB+gMAAf8DAAH/HAADVwHxAwAB AAH/AwAB/wNdAc4DAAH/AwAB/wMzAVAbAAH/AwAB/wMAAf8DAAH/AycB+gMAAf8DAAH/HAADWAHxAwAB
/wMAAf8DEQEWIwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB /wMAAf8DEQEWIwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB
/wMAAf8PAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8wAANUAasDAAH/AwAB/wM9AWgf /wMAAf8PAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8wAANUAasDAAH/AwAB/wM9AWgf
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DMwFQHwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/HAADVwHxAwAB AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DMwFQHwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/HAADWAHxAwAB
/wMAAf8DEQEWJwAB/wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB /wMAAf8DEQEWJwAB/wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB
/w8AAf8DAAH/AwAB/08AAf8DAAH/AwAB/wMAAf80AANUAasDAAH/AwAB/wM9AWgjAAH/AwAB/wMAAf8D /w8AAf8DAAH/AwAB/08AAf8DAAH/AwAB/wMAAf80AANUAasDAAH/AwAB/wM9AWgjAAH/AwAB/wMAAf8D
AAH/AwAB/wMzAVAjAAH/AwAB/wMAAf8DAAH/AwAB/xwAA1cB8QMAAf8DAAH/AxEBFisAAf8DAAH/AwAB AAH/AwAB/wMzAVAjAAH/AwAB/wMAAf8DAAH/AwAB/xwAA1gB8QMAAf8DAAH/AxEBFisAAf8DAAH/AwAB
/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB /zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB
/wMAAf8DAAH/AxIB/jAAA1QBqwMAAf8DAAH/Az0BaB8AAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMzAVAf /wMAAf8DAAH/AxMB/jAAA1QBqwMAAf8DAAH/Az0BaB8AAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMzAVAf
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8cAANXAfEDAAH/AwAB/wMRARYkAANcAdkDAAH/AwAB/wMAAf83 AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8cAANYAfEDAAH/AwAB/wMRARYkAANcAdkDAAH/AwAB/wMAAf83
AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf9HAAH/AwAB/wMAAf8D AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf9HAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/ywAA1QBqwMAAf8DAAH/Az0BaBsAAf8DAAH/AwAB/wMAAf8DVwHxAwAB AAH/AwAB/wMAAf8DAAH/AwAB/ywAA1QBqwMAAf8DAAH/Az0BaBsAAf8DAAH/AwAB/wMAAf8DWAHxAwAB
/wMAAf8DMwFQGwAB/wMAAf8DAAH/AwAB/wMSAf4DAAH/AwAB/xwAA1cB8QMAAf8DAAH/AxEBFiMAAf8D /wMAAf8DMwFQGwAB/wMAAf8DAAH/AwAB/wMTAf4DAAH/AwAB/xwAA1gB8QMAAf8DAAH/AxEBFiMAAf8D
AAH/AwAB/wMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8D AAH/AwAB/wMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8D
AAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xcAAf8DWAG4DAADVAGrAwAB AAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xcAAf8DWAG4DAADVAGrAwAB
/wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8DAAH/AwAB/wMAAf8E /wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8DAAH/AwAB/wMAAf8E
AAM1AfkDAAH/AwAB/xwAA1cB8QMAAf8DAAH/AxEBFhgAAzABSgMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB AAM4AfkDAAH/AwAB/xwAA1gB8QMAAf8DAAH/AxEBFhgAAzABSgMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YB /zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YB
sw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DEgH+DwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D sw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DEwH+DwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D
PQFoEwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAwkBDAMAAf8DAAH/AwAB/wMAAf8I PQFoEwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAwkBDAMAAf8DAAH/AwAB/wMAAf8I
AAM1AfkDAAH/AwAB/xwAA1cB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB/wMAAf8DAAH/AyQB/QMAAf8D AAM4AfkDAAH/AwAB/xwAA1gB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB/wMAAf8DAAH/AyYB/QMAAf8D
AAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/JwAB/wMAAf8D AAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/JwAB/wMAAf8D
VgGzCwAB/wMAAf8DAAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8MAANUAasDAAH/AwAB VgGzCwAB/wMAAf8DAAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8MAANUAasDAAH/AwAB
/wM9AWgIAAM6AWADAAH/AwAB/wMAAf8DAAH/DAADVgG1AwAB/wMAAf8DMwFQCAADSwGMAwAB/wMAAf8D /wM9AWgIAAM6AWADAAH/AwAB/wMAAf8DAAH/DAADVgG1AwAB/wMAAf8DMwFQCAADSwGMAwAB/wMAAf8D
AAH/AwAB/wwAAzUB+QMAAf8DAAH/HAADVwHxAwAB/wMAAf8DEQEWDAADBwEJAwAB/wMAAf8DAAH/AwAB AAH/AwAB/wwAAzgB+QMAAf8DAAH/HAADWAHxAwAB/wMAAf8DEQEWDAADBwEJAwAB/wMAAf8DAAH/AwAB
/wMAAf8HAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB /wMAAf8HAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB
/wMAAf8nAAH/AwAB/wNWAbMHAAH/AwAB/wMAAf8DAAH/IwAB/wMAAf8DAAH/AwAB/wcAAf8DAAH/AwAB /wMAAf8nAAH/AwAB/wNWAbMHAAH/AwAB/wMAAf8DAAH/IwAB/wMAAf8DAAH/AwAB/wcAAf8DAAH/AwAB
/wwAA1QBqwMAAf8DAAH/Az0BaAcAAf8DAAH/AwAB/wMAAf8DAAH/EAADVgG1AwAB/wMAAf8DMwFQBwAB /wwAA1QBqwMAAf8DAAH/Az0BaAcAAf8DAAH/AwAB/wMAAf8DAAH/EAADVgG1AwAB/wMAAf8DMwFQBwAB
/wMAAf8DAAH/AwAB/wMAAf8QAAM1AfkDAAH/AwAB/xwAA1cB8QMAAf8DAAH/AxEBFgsAAf8DAAH/AwAB /wMAAf8DAAH/AwAB/wMAAf8QAAM4AfkDAAH/AwAB/xwAA1gB8QMAAf8DAAH/AxEBFgsAAf8DAAH/AwAB
/wMAAf8DAAH/A08BmQsAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB /wMAAf8DAAH/A08BmQsAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB
/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB/wMAAf8rAAH/AwAB/wMAAf8DEgH+AwAB /w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB/wMAAf8rAAH/AwAB/wMAAf8DEwH+AwAB
/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8DAAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB /wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8DAAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB
/wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAzUB+QMAAf8DAAH/HAADVwHxAwAB/wMAAf8DEQEWBwAB /wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAzgB+QMAAf8DAAH/HAADWAHxAwAB/wMAAf8DEQEWBwAB
/wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB /wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB
/wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8zAAH/AwAB/wMAAf8DAAH/AwAB /wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8zAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DTQH0GAADVgG1AwAB/wMAAf8DAAH/AwAB /wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DTwH0GAADVgG1AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/A10B7BgAAzUB+QMAAf8DAAH/HAADVwHxAwAB/wMAAf8DYQHrAwAB/wMAAf8DAAH/AwAB /wMAAf8DAAH/A10B7BgAAzgB+QMAAf8DAAH/HAADWAHxAwAB/wMAAf8DYQHrAwAB/wMAAf8DAAH/AwAB
/wNNAfQXAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB /wNPAfQXAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB
/wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D /wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D
AAH/AwAB/wMAAf8DQwF3HAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8DMAFMHAADNQH5AwAB/wMAAf8c AAH/AwAB/wMAAf8DQwF3HAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8DMAFMHAADOAH5AwAB/wMAAf8c
AANXAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8fAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8DKgFAAyoB AANYAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8fAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8DKgFAAyoB
QAMqAUADAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8DKgFAAyoBQAMqAUADAAH/AwAB/wMAAf8nAAH/AwAB QAMqAUADAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8DKgFAAyoBQAMqAUADAAH/AwAB/wMAAf8nAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8bAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8bAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwYBCCAAA1YBtgMAAf8DAAH/AwAB/wMAAf8DAgEDIAAD /wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwYBCCAAA1YBtgMAAf8DAAH/AwAB/wMAAf8DAgEDIAAD
NQH5AwAB/wMAAf8cAANXAfEDAAH/AwAB/wMAAf8DAAH/AwAB/yMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB OAH5AwAB/wMAAf8cAANYAfEDAAH/AwAB/wMAAf8DAAH/AwAB/yMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/ycAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xQAA0wBkAMAAf8DAAH/AwAB/wMAAf8D /ycAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xQAA0wBkAMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/y8AAf8DAAH/AwAB/ygAAzYBWAMAAf8DAAH/IwAB AAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/y8AAf8DAAH/AwAB/ygAAzYBWAMAAf8DAAH/IwAB
@@ -278,16 +492,277 @@
4wGMAXEC8AEfAfgBDgEAAfgBAwHjAfgBQQHjAf8B4wGMAXEC8AE/AfwBDgEBAfgBBwHjAfgBAwHjAf8B 4wGMAXEC8AEfAfgBDgEAAfgBAwHjAfgBQQHjAf8B4wGMAXEC8AE/AfwBDgEBAfgBBwHjAfgBAwHjAf8B
4wGMAXEC8AF/Af4BDgEDAfgBDwHjAfgBDwHjAf8B4AEMAQEC8AEHAeABDgEHAfgBHwHjAfgBHwHjAf8B 4wGMAXEC8AF/Af4BDgEDAfgBDwHjAfgBDwHjAf8B4AEMAQEC8AEHAeABDgEHAfgBHwHjAfgBHwHjAf8B
4AEMAQEC8AEHAcABDwEfAfwBfwHjAfwBPwHjAf8B8AEeAQMB8AH4AQcB4AEfAb8B/gH/AfcB/gH/AfcB 4AEMAQEC8AEHAcABDwEfAfwBfwHjAfwBPwHjAf8B8AEeAQMB8AH4AQcB4AEfAb8B/gH/AfcB/gH/AfcB
/wH4AT8BBwHwCw== /wH4AT8BBwHwFgAL
</value> </value>
</data> </data>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <data name="button_ForwardStep.ImageKey" xml:space="preserve">
<value>165, 17</value> <value>forward-step</value>
</metadata> </data>
<data name="button_Restart.ImageKey" xml:space="preserve">
<value>rotate-left</value>
</data>
<data name="&gt;&gt;button_ForwardFast.Name" xml:space="preserve">
<value>button_ForwardFast</value>
</data>
<data name="wallpaperForm.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>Manual</value>
</data>
<data name="panel_Render.Size" type="System.Drawing.Size, System.Drawing">
<value>233, 267</value>
</data>
<data name="wallpaperForm.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="button_ForwardFast.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>11, 2, 11, 2</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>SpinePreviewPanel</value>
</data>
<data name="&gt;&gt;button_ForwardFast.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Restart.ToolTip" xml:space="preserve">
<value>从头开始播放</value>
</data>
<data name="&gt;&gt;panel_Render.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="button_ForwardStep.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="&gt;&gt;button_ForwardStep.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="button_Stop.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="button_Restart.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 34</value>
</data>
<data name="panel_RenderContainer.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button_Restart.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="panel_RenderContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>466, 492</value>
</data>
<data name="&gt;&gt;button_ForwardFast.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="panel_ViewContainer.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>466, 530</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>378, 38</value>
</data>
<data name="&gt;&gt;button_Start.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;button_FullScreen.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="panel_Render.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="button_Start.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_Stop.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>11, 2, 11, 2</value>
</data>
<data name="button_Restart.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;button_Start.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="button_ForwardFast.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="button_Restart.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>11, 2, 11, 2</value>
</data>
<data name="panel_ViewContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>466, 492</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="panel_RenderContainer.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="button_ForwardFast.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 34</value>
</data>
<data name="&gt;&gt;button_Stop.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.ToolTip" xml:space="preserve">
<value />
</data>
<data name="button_Start.Location" type="System.Drawing.Point, System.Drawing">
<value>128, 2</value>
</data>
<data name="wallpaperForm.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;imageList.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_ForwardStep.ToolTip" xml:space="preserve">
<value>快进 1 帧</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="button_Stop.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 34</value>
</data>
<data name="panel_ViewContainer.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;spinePreviewFullScreenForm.Type" xml:space="preserve">
<value>SpineViewer.Forms.SpinePreviewFullScreenForm, SpineViewer, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="button_Stop.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_FullScreen.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button_ForwardStep.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="spinePreviewFullScreenForm.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;spinePreviewFullScreenForm.Name" xml:space="preserve">
<value>spinePreviewFullScreenForm</value>
</data>
<data name="&gt;&gt;button_Start.Name" xml:space="preserve">
<value>button_Start</value>
</data>
<data name="tableLayoutPanel1.ToolTip" xml:space="preserve">
<value />
</data>
<data name="&gt;&gt;button_Restart.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Start.ToolTip" xml:space="preserve">
<value>开始/暂停</value>
</data>
<data name="button_Start.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>11, 2, 11, 2</value>
</data>
<data name="button_Stop.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;panel_RenderContainer.Parent" xml:space="preserve">
<value>panel_ViewContainer</value>
</data>
<data name="button_ForwardStep.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 34</value>
</data>
<data name="&gt;&gt;button_FullScreen.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button_ForwardFast.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;button_Stop.Name" xml:space="preserve">
<value>button_Stop</value>
</data>
<data name="&gt;&gt;toolTip.Name" xml:space="preserve">
<value>toolTip</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="button_FullScreen.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>11, 2, 11, 2</value>
</data>
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;panel_ViewContainer.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="button_FullScreen.ImageKey" xml:space="preserve">
<value>arrows-maximize</value>
</data>
<data name="&gt;&gt;panel_Render.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolTip.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolTip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Restart.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="button_Stop.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 2</value>
</data>
<data name="button_Start.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="button_Restart.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="spinePreviewFullScreenForm.ToolTip" xml:space="preserve">
<value />
</data>
<data name="button_ForwardStep.Location" type="System.Drawing.Point, System.Drawing">
<value>191, 2</value>
</data>
<data name="button_Start.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;button_Start.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="flowLayoutPanel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<metadata name="spinePreviewFullScreenForm.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="spinePreviewFullScreenForm.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>307, 18</value> <value>307, 18</value>
</metadata> </metadata>
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, System.Private.CoreLib, Culture=neutral, PublicKeyToken=7cec85d7bea7798e">
<value>en</value>
</metadata>
<metadata name="wallpaperForm.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="wallpaperForm.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>618, 18</value> <value>618, 18</value>
</metadata> </metadata>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>165, 17</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root> </root>

View File

@@ -20,282 +20,218 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region #region
/// <summary> /// <summary>
/// 设计器支持所需的方法 - 不要修改 /// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。 /// 使用代码编辑器修改此方法的内容。
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
components = new System.ComponentModel.Container(); components = new System.ComponentModel.Container();
tabControl = new TabControl(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SpineViewPropertyGrid));
tabPage_BaseInfo = new TabPage(); tabControl = new TabControl();
propertyGrid_BaseInfo = new PropertyGrid(); tabPage_BaseInfo = new TabPage();
tabPage_Render = new TabPage(); propertyGrid_BaseInfo = new PropertyGrid();
propertyGrid_Render = new PropertyGrid(); tabPage_Render = new TabPage();
tabPage_Transform = new TabPage(); propertyGrid_Render = new PropertyGrid();
propertyGrid_Transform = new PropertyGrid(); tabPage_Transform = new TabPage();
tabPage_Skin = new TabPage(); propertyGrid_Transform = new PropertyGrid();
propertyGrid_Skin = new PropertyGrid(); tabPage_Skin = new TabPage();
contextMenuStrip_Skin = new ContextMenuStrip(components); propertyGrid_Skin = new PropertyGrid();
toolStripMenuItem_ReloadSkins = new ToolStripMenuItem(); contextMenuStrip_Skin = new ContextMenuStrip(components);
tabPage_Slot = new TabPage(); toolStripMenuItem_ReloadSkins = new ToolStripMenuItem();
propertyGrid_Slot = new PropertyGrid(); tabPage_Slot = new TabPage();
tabPage_Animation = new TabPage(); propertyGrid_Slot = new PropertyGrid();
propertyGrid_Animation = new PropertyGrid(); tabPage_Animation = new TabPage();
contextMenuStrip_Animation = new ContextMenuStrip(components); propertyGrid_Animation = new PropertyGrid();
toolStripMenuItem_AddAnimation = new ToolStripMenuItem(); contextMenuStrip_Animation = new ContextMenuStrip(components);
toolStripMenuItem_RemoveAnimation = new ToolStripMenuItem(); toolStripMenuItem_AddAnimation = new ToolStripMenuItem();
tabPage_Debug = new TabPage(); toolStripMenuItem_RemoveAnimation = new ToolStripMenuItem();
propertyGrid_Debug = new PropertyGrid(); tabPage_Debug = new TabPage();
tabControl.SuspendLayout(); propertyGrid_Debug = new PropertyGrid();
tabPage_BaseInfo.SuspendLayout(); tabControl.SuspendLayout();
tabPage_Render.SuspendLayout(); tabPage_BaseInfo.SuspendLayout();
tabPage_Transform.SuspendLayout(); tabPage_Render.SuspendLayout();
tabPage_Skin.SuspendLayout(); tabPage_Transform.SuspendLayout();
contextMenuStrip_Skin.SuspendLayout(); tabPage_Skin.SuspendLayout();
tabPage_Slot.SuspendLayout(); contextMenuStrip_Skin.SuspendLayout();
tabPage_Animation.SuspendLayout(); tabPage_Slot.SuspendLayout();
contextMenuStrip_Animation.SuspendLayout(); tabPage_Animation.SuspendLayout();
tabPage_Debug.SuspendLayout(); contextMenuStrip_Animation.SuspendLayout();
SuspendLayout(); tabPage_Debug.SuspendLayout();
// SuspendLayout();
// tabControl //
// // tabControl
tabControl.Alignment = TabAlignment.Bottom; //
tabControl.Controls.Add(tabPage_BaseInfo); resources.ApplyResources(tabControl, "tabControl");
tabControl.Controls.Add(tabPage_Render); tabControl.Controls.Add(tabPage_BaseInfo);
tabControl.Controls.Add(tabPage_Transform); tabControl.Controls.Add(tabPage_Render);
tabControl.Controls.Add(tabPage_Skin); tabControl.Controls.Add(tabPage_Transform);
tabControl.Controls.Add(tabPage_Slot); tabControl.Controls.Add(tabPage_Skin);
tabControl.Controls.Add(tabPage_Animation); tabControl.Controls.Add(tabPage_Slot);
tabControl.Controls.Add(tabPage_Debug); tabControl.Controls.Add(tabPage_Animation);
tabControl.Dock = DockStyle.Fill; tabControl.Controls.Add(tabPage_Debug);
tabControl.ItemSize = new Size(90, 35); tabControl.Multiline = true;
tabControl.Location = new Point(0, 0); tabControl.Name = "tabControl";
tabControl.Multiline = true; tabControl.SelectedIndex = 0;
tabControl.Name = "tabControl"; tabControl.SizeMode = TabSizeMode.FillToRight;
tabControl.Padding = new Point(0, 0); //
tabControl.SelectedIndex = 0; // tabPage_BaseInfo
tabControl.Size = new Size(372, 448); //
tabControl.SizeMode = TabSizeMode.FillToRight; resources.ApplyResources(tabPage_BaseInfo, "tabPage_BaseInfo");
tabControl.TabIndex = 0; tabPage_BaseInfo.BackColor = SystemColors.Control;
// tabPage_BaseInfo.Controls.Add(propertyGrid_BaseInfo);
// tabPage_BaseInfo tabPage_BaseInfo.Name = "tabPage_BaseInfo";
// //
tabPage_BaseInfo.BackColor = SystemColors.Control; // propertyGrid_BaseInfo
tabPage_BaseInfo.Controls.Add(propertyGrid_BaseInfo); //
tabPage_BaseInfo.Location = new Point(4, 4); resources.ApplyResources(propertyGrid_BaseInfo, "propertyGrid_BaseInfo");
tabPage_BaseInfo.Margin = new Padding(0); propertyGrid_BaseInfo.Name = "propertyGrid_BaseInfo";
tabPage_BaseInfo.Name = "tabPage_BaseInfo"; propertyGrid_BaseInfo.PropertySort = PropertySort.Alphabetical;
tabPage_BaseInfo.Size = new Size(364, 370); propertyGrid_BaseInfo.ToolbarVisible = false;
tabPage_BaseInfo.TabIndex = 0; //
tabPage_BaseInfo.Text = "基本信息"; // tabPage_Render
// //
// propertyGrid_BaseInfo resources.ApplyResources(tabPage_Render, "tabPage_Render");
// tabPage_Render.BackColor = SystemColors.Control;
propertyGrid_BaseInfo.Dock = DockStyle.Fill; tabPage_Render.Controls.Add(propertyGrid_Render);
propertyGrid_BaseInfo.HelpVisible = false; tabPage_Render.Name = "tabPage_Render";
propertyGrid_BaseInfo.Location = new Point(0, 0); //
propertyGrid_BaseInfo.Name = "propertyGrid_BaseInfo"; // propertyGrid_Render
propertyGrid_BaseInfo.PropertySort = PropertySort.Alphabetical; //
propertyGrid_BaseInfo.Size = new Size(364, 370); resources.ApplyResources(propertyGrid_Render, "propertyGrid_Render");
propertyGrid_BaseInfo.TabIndex = 0; propertyGrid_Render.Name = "propertyGrid_Render";
propertyGrid_BaseInfo.ToolbarVisible = false; propertyGrid_Render.PropertySort = PropertySort.Alphabetical;
// propertyGrid_Render.ToolbarVisible = false;
// tabPage_Render //
// // tabPage_Transform
tabPage_Render.BackColor = SystemColors.Control; //
tabPage_Render.Controls.Add(propertyGrid_Render); resources.ApplyResources(tabPage_Transform, "tabPage_Transform");
tabPage_Render.Location = new Point(4, 4); tabPage_Transform.BackColor = SystemColors.Control;
tabPage_Render.Margin = new Padding(0); tabPage_Transform.Controls.Add(propertyGrid_Transform);
tabPage_Render.Name = "tabPage_Render"; tabPage_Transform.Name = "tabPage_Transform";
tabPage_Render.Size = new Size(364, 370); //
tabPage_Render.TabIndex = 1; // propertyGrid_Transform
tabPage_Render.Text = "渲染"; //
// resources.ApplyResources(propertyGrid_Transform, "propertyGrid_Transform");
// propertyGrid_Render propertyGrid_Transform.Name = "propertyGrid_Transform";
// propertyGrid_Transform.PropertySort = PropertySort.Alphabetical;
propertyGrid_Render.Dock = DockStyle.Fill; propertyGrid_Transform.ToolbarVisible = false;
propertyGrid_Render.HelpVisible = false; //
propertyGrid_Render.Location = new Point(0, 0); // tabPage_Skin
propertyGrid_Render.Name = "propertyGrid_Render"; //
propertyGrid_Render.PropertySort = PropertySort.Alphabetical; resources.ApplyResources(tabPage_Skin, "tabPage_Skin");
propertyGrid_Render.Size = new Size(364, 370); tabPage_Skin.BackColor = SystemColors.Control;
propertyGrid_Render.TabIndex = 1; tabPage_Skin.Controls.Add(propertyGrid_Skin);
propertyGrid_Render.ToolbarVisible = false; tabPage_Skin.Name = "tabPage_Skin";
// //
// tabPage_Transform // propertyGrid_Skin
// //
tabPage_Transform.BackColor = SystemColors.Control; resources.ApplyResources(propertyGrid_Skin, "propertyGrid_Skin");
tabPage_Transform.Controls.Add(propertyGrid_Transform); propertyGrid_Skin.ContextMenuStrip = contextMenuStrip_Skin;
tabPage_Transform.Location = new Point(4, 4); propertyGrid_Skin.Name = "propertyGrid_Skin";
tabPage_Transform.Margin = new Padding(0); propertyGrid_Skin.PropertySort = PropertySort.NoSort;
tabPage_Transform.Name = "tabPage_Transform"; propertyGrid_Skin.ToolbarVisible = false;
tabPage_Transform.Size = new Size(364, 370); //
tabPage_Transform.TabIndex = 2; // contextMenuStrip_Skin
tabPage_Transform.Text = "变换"; //
// resources.ApplyResources(contextMenuStrip_Skin, "contextMenuStrip_Skin");
// propertyGrid_Transform contextMenuStrip_Skin.ImageScalingSize = new Size(24, 24);
// contextMenuStrip_Skin.Items.AddRange(new ToolStripItem[] { toolStripMenuItem_ReloadSkins });
propertyGrid_Transform.Dock = DockStyle.Fill; contextMenuStrip_Skin.Name = "contextMenuStrip1";
propertyGrid_Transform.HelpVisible = false; //
propertyGrid_Transform.Location = new Point(0, 0); // toolStripMenuItem_ReloadSkins
propertyGrid_Transform.Name = "propertyGrid_Transform"; //
propertyGrid_Transform.PropertySort = PropertySort.Alphabetical; resources.ApplyResources(toolStripMenuItem_ReloadSkins, "toolStripMenuItem_ReloadSkins");
propertyGrid_Transform.Size = new Size(364, 370); toolStripMenuItem_ReloadSkins.Name = "toolStripMenuItem_ReloadSkins";
propertyGrid_Transform.TabIndex = 1; toolStripMenuItem_ReloadSkins.Click += toolStripMenuItem_ReloadSkins_Click;
propertyGrid_Transform.ToolbarVisible = false; //
// // tabPage_Slot
// tabPage_Skin //
// resources.ApplyResources(tabPage_Slot, "tabPage_Slot");
tabPage_Skin.BackColor = SystemColors.Control; tabPage_Slot.BackColor = SystemColors.Control;
tabPage_Skin.Controls.Add(propertyGrid_Skin); tabPage_Slot.Controls.Add(propertyGrid_Slot);
tabPage_Skin.Location = new Point(4, 4); tabPage_Slot.Name = "tabPage_Slot";
tabPage_Skin.Margin = new Padding(0); //
tabPage_Skin.Name = "tabPage_Skin"; // propertyGrid_Slot
tabPage_Skin.Size = new Size(364, 370); //
tabPage_Skin.TabIndex = 3; resources.ApplyResources(propertyGrid_Slot, "propertyGrid_Slot");
tabPage_Skin.Text = "皮肤"; propertyGrid_Slot.Name = "propertyGrid_Slot";
// propertyGrid_Slot.PropertySort = PropertySort.Alphabetical;
// propertyGrid_Skin propertyGrid_Slot.ToolbarVisible = false;
// //
propertyGrid_Skin.ContextMenuStrip = contextMenuStrip_Skin; // tabPage_Animation
propertyGrid_Skin.Dock = DockStyle.Fill; //
propertyGrid_Skin.HelpVisible = false; resources.ApplyResources(tabPage_Animation, "tabPage_Animation");
propertyGrid_Skin.Location = new Point(0, 0); tabPage_Animation.BackColor = SystemColors.Control;
propertyGrid_Skin.Name = "propertyGrid_Skin"; tabPage_Animation.Controls.Add(propertyGrid_Animation);
propertyGrid_Skin.PropertySort = PropertySort.NoSort; tabPage_Animation.Name = "tabPage_Animation";
propertyGrid_Skin.Size = new Size(364, 370); //
propertyGrid_Skin.TabIndex = 1; // propertyGrid_Animation
propertyGrid_Skin.ToolbarVisible = false; //
// resources.ApplyResources(propertyGrid_Animation, "propertyGrid_Animation");
// contextMenuStrip_Skin propertyGrid_Animation.ContextMenuStrip = contextMenuStrip_Animation;
// propertyGrid_Animation.Name = "propertyGrid_Animation";
contextMenuStrip_Skin.ImageScalingSize = new Size(24, 24); propertyGrid_Animation.PropertySort = PropertySort.NoSort;
contextMenuStrip_Skin.Items.AddRange(new ToolStripItem[] { toolStripMenuItem_ReloadSkins }); propertyGrid_Animation.ToolbarVisible = false;
contextMenuStrip_Skin.Name = "contextMenuStrip1"; //
contextMenuStrip_Skin.Size = new Size(241, 67); // contextMenuStrip_Animation
// //
// toolStripMenuItem_ReloadSkins resources.ApplyResources(contextMenuStrip_Animation, "contextMenuStrip_Animation");
// contextMenuStrip_Animation.ImageScalingSize = new Size(24, 24);
toolStripMenuItem_ReloadSkins.Name = "toolStripMenuItem_ReloadSkins"; contextMenuStrip_Animation.Items.AddRange(new ToolStripItem[] { toolStripMenuItem_AddAnimation, toolStripMenuItem_RemoveAnimation });
toolStripMenuItem_ReloadSkins.Size = new Size(240, 30); contextMenuStrip_Animation.Name = "contextMenuStrip1";
toolStripMenuItem_ReloadSkins.Text = "重新加载皮肤"; contextMenuStrip_Animation.Opening += contextMenuStrip_Animation_Opening;
toolStripMenuItem_ReloadSkins.Click += toolStripMenuItem_ReloadSkins_Click; //
// // toolStripMenuItem_AddAnimation
// tabPage_Slot //
// resources.ApplyResources(toolStripMenuItem_AddAnimation, "toolStripMenuItem_AddAnimation");
tabPage_Slot.BackColor = SystemColors.Control; toolStripMenuItem_AddAnimation.Name = "toolStripMenuItem_AddAnimation";
tabPage_Slot.Controls.Add(propertyGrid_Slot); toolStripMenuItem_AddAnimation.Click += toolStripMenuItem_AddAnimation_Click;
tabPage_Slot.Location = new Point(4, 4); //
tabPage_Slot.Margin = new Padding(0); // toolStripMenuItem_RemoveAnimation
tabPage_Slot.Name = "tabPage_Slot"; //
tabPage_Slot.Size = new Size(364, 370); resources.ApplyResources(toolStripMenuItem_RemoveAnimation, "toolStripMenuItem_RemoveAnimation");
tabPage_Slot.TabIndex = 6; toolStripMenuItem_RemoveAnimation.Name = "toolStripMenuItem_RemoveAnimation";
tabPage_Slot.Text = "插槽"; toolStripMenuItem_RemoveAnimation.Click += toolStripMenuItem_RemoveAnimation_Click;
// //
// propertyGrid_Slot // tabPage_Debug
// //
propertyGrid_Slot.Dock = DockStyle.Fill; resources.ApplyResources(tabPage_Debug, "tabPage_Debug");
propertyGrid_Slot.HelpVisible = false; tabPage_Debug.BackColor = SystemColors.Control;
propertyGrid_Slot.Location = new Point(0, 0); tabPage_Debug.Controls.Add(propertyGrid_Debug);
propertyGrid_Slot.Name = "propertyGrid_Slot"; tabPage_Debug.Name = "tabPage_Debug";
propertyGrid_Slot.PropertySort = PropertySort.Alphabetical; //
propertyGrid_Slot.Size = new Size(364, 370); // propertyGrid_Debug
propertyGrid_Slot.TabIndex = 2; //
propertyGrid_Slot.ToolbarVisible = false; resources.ApplyResources(propertyGrid_Debug, "propertyGrid_Debug");
// propertyGrid_Debug.Name = "propertyGrid_Debug";
// tabPage_Animation propertyGrid_Debug.PropertySort = PropertySort.NoSort;
// propertyGrid_Debug.ToolbarVisible = false;
tabPage_Animation.BackColor = SystemColors.Control; //
tabPage_Animation.Controls.Add(propertyGrid_Animation); // SpineViewPropertyGrid
tabPage_Animation.Location = new Point(4, 4); //
tabPage_Animation.Margin = new Padding(0); resources.ApplyResources(this, "$this");
tabPage_Animation.Name = "tabPage_Animation"; AutoScaleMode = AutoScaleMode.Font;
tabPage_Animation.Size = new Size(364, 370); Controls.Add(tabControl);
tabPage_Animation.TabIndex = 4; Name = "SpineViewPropertyGrid";
tabPage_Animation.Text = "动画"; tabControl.ResumeLayout(false);
// tabPage_BaseInfo.ResumeLayout(false);
// propertyGrid_Animation tabPage_Render.ResumeLayout(false);
// tabPage_Transform.ResumeLayout(false);
propertyGrid_Animation.ContextMenuStrip = contextMenuStrip_Animation; tabPage_Skin.ResumeLayout(false);
propertyGrid_Animation.Dock = DockStyle.Fill; contextMenuStrip_Skin.ResumeLayout(false);
propertyGrid_Animation.HelpVisible = false; tabPage_Slot.ResumeLayout(false);
propertyGrid_Animation.Location = new Point(0, 0); tabPage_Animation.ResumeLayout(false);
propertyGrid_Animation.Name = "propertyGrid_Animation"; contextMenuStrip_Animation.ResumeLayout(false);
propertyGrid_Animation.PropertySort = PropertySort.NoSort; tabPage_Debug.ResumeLayout(false);
propertyGrid_Animation.Size = new Size(364, 370); ResumeLayout(false);
propertyGrid_Animation.TabIndex = 1; }
propertyGrid_Animation.ToolbarVisible = false;
//
// contextMenuStrip_Animation
//
contextMenuStrip_Animation.ImageScalingSize = new Size(24, 24);
contextMenuStrip_Animation.Items.AddRange(new ToolStripItem[] { toolStripMenuItem_AddAnimation, toolStripMenuItem_RemoveAnimation });
contextMenuStrip_Animation.Name = "contextMenuStrip1";
contextMenuStrip_Animation.Size = new Size(117, 64);
contextMenuStrip_Animation.Opening += contextMenuStrip_Animation_Opening;
//
// toolStripMenuItem_AddAnimation
//
toolStripMenuItem_AddAnimation.Name = "toolStripMenuItem_AddAnimation";
toolStripMenuItem_AddAnimation.Size = new Size(116, 30);
toolStripMenuItem_AddAnimation.Text = "添加";
toolStripMenuItem_AddAnimation.Click += toolStripMenuItem_AddAnimation_Click;
//
// toolStripMenuItem_RemoveAnimation
//
toolStripMenuItem_RemoveAnimation.Name = "toolStripMenuItem_RemoveAnimation";
toolStripMenuItem_RemoveAnimation.Size = new Size(116, 30);
toolStripMenuItem_RemoveAnimation.Text = "移除";
toolStripMenuItem_RemoveAnimation.Click += toolStripMenuItem_RemoveAnimation_Click;
//
// tabPage_Debug
//
tabPage_Debug.BackColor = SystemColors.Control;
tabPage_Debug.Controls.Add(propertyGrid_Debug);
tabPage_Debug.Location = new Point(4, 4);
tabPage_Debug.Name = "tabPage_Debug";
tabPage_Debug.Size = new Size(364, 370);
tabPage_Debug.TabIndex = 5;
tabPage_Debug.Text = "调试";
//
// propertyGrid_Debug
//
propertyGrid_Debug.Dock = DockStyle.Fill;
propertyGrid_Debug.HelpVisible = false;
propertyGrid_Debug.Location = new Point(0, 0);
propertyGrid_Debug.Name = "propertyGrid_Debug";
propertyGrid_Debug.PropertySort = PropertySort.NoSort;
propertyGrid_Debug.Size = new Size(364, 370);
propertyGrid_Debug.TabIndex = 2;
propertyGrid_Debug.ToolbarVisible = false;
//
// SpineViewPropertyGrid
//
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
Controls.Add(tabControl);
Name = "SpineViewPropertyGrid";
Size = new Size(372, 448);
tabControl.ResumeLayout(false);
tabPage_BaseInfo.ResumeLayout(false);
tabPage_Render.ResumeLayout(false);
tabPage_Transform.ResumeLayout(false);
tabPage_Skin.ResumeLayout(false);
contextMenuStrip_Skin.ResumeLayout(false);
tabPage_Slot.ResumeLayout(false);
tabPage_Animation.ResumeLayout(false);
contextMenuStrip_Animation.ResumeLayout(false);
tabPage_Debug.ResumeLayout(false);
ResumeLayout(false);
}
#endregion #endregion
private TabControl tabControl; private TabControl tabControl;
private TabPage tabPage_BaseInfo; private TabPage tabPage_BaseInfo;
private TabPage tabPage_Render; private TabPage tabPage_Render;
private TabPage tabPage_Transform; private TabPage tabPage_Transform;

View File

@@ -0,0 +1,164 @@
<?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>
<data name="tabPage_Animation.Text" xml:space="preserve">
<value>Animation</value>
</data>
<data name="toolStripMenuItem_RemoveAnimation.Text" xml:space="preserve">
<value>Remove</value>
</data>
<data name="tabPage_Render.Text" xml:space="preserve">
<value>Render</value>
</data>
<data name="tabPage_Slot.Text" xml:space="preserve">
<value>Slot</value>
</data>
<data name="tabPage_Skin.Text" xml:space="preserve">
<value>Skin</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tabPage_Render.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 330</value>
</data>
<data name="tabPage_Transform.Text" xml:space="preserve">
<value>Transform</value>
</data>
<data name="tabPage_Transform.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 330</value>
</data>
<data name="tabPage_Debug.Text" xml:space="preserve">
<value>Debug</value>
</data>
<data name="toolStripMenuItem_ReloadSkins.Text" xml:space="preserve">
<value>Reload skin</value>
</data>
<data name="propertyGrid_Render.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 330</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="toolStripMenuItem_RemoveAnimation.Size" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="propertyGrid_Transform.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 330</value>
</data>
<data name="tabPage_BaseInfo.Text" xml:space="preserve">
<value>Basic Information</value>
</data>
</root>

View File

@@ -117,6 +117,517 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="propertyGrid_Slot.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tabControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;propertyGrid_Animation.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;contextMenuStrip_Skin.Name" xml:space="preserve">
<value>contextMenuStrip_Skin</value>
</data>
<data name="&gt;&gt;propertyGrid_Animation.Name" xml:space="preserve">
<value>propertyGrid_Animation</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tabPage_Slot.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 4</value>
</data>
<data name="contextMenuStrip_Skin.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 28</value>
</data>
<data name="&gt;&gt;tabPage_Skin.Name" xml:space="preserve">
<value>tabPage_Skin</value>
</data>
<data name="&gt;&gt;tabPage_Debug.Name" xml:space="preserve">
<value>tabPage_Debug</value>
</data>
<data name="&gt;&gt;propertyGrid_BaseInfo.Type" xml:space="preserve">
<value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;propertyGrid_Transform.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="propertyGrid_Render.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tabPage_BaseInfo.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;propertyGrid_Render.Type" xml:space="preserve">
<value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tabControl.ItemSize" type="System.Drawing.Size, System.Drawing">
<value>90, 35</value>
</data>
<data name="tabControl.Size" type="System.Drawing.Size, System.Drawing">
<value>271, 373</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="propertyGrid_Debug.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tabPage_Animation.Text" xml:space="preserve">
<value>动画</value>
</data>
<data name="propertyGrid_Slot.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;tabPage_Animation.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tabPage_BaseInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 4</value>
</data>
<data name="&gt;&gt;propertyGrid_BaseInfo.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="propertyGrid_Animation.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;tabControl.Name" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="propertyGrid_Animation.HelpVisible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="propertyGrid_Animation.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="&gt;&gt;tabControl.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="contextMenuStrip_Animation.Size" type="System.Drawing.Size, System.Drawing">
<value>109, 52</value>
</data>
<data name="propertyGrid_BaseInfo.HelpVisible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="propertyGrid_Skin.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tabPage_Animation.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="&gt;&gt;contextMenuStrip_Animation.Name" xml:space="preserve">
<value>contextMenuStrip_Animation</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_RemoveAnimation.Name" xml:space="preserve">
<value>toolStripMenuItem_RemoveAnimation</value>
</data>
<data name="propertyGrid_BaseInfo.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;tabPage_Debug.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>271, 373</value>
</data>
<data name="&gt;&gt;propertyGrid_Debug.Name" xml:space="preserve">
<value>propertyGrid_Debug</value>
</data>
<data name="&gt;&gt;propertyGrid_BaseInfo.Name" xml:space="preserve">
<value>propertyGrid_BaseInfo</value>
</data>
<data name="propertyGrid_Debug.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;propertyGrid_Transform.Name" xml:space="preserve">
<value>propertyGrid_Transform</value>
</data>
<data name="toolStripMenuItem_RemoveAnimation.Text" xml:space="preserve">
<value>移除</value>
</data>
<data name="&gt;&gt;propertyGrid_Skin.Parent" xml:space="preserve">
<value>tabPage_Skin</value>
</data>
<data name="propertyGrid_Slot.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_ReloadSkins.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;propertyGrid_Render.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tabControl.Alignment" type="System.Windows.Forms.TabAlignment, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="propertyGrid_Animation.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;contextMenuStrip_Skin.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tabPage_Transform.Name" xml:space="preserve">
<value>tabPage_Transform</value>
</data>
<data name="tabPage_Render.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="&gt;&gt;tabPage_Render.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="tabPage_Render.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 4</value>
</data>
<data name="tabPage_Animation.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tabPage_Animation.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 4</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="propertyGrid_Debug.HelpVisible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="propertyGrid_Transform.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;tabPage_Render.Name" xml:space="preserve">
<value>tabPage_Render</value>
</data>
<data name="propertyGrid_Slot.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="&gt;&gt;propertyGrid_Slot.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="propertyGrid_Debug.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="&gt;&gt;tabPage_BaseInfo.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tabPage_Transform.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 4</value>
</data>
<data name="propertyGrid_Transform.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tabPage_Render.Text" xml:space="preserve">
<value>渲染</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_AddAnimation.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="propertyGrid_Skin.HelpVisible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="tabPage_Slot.Text" xml:space="preserve">
<value>插槽</value>
</data>
<data name="&gt;&gt;propertyGrid_Render.Parent" xml:space="preserve">
<value>tabPage_Render</value>
</data>
<data name="propertyGrid_Transform.HelpVisible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="propertyGrid_Transform.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tabPage_Skin.Text" xml:space="preserve">
<value>皮肤</value>
</data>
<data name="&gt;&gt;tabPage_Skin.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="propertyGrid_Slot.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;tabPage_Slot.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="propertyGrid_Skin.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tabPage_Render.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="propertyGrid_Skin.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tabPage_Render.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tabPage_Skin.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tabControl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="tabPage_Debug.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="propertyGrid_Debug.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;tabPage_Slot.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tabControl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tabPage_Debug.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 4</value>
</data>
<data name="&gt;&gt;tabControl.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;propertyGrid_Skin.Type" xml:space="preserve">
<value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;propertyGrid_Debug.Type" xml:space="preserve">
<value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tabPage_Skin.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="propertyGrid_Render.HelpVisible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="tabPage_Skin.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="&gt;&gt;propertyGrid_Skin.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tabPage_Transform.Text" xml:space="preserve">
<value>变换</value>
</data>
<data name="tabPage_Transform.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="tabPage_Transform.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="propertyGrid_Debug.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;propertyGrid_Slot.Parent" xml:space="preserve">
<value>tabPage_Slot</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<data name="propertyGrid_Animation.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;tabPage_Transform.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="&gt;&gt;tabPage_Render.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;tabPage_BaseInfo.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="toolStripMenuItem_AddAnimation.Size" type="System.Drawing.Size, System.Drawing">
<value>108, 24</value>
</data>
<data name="&gt;&gt;tabPage_Slot.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;tabPage_Skin.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tabPage_Debug.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="tabPage_BaseInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="tabPage_Slot.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;tabPage_Animation.Name" xml:space="preserve">
<value>tabPage_Animation</value>
</data>
<data name="&gt;&gt;propertyGrid_Transform.Type" xml:space="preserve">
<value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tabControl.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="toolStripMenuItem_AddAnimation.Text" xml:space="preserve">
<value>添加</value>
</data>
<data name="toolStripMenuItem_ReloadSkins.Size" type="System.Drawing.Size, System.Drawing">
<value>169, 24</value>
</data>
<data name="tabPage_Debug.Text" xml:space="preserve">
<value>调试</value>
</data>
<data name="propertyGrid_Render.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;propertyGrid_Animation.Type" xml:space="preserve">
<value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="toolStripMenuItem_ReloadSkins.Text" xml:space="preserve">
<value>重新加载皮肤</value>
</data>
<data name="&gt;&gt;propertyGrid_Slot.Name" xml:space="preserve">
<value>propertyGrid_Slot</value>
</data>
<data name="propertyGrid_Transform.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="propertyGrid_BaseInfo.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="propertyGrid_Skin.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;tabPage_BaseInfo.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>SpineViewPropertyGrid</value>
</data>
<data name="&gt;&gt;tabControl.Type" xml:space="preserve">
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;contextMenuStrip_Animation.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="propertyGrid_Slot.HelpVisible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="tabPage_Animation.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;tabPage_Debug.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="&gt;&gt;tabPage_Slot.Name" xml:space="preserve">
<value>tabPage_Slot</value>
</data>
<data name="&gt;&gt;propertyGrid_Animation.Parent" xml:space="preserve">
<value>tabPage_Animation</value>
</data>
<data name="tabPage_Transform.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="propertyGrid_BaseInfo.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="propertyGrid_Render.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="&gt;&gt;tabPage_BaseInfo.Name" xml:space="preserve">
<value>tabPage_BaseInfo</value>
</data>
<data name="&gt;&gt;propertyGrid_BaseInfo.Parent" xml:space="preserve">
<value>tabPage_BaseInfo</value>
</data>
<data name="&gt;&gt;tabPage_Transform.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="propertyGrid_Skin.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="tabPage_Debug.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;propertyGrid_Debug.Parent" xml:space="preserve">
<value>tabPage_Debug</value>
</data>
<data name="&gt;&gt;tabPage_Transform.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;propertyGrid_Slot.Type" xml:space="preserve">
<value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tabPage_Slot.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="tabControl.Padding" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="propertyGrid_BaseInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="toolStripMenuItem_RemoveAnimation.Size" type="System.Drawing.Size, System.Drawing">
<value>108, 24</value>
</data>
<data name="&gt;&gt;tabPage_Debug.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="&gt;&gt;propertyGrid_Transform.Parent" xml:space="preserve">
<value>tabPage_Transform</value>
</data>
<data name="propertyGrid_Render.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tabPage_Slot.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tabPage_Skin.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 4</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_AddAnimation.Name" xml:space="preserve">
<value>toolStripMenuItem_AddAnimation</value>
</data>
<data name="&gt;&gt;tabPage_Animation.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;propertyGrid_Render.Name" xml:space="preserve">
<value>propertyGrid_Render</value>
</data>
<data name="&gt;&gt;propertyGrid_Debug.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="propertyGrid_BaseInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="propertyGrid_Transform.Size" type="System.Drawing.Size, System.Drawing">
<value>263, 295</value>
</data>
<data name="tabPage_Skin.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="&gt;&gt;tabPage_Animation.Parent" xml:space="preserve">
<value>tabControl</value>
</data>
<data name="propertyGrid_Animation.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;tabPage_Render.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_ReloadSkins.Name" xml:space="preserve">
<value>toolStripMenuItem_ReloadSkins</value>
</data>
<data name="&gt;&gt;propertyGrid_Skin.Name" xml:space="preserve">
<value>propertyGrid_Skin</value>
</data>
<data name="tabPage_BaseInfo.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="propertyGrid_Render.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_RemoveAnimation.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tabPage_BaseInfo.Text" xml:space="preserve">
<value>基本信息</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="contextMenuStrip_Skin.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="contextMenuStrip_Skin.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>29, 26</value> <value>29, 26</value>
</metadata> </metadata>

View File

@@ -19,130 +19,82 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows #region Windows
/// <summary> /// <summary>
/// 设计器支持所需的方法 - 不要修改 /// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。 /// 使用代码编辑器修改此方法的内容。
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutDialog)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutDialog));
tableLayoutPanel_About = new TableLayoutPanel(); tableLayoutPanel_About = new TableLayoutPanel();
label3 = new Label(); label3 = new Label();
label1 = new Label(); label1 = new Label();
label_Version = new Label(); label_Version = new Label();
linkLabel_RepoUrl = new LinkLabel(); linkLabel_RepoUrl = new LinkLabel();
panel1 = new Panel(); panel1 = new Panel();
tableLayoutPanel_About.SuspendLayout(); tableLayoutPanel_About.SuspendLayout();
panel1.SuspendLayout(); panel1.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// tableLayoutPanel_About // tableLayoutPanel_About
// //
tableLayoutPanel_About.BackColor = Color.Transparent; resources.ApplyResources(tableLayoutPanel_About, "tableLayoutPanel_About");
tableLayoutPanel_About.ColumnCount = 2; tableLayoutPanel_About.BackColor = Color.Transparent;
tableLayoutPanel_About.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 28.5714283F)); tableLayoutPanel_About.Controls.Add(label3, 0, 1);
tableLayoutPanel_About.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 71.42857F)); tableLayoutPanel_About.Controls.Add(label1, 0, 0);
tableLayoutPanel_About.Controls.Add(label3, 0, 1); tableLayoutPanel_About.Controls.Add(label_Version, 1, 0);
tableLayoutPanel_About.Controls.Add(label1, 0, 0); tableLayoutPanel_About.Controls.Add(linkLabel_RepoUrl, 1, 1);
tableLayoutPanel_About.Controls.Add(label_Version, 1, 0); tableLayoutPanel_About.Name = "tableLayoutPanel_About";
tableLayoutPanel_About.Controls.Add(linkLabel_RepoUrl, 1, 1); //
tableLayoutPanel_About.Dock = DockStyle.Fill; // label3
tableLayoutPanel_About.Location = new Point(50, 15); //
tableLayoutPanel_About.Margin = new Padding(0); resources.ApplyResources(label3, "label3");
tableLayoutPanel_About.Name = "tableLayoutPanel_About"; label3.Name = "label3";
tableLayoutPanel_About.RowCount = 3; //
tableLayoutPanel_About.RowStyles.Add(new RowStyle()); // label1
tableLayoutPanel_About.RowStyles.Add(new RowStyle()); //
tableLayoutPanel_About.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); resources.ApplyResources(label1, "label1");
tableLayoutPanel_About.Size = new Size(604, 254); label1.Name = "label1";
tableLayoutPanel_About.TabIndex = 1; //
// // label_Version
// label3 //
// resources.ApplyResources(label_Version, "label_Version");
label3.AutoSize = true; label_Version.Name = "label_Version";
label3.Dock = DockStyle.Fill; //
label3.Location = new Point(3, 54); // linkLabel_RepoUrl
label3.Margin = new Padding(3, 10, 3, 10); //
label3.Name = "label3"; resources.ApplyResources(linkLabel_RepoUrl, "linkLabel_RepoUrl");
label3.Size = new Size(166, 24); linkLabel_RepoUrl.Name = "linkLabel_RepoUrl";
label3.TabIndex = 2; linkLabel_RepoUrl.TabStop = true;
label3.Text = "项目地址:"; linkLabel_RepoUrl.LinkClicked += linkLabel_RepoUrl_LinkClicked;
label3.TextAlign = ContentAlignment.MiddleRight; //
// // panel1
// label1 //
// resources.ApplyResources(panel1, "panel1");
label1.AutoSize = true; panel1.Controls.Add(tableLayoutPanel_About);
label1.Dock = DockStyle.Fill; panel1.Name = "panel1";
label1.Location = new Point(3, 10); //
label1.Margin = new Padding(3, 10, 3, 10); // AboutDialog
label1.Name = "label1"; //
label1.Size = new Size(166, 24); resources.ApplyResources(this, "$this");
label1.TabIndex = 0; AutoScaleMode = AutoScaleMode.Font;
label1.Text = "程序版本:"; Controls.Add(panel1);
label1.TextAlign = ContentAlignment.MiddleRight; FormBorderStyle = FormBorderStyle.FixedDialog;
// MaximizeBox = false;
// label_Version MinimizeBox = false;
// Name = "AboutDialog";
label_Version.Anchor = AnchorStyles.Left; ShowInTaskbar = false;
label_Version.AutoSize = true; tableLayoutPanel_About.ResumeLayout(false);
label_Version.Location = new Point(175, 10); tableLayoutPanel_About.PerformLayout();
label_Version.Name = "label_Version"; panel1.ResumeLayout(false);
label_Version.Size = new Size(61, 24); ResumeLayout(false);
label_Version.TabIndex = 1; }
label_Version.Text = "vX.Y.Z";
label_Version.TextAlign = ContentAlignment.MiddleLeft;
//
// linkLabel_RepoUrl
//
linkLabel_RepoUrl.Anchor = AnchorStyles.Left;
linkLabel_RepoUrl.AutoSize = true;
linkLabel_RepoUrl.Location = new Point(175, 54);
linkLabel_RepoUrl.Name = "linkLabel_RepoUrl";
linkLabel_RepoUrl.Size = new Size(356, 24);
linkLabel_RepoUrl.TabIndex = 3;
linkLabel_RepoUrl.TabStop = true;
linkLabel_RepoUrl.Text = "https://github.com/ww-rm/SpineViewer";
linkLabel_RepoUrl.LinkClicked += linkLabel_RepoUrl_LinkClicked;
//
// panel1
//
panel1.BackgroundImageLayout = ImageLayout.Center;
panel1.Controls.Add(tableLayoutPanel_About);
panel1.Dock = DockStyle.Fill;
panel1.Location = new Point(16, 17);
panel1.Name = "panel1";
panel1.Padding = new Padding(50, 15, 50, 10);
panel1.Size = new Size(704, 279);
panel1.TabIndex = 2;
//
// AboutDialog
//
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(736, 313);
Controls.Add(panel1);
FormBorderStyle = FormBorderStyle.FixedDialog;
Icon = (Icon)resources.GetObject("$this.Icon");
Margin = new Padding(6);
MaximizeBox = false;
MinimizeBox = false;
Name = "AboutDialog";
Padding = new Padding(16, 17, 16, 17);
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterParent;
Text = "关于 SpineViewer";
tableLayoutPanel_About.ResumeLayout(false);
tableLayoutPanel_About.PerformLayout();
panel1.ResumeLayout(false);
ResumeLayout(false);
} #endregion
#endregion private TableLayoutPanel tableLayoutPanel_About;
private TableLayoutPanel tableLayoutPanel_About;
private Label label3; private Label label3;
private Label label1; private Label label1;
private Label label_Version; private Label label_Version;

View File

@@ -16,7 +16,7 @@ namespace SpineViewer.Dialogs
public AboutDialog() public AboutDialog()
{ {
InitializeComponent(); InitializeComponent();
Text = $"关于 {ProgramName}"; Text = $"{Properties.Resources.about} {ProgramName}";
label_Version.Text = $"v{InformationalVersion}"; label_Version.Text = $"v{InformationalVersion}";
} }
@@ -41,7 +41,7 @@ namespace SpineViewer.Dialogs
else else
{ {
Clipboard.SetText(url); Clipboard.SetText(url);
MessagePopup.Info("链接已复制到剪贴板,请前往浏览器进行访问"); MessagePopup.Info(Properties.Resources.notifyCopyGithubLink, Properties.Resources.msgBoxInfo);
} }
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -117,7 +117,82 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label_Version.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel_About</value>
</data>
<data name="label3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label_Version.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label_Version.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 20</value>
</data>
<data name="tableLayoutPanel_About.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="label_Version.Text" xml:space="preserve">
<value>vX.Y.Z</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;linkLabel_RepoUrl.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkLabel_RepoUrl.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="label3.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleRight</value>
</data>
<data name="label3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 8, 2, 8</value>
</data>
<data name="tableLayoutPanel_About.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 8</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>tableLayoutPanel_About</value>
</data>
<data name="&gt;&gt;linkLabel_RepoUrl.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tableLayoutPanel_About.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 12</value>
</data>
<data name="linkLabel_RepoUrl.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 44</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>AboutDialog</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>关于 SpineViewer</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA
@@ -3264,4 +3339,169 @@
////////wAAAAAAAB/////// ////////wAAAAAAAB///////
</value> </value>
</data> </data>
<data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleRight</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="linkLabel_RepoUrl.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="label_Version.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 20</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label_Version.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="linkLabel_RepoUrl.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="linkLabel_RepoUrl.Text" xml:space="preserve">
<value>https://github.com/ww-rm/SpineViewer</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label_Version.Parent" xml:space="preserve">
<value>tableLayoutPanel_About</value>
</data>
<data name="&gt;&gt;tableLayoutPanel_About.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="tableLayoutPanel_About.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="linkLabel_RepoUrl.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 8, 2, 8</value>
</data>
<data name="tableLayoutPanel_About.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="label3" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label_Version" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="linkLabel_RepoUrl" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,28.571428,Percent,71.42857" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="&gt;&gt;label_Version.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 44</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 20</value>
</data>
<data name="tableLayoutPanel_About.Size" type="System.Drawing.Size, System.Drawing">
<value>439, 213</value>
</data>
<data name="label_Version.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel_About.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tableLayoutPanel_About.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="&gt;&gt;label_Version.Name" xml:space="preserve">
<value>label_Version</value>
</data>
<data name="linkLabel_RepoUrl.Size" type="System.Drawing.Size, System.Drawing">
<value>272, 20</value>
</data>
<data name="&gt;&gt;linkLabel_RepoUrl.Name" xml:space="preserve">
<value>linkLabel_RepoUrl</value>
</data>
<data name="label_Version.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 8</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 14</value>
</data>
<data name="&gt;&gt;tableLayoutPanel_About.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel_About.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>511, 233</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>12, 14, 12, 14</value>
</data>
<data name="&gt;&gt;linkLabel_RepoUrl.Parent" xml:space="preserve">
<value>tableLayoutPanel_About</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>程序版本:</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="panel1.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
<value>Center</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>项目地址:</value>
</data>
<data name="&gt;&gt;tableLayoutPanel_About.Name" xml:space="preserve">
<value>tableLayoutPanel_About</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>535, 261</value>
</data>
<data name="panel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>36, 12, 36, 8</value>
</data>
<data name="label_Version.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root> </root>

View File

@@ -20,171 +20,113 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BatchOpenSpineDialog)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BatchOpenSpineDialog));
panel = new Panel(); panel = new Panel();
tableLayoutPanel1 = new TableLayoutPanel(); tableLayoutPanel1 = new TableLayoutPanel();
label4 = new Label(); label4 = new Label();
label3 = new Label(); label3 = new Label();
comboBox_Version = new ComboBox(); comboBox_Version = new ComboBox();
tableLayoutPanel2 = new TableLayoutPanel(); tableLayoutPanel2 = new TableLayoutPanel();
button_Ok = new Button(); button_Ok = new Button();
button_Cancel = new Button(); button_Cancel = new Button();
skelFileListBox = new SpineViewer.Controls.SkelFileListBox(); skelFileListBox = new Controls.SkelFileListBox();
panel.SuspendLayout(); panel.SuspendLayout();
tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.SuspendLayout();
tableLayoutPanel2.SuspendLayout(); tableLayoutPanel2.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// panel // panel
// //
panel.Controls.Add(tableLayoutPanel1); resources.ApplyResources(panel, "panel");
panel.Dock = DockStyle.Fill; panel.Controls.Add(tableLayoutPanel1);
panel.Location = new Point(0, 0); panel.Name = "panel";
panel.Name = "panel"; //
panel.Padding = new Padding(50, 15, 50, 10); // tableLayoutPanel1
panel.Size = new Size(1042, 472); //
panel.TabIndex = 1; resources.ApplyResources(tableLayoutPanel1, "tableLayoutPanel1");
// tableLayoutPanel1.Controls.Add(label4, 0, 0);
// tableLayoutPanel1 tableLayoutPanel1.Controls.Add(label3, 0, 2);
// tableLayoutPanel1.Controls.Add(comboBox_Version, 1, 2);
tableLayoutPanel1.ColumnCount = 2; tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 3);
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle()); tableLayoutPanel1.Controls.Add(skelFileListBox, 0, 1);
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.Controls.Add(label4, 0, 0); //
tableLayoutPanel1.Controls.Add(label3, 0, 2); // label4
tableLayoutPanel1.Controls.Add(comboBox_Version, 1, 2); //
tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 3); resources.ApplyResources(label4, "label4");
tableLayoutPanel1.Controls.Add(skelFileListBox, 0, 1); tableLayoutPanel1.SetColumnSpan(label4, 4);
tableLayoutPanel1.Dock = DockStyle.Fill; label4.Name = "label4";
tableLayoutPanel1.Location = new Point(50, 15); //
tableLayoutPanel1.Name = "tableLayoutPanel1"; // label3
tableLayoutPanel1.RowCount = 3; //
tableLayoutPanel1.RowStyles.Add(new RowStyle()); resources.ApplyResources(label3, "label3");
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); label3.Name = "label3";
tableLayoutPanel1.RowStyles.Add(new RowStyle()); //
tableLayoutPanel1.RowStyles.Add(new RowStyle()); // comboBox_Version
tableLayoutPanel1.Size = new Size(942, 447); //
tableLayoutPanel1.TabIndex = 1; resources.ApplyResources(comboBox_Version, "comboBox_Version");
// comboBox_Version.DropDownStyle = ComboBoxStyle.DropDownList;
// label4 comboBox_Version.FormattingEnabled = true;
// comboBox_Version.Name = "comboBox_Version";
label4.AutoSize = true; comboBox_Version.Sorted = true;
tableLayoutPanel1.SetColumnSpan(label4, 4); //
label4.Dock = DockStyle.Fill; // tableLayoutPanel2
label4.Location = new Point(15, 15); //
label4.Margin = new Padding(15); resources.ApplyResources(tableLayoutPanel2, "tableLayoutPanel2");
label4.Name = "label4"; tableLayoutPanel1.SetColumnSpan(tableLayoutPanel2, 4);
label4.Size = new Size(912, 24); tableLayoutPanel2.Controls.Add(button_Ok, 0, 0);
label4.TabIndex = 14; tableLayoutPanel2.Controls.Add(button_Cancel, 1, 0);
label4.Text = "说明批量导入只需要选择skel文件atlas文件需要在同目录下并且与skel文件名相同"; tableLayoutPanel2.Name = "tableLayoutPanel2";
label4.TextAlign = ContentAlignment.MiddleCenter; //
// // button_Ok
// label3 //
// resources.ApplyResources(button_Ok, "button_Ok");
label3.Anchor = AnchorStyles.Right; button_Ok.Name = "button_Ok";
label3.AutoSize = true; button_Ok.UseVisualStyleBackColor = true;
label3.Location = new Point(3, 343); button_Ok.Click += button_Ok_Click;
label3.Name = "label3"; //
label3.Size = new Size(50, 24); // button_Cancel
label3.TabIndex = 12; //
label3.Text = "版本:"; resources.ApplyResources(button_Cancel, "button_Cancel");
// button_Cancel.Name = "button_Cancel";
// comboBox_Version button_Cancel.UseVisualStyleBackColor = true;
// button_Cancel.Click += button_Cancel_Click;
comboBox_Version.Anchor = AnchorStyles.Left; //
comboBox_Version.DropDownStyle = ComboBoxStyle.DropDownList; // skelFileListBox
comboBox_Version.FormattingEnabled = true; //
comboBox_Version.Location = new Point(59, 339); resources.ApplyResources(skelFileListBox, "skelFileListBox");
comboBox_Version.Name = "comboBox_Version"; tableLayoutPanel1.SetColumnSpan(skelFileListBox, 2);
comboBox_Version.Size = new Size(182, 32); skelFileListBox.Name = "skelFileListBox";
comboBox_Version.Sorted = true; //
comboBox_Version.TabIndex = 13; // BatchOpenSpineDialog
// //
// tableLayoutPanel2 AcceptButton = button_Ok;
// resources.ApplyResources(this, "$this");
tableLayoutPanel2.AutoSize = true; AutoScaleMode = AutoScaleMode.Font;
tableLayoutPanel2.AutoSizeMode = AutoSizeMode.GrowAndShrink; CancelButton = button_Cancel;
tableLayoutPanel2.ColumnCount = 2; Controls.Add(panel);
tableLayoutPanel1.SetColumnSpan(tableLayoutPanel2, 4); FormBorderStyle = FormBorderStyle.FixedDialog;
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); MaximizeBox = false;
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); MinimizeBox = false;
tableLayoutPanel2.Controls.Add(button_Ok, 0, 0); Name = "BatchOpenSpineDialog";
tableLayoutPanel2.Controls.Add(button_Cancel, 1, 0); ShowInTaskbar = false;
tableLayoutPanel2.Dock = DockStyle.Fill; panel.ResumeLayout(false);
tableLayoutPanel2.Location = new Point(3, 404); tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel2.Margin = new Padding(3, 30, 3, 3); tableLayoutPanel1.PerformLayout();
tableLayoutPanel2.Name = "tableLayoutPanel2"; tableLayoutPanel2.ResumeLayout(false);
tableLayoutPanel2.RowCount = 1; ResumeLayout(false);
tableLayoutPanel2.RowStyles.Add(new RowStyle()); }
tableLayoutPanel2.Size = new Size(936, 40);
tableLayoutPanel2.TabIndex = 11;
//
// button_Ok
//
button_Ok.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
button_Ok.Location = new Point(326, 3);
button_Ok.Margin = new Padding(3, 3, 30, 3);
button_Ok.Name = "button_Ok";
button_Ok.Size = new Size(112, 34);
button_Ok.TabIndex = 7;
button_Ok.Text = "确认";
button_Ok.UseVisualStyleBackColor = true;
button_Ok.Click += button_Ok_Click;
//
// button_Cancel
//
button_Cancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
button_Cancel.Location = new Point(498, 3);
button_Cancel.Margin = new Padding(30, 3, 3, 3);
button_Cancel.Name = "button_Cancel";
button_Cancel.Size = new Size(112, 34);
button_Cancel.TabIndex = 8;
button_Cancel.Text = "取消";
button_Cancel.UseVisualStyleBackColor = true;
button_Cancel.Click += button_Cancel_Click;
//
// skelFileListBox
//
tableLayoutPanel1.SetColumnSpan(skelFileListBox, 2);
skelFileListBox.Dock = DockStyle.Fill;
skelFileListBox.Location = new Point(3, 57);
skelFileListBox.Name = "skelFileListBox";
skelFileListBox.Size = new Size(936, 276);
skelFileListBox.TabIndex = 15;
//
// BatchOpenSpineDialog
//
AcceptButton = button_Ok;
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
CancelButton = button_Cancel;
ClientSize = new Size(1042, 472);
Controls.Add(panel);
FormBorderStyle = FormBorderStyle.FixedDialog;
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
MinimizeBox = false;
Name = "BatchOpenSpineDialog";
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterScreen;
Text = "批量打开骨骼";
panel.ResumeLayout(false);
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
tableLayoutPanel2.ResumeLayout(false);
ResumeLayout(false);
}
#endregion #endregion
private Panel panel; private Panel panel;
private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel1;
private TableLayoutPanel tableLayoutPanel2; private TableLayoutPanel tableLayoutPanel2;
private Button button_Ok; private Button button_Ok;

View File

@@ -36,7 +36,7 @@ namespace SpineViewer.Dialogs
if (items.Count <= 0) if (items.Count <= 0)
{ {
MessagePopup.Info("未选择任何文件"); MessagePopup.Info("未选择任何文件", Properties.Resources.msgBoxInfo);
return; return;
} }
@@ -44,14 +44,14 @@ namespace SpineViewer.Dialogs
{ {
if (!File.Exists(p)) if (!File.Exists(p))
{ {
MessagePopup.Info($"{p}", "skel文件不存在"); MessagePopup.Info($"{p}", Properties.Resources.skelNotExist);
return; return;
} }
} }
if (version != SpineVersion.Auto && !Spine.SpineObject.HasImplementation(version)) if (version != SpineVersion.Auto && !Spine.SpineObject.HasImplementation(version))
{ {
MessagePopup.Info($"{version.GetName()} 版本尚未实现(咕咕咕~"); MessagePopup.Info($"{version.GetName()} 版本尚未实现(咕咕咕~", Properties.Resources.msgBoxInfo);
return; return;
} }

File diff suppressed because it is too large Load Diff

View File

@@ -118,6 +118,102 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="skelFileListBox.Size" type="System.Drawing.Size, System.Drawing">
<value>684, 234</value>
</data>
<data name="&gt;&gt;panel.Name" xml:space="preserve">
<value>panel</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="comboBox_Version.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 28</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>682, 32</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button_Ok.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>说明批量导入只需要选择skel文件atlas文件需要在同目录下并且与skel文件名相同</value>
</data>
<data name="skelFileListBox.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 46</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Cancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;skelFileListBox.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>label4</value>
</data>
<data name="&gt;&gt;panel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 339</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;comboBox_Version.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="panel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>36, 12, 36, 8</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Cancel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>22, 2, 2, 2</value>
</data>
<data name="button_Ok.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="button_Ok.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 22, 2</value>
</data>
<data name="panel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;button_Ok.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBox_Version.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="panel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA
@@ -3264,4 +3360,226 @@
////////wAAAAAAAB/////// ////////wAAAAAAAB///////
</value> </value>
</data> </data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 12</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="skelFileListBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 2, 1, 2</value>
</data>
<data name="label4.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="button_Cancel.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 28</value>
</data>
<data name="&gt;&gt;button_Ok.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;button_Ok.Name" xml:space="preserve">
<value>button_Ok</value>
</data>
<data name="comboBox_Version.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>批量打开骨骼</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<data name="button_Ok.Location" type="System.Drawing.Point, System.Drawing">
<value>238, 2</value>
</data>
<data name="comboBox_Version.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;button_Ok.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>686, 373</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="comboBox_Version.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_Ok.Text" xml:space="preserve">
<value>确认</value>
</data>
<data name="&gt;&gt;button_Cancel.Name" xml:space="preserve">
<value>button_Cancel</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_Cancel.Location" type="System.Drawing.Point, System.Drawing">
<value>363, 2</value>
</data>
<data name="&gt;&gt;skelFileListBox.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;button_Cancel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>BatchOpenSpineDialog</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 288</value>
</data>
<data name="panel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label4.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="&gt;&gt;button_Cancel.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Cancel.Text" xml:space="preserve">
<value>取消</value>
</data>
<data name="label4.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>11, 12, 11, 12</value>
</data>
<data name="label4.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="skelFileListBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;skelFileListBox.Name" xml:space="preserve">
<value>skelFileListBox</value>
</data>
<data name="panel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>664, 20</value>
</data>
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 25, 2, 2</value>
</data>
<data name="label3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Right</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>758, 393</value>
</data>
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 20</value>
</data>
<data name="&gt;&gt;button_Cancel.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="comboBox_Version.Location" type="System.Drawing.Point, System.Drawing">
<value>48, 284</value>
</data>
<data name="button_Cancel.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;comboBox_Version.Name" xml:space="preserve">
<value>comboBox_Version</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="panel.Size" type="System.Drawing.Size, System.Drawing">
<value>758, 393</value>
</data>
<data name="button_Ok.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 28</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="skelFileListBox.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="label4" Row="0" RowSpan="1" Column="0" ColumnSpan="4" /&gt;&lt;Control Name="label3" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="comboBox_Version" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanel2" Row="3" RowSpan="1" Column="0" ColumnSpan="4" /&gt;&lt;Control Name="skelFileListBox" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="&gt;&gt;comboBox_Version.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="button_Ok" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="button_Cancel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,50,Percent,50" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>版本:</value>
</data>
<data name="&gt;&gt;panel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>panel</value>
</data>
<data name="&gt;&gt;skelFileListBox.Type" xml:space="preserve">
<value>SpineViewer.Controls.SkelFileListBox, SpineViewer, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 12</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root> </root>

View File

@@ -20,314 +20,200 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConvertFileFormatDialog)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConvertFileFormatDialog));
panel = new Panel(); panel = new Panel();
tableLayoutPanel1 = new TableLayoutPanel(); tableLayoutPanel1 = new TableLayoutPanel();
label5 = new Label(); label5 = new Label();
comboBox_TargetVersion = new ComboBox(); comboBox_TargetVersion = new ComboBox();
flowLayoutPanel_TargetFormat = new FlowLayoutPanel(); flowLayoutPanel_TargetFormat = new FlowLayoutPanel();
radioButton_BinaryTarget = new RadioButton(); radioButton_BinaryTarget = new RadioButton();
radioButton_JsonTarget = new RadioButton(); radioButton_JsonTarget = new RadioButton();
label1 = new Label(); label1 = new Label();
label4 = new Label(); label4 = new Label();
label3 = new Label(); label3 = new Label();
comboBox_SourceVersion = new ComboBox(); comboBox_SourceVersion = new ComboBox();
tableLayoutPanel2 = new TableLayoutPanel(); tableLayoutPanel2 = new TableLayoutPanel();
button_Ok = new Button(); button_Ok = new Button();
button_Cancel = new Button(); button_Cancel = new Button();
label2 = new Label(); label2 = new Label();
skelFileListBox = new SpineViewer.Controls.SkelFileListBox(); skelFileListBox = new Controls.SkelFileListBox();
tableLayoutPanel3 = new TableLayoutPanel(); tableLayoutPanel3 = new TableLayoutPanel();
textBox_OutputDir = new TextBox(); textBox_OutputDir = new TextBox();
button_SelectOutputDir = new Button(); button_SelectOutputDir = new Button();
folderBrowserDialog_Output = new FolderBrowserDialog(); folderBrowserDialog_Output = new FolderBrowserDialog();
panel.SuspendLayout(); panel.SuspendLayout();
tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.SuspendLayout();
flowLayoutPanel_TargetFormat.SuspendLayout(); flowLayoutPanel_TargetFormat.SuspendLayout();
tableLayoutPanel2.SuspendLayout(); tableLayoutPanel2.SuspendLayout();
tableLayoutPanel3.SuspendLayout(); tableLayoutPanel3.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// panel // panel
// //
panel.Controls.Add(tableLayoutPanel1); panel.Controls.Add(tableLayoutPanel1);
panel.Dock = DockStyle.Fill; resources.ApplyResources(panel, "panel");
panel.Location = new Point(0, 0); panel.Name = "panel";
panel.Name = "panel"; //
panel.Padding = new Padding(50, 15, 50, 10); // tableLayoutPanel1
panel.Size = new Size(1051, 702); //
panel.TabIndex = 2; resources.ApplyResources(tableLayoutPanel1, "tableLayoutPanel1");
// tableLayoutPanel1.Controls.Add(label5, 0, 2);
// tableLayoutPanel1 tableLayoutPanel1.Controls.Add(comboBox_TargetVersion, 1, 4);
// tableLayoutPanel1.Controls.Add(flowLayoutPanel_TargetFormat, 1, 5);
tableLayoutPanel1.ColumnCount = 2; tableLayoutPanel1.Controls.Add(label1, 0, 4);
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle()); tableLayoutPanel1.Controls.Add(label4, 0, 0);
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); tableLayoutPanel1.Controls.Add(label3, 0, 3);
tableLayoutPanel1.Controls.Add(label5, 0, 2); tableLayoutPanel1.Controls.Add(comboBox_SourceVersion, 1, 3);
tableLayoutPanel1.Controls.Add(comboBox_TargetVersion, 1, 4); tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 6);
tableLayoutPanel1.Controls.Add(flowLayoutPanel_TargetFormat, 1, 5); tableLayoutPanel1.Controls.Add(label2, 0, 5);
tableLayoutPanel1.Controls.Add(label1, 0, 4); tableLayoutPanel1.Controls.Add(skelFileListBox, 0, 1);
tableLayoutPanel1.Controls.Add(label4, 0, 0); tableLayoutPanel1.Controls.Add(tableLayoutPanel3, 1, 2);
tableLayoutPanel1.Controls.Add(label3, 0, 3); tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.Controls.Add(comboBox_SourceVersion, 1, 3); //
tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 6); // label5
tableLayoutPanel1.Controls.Add(label2, 0, 5); //
tableLayoutPanel1.Controls.Add(skelFileListBox, 0, 1); resources.ApplyResources(label5, "label5");
tableLayoutPanel1.Controls.Add(tableLayoutPanel3, 1, 2); label5.Name = "label5";
tableLayoutPanel1.Dock = DockStyle.Fill; //
tableLayoutPanel1.Location = new Point(50, 15); // comboBox_TargetVersion
tableLayoutPanel1.Name = "tableLayoutPanel1"; //
tableLayoutPanel1.RowCount = 7; resources.ApplyResources(comboBox_TargetVersion, "comboBox_TargetVersion");
tableLayoutPanel1.RowStyles.Add(new RowStyle()); comboBox_TargetVersion.DropDownStyle = ComboBoxStyle.DropDownList;
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); comboBox_TargetVersion.FormattingEnabled = true;
tableLayoutPanel1.RowStyles.Add(new RowStyle()); comboBox_TargetVersion.Name = "comboBox_TargetVersion";
tableLayoutPanel1.RowStyles.Add(new RowStyle()); comboBox_TargetVersion.Sorted = true;
tableLayoutPanel1.RowStyles.Add(new RowStyle()); //
tableLayoutPanel1.RowStyles.Add(new RowStyle()); // flowLayoutPanel_TargetFormat
tableLayoutPanel1.RowStyles.Add(new RowStyle()); //
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F)); resources.ApplyResources(flowLayoutPanel_TargetFormat, "flowLayoutPanel_TargetFormat");
tableLayoutPanel1.Size = new Size(951, 677); flowLayoutPanel_TargetFormat.Controls.Add(radioButton_BinaryTarget);
tableLayoutPanel1.TabIndex = 1; flowLayoutPanel_TargetFormat.Controls.Add(radioButton_JsonTarget);
// flowLayoutPanel_TargetFormat.Name = "flowLayoutPanel_TargetFormat";
// label5 //
// // radioButton_BinaryTarget
label5.Anchor = AnchorStyles.Left | AnchorStyles.Right; //
label5.AutoSize = true; resources.ApplyResources(radioButton_BinaryTarget, "radioButton_BinaryTarget");
label5.Location = new Point(3, 462); radioButton_BinaryTarget.Name = "radioButton_BinaryTarget";
label5.Name = "label5"; radioButton_BinaryTarget.UseVisualStyleBackColor = true;
label5.Size = new Size(104, 24); //
label5.TabIndex = 23; // radioButton_JsonTarget
label5.Text = "输出文件夹:"; //
// resources.ApplyResources(radioButton_JsonTarget, "radioButton_JsonTarget");
// comboBox_TargetVersion radioButton_JsonTarget.Checked = true;
// radioButton_JsonTarget.Name = "radioButton_JsonTarget";
comboBox_TargetVersion.Anchor = AnchorStyles.Left; radioButton_JsonTarget.TabStop = true;
comboBox_TargetVersion.DropDownStyle = ComboBoxStyle.DropDownList; radioButton_JsonTarget.UseVisualStyleBackColor = true;
comboBox_TargetVersion.FormattingEnabled = true; //
comboBox_TargetVersion.Location = new Point(113, 535); // label1
comboBox_TargetVersion.Name = "comboBox_TargetVersion"; //
comboBox_TargetVersion.Size = new Size(182, 32); resources.ApplyResources(label1, "label1");
comboBox_TargetVersion.Sorted = true; label1.Name = "label1";
comboBox_TargetVersion.TabIndex = 21; //
// // label4
// flowLayoutPanel_TargetFormat //
// resources.ApplyResources(label4, "label4");
flowLayoutPanel_TargetFormat.AutoSize = true; tableLayoutPanel1.SetColumnSpan(label4, 4);
flowLayoutPanel_TargetFormat.Controls.Add(radioButton_BinaryTarget); label4.Name = "label4";
flowLayoutPanel_TargetFormat.Controls.Add(radioButton_JsonTarget); //
flowLayoutPanel_TargetFormat.Dock = DockStyle.Fill; // label3
flowLayoutPanel_TargetFormat.Location = new Point(110, 570); //
flowLayoutPanel_TargetFormat.Margin = new Padding(0); resources.ApplyResources(label3, "label3");
flowLayoutPanel_TargetFormat.Name = "flowLayoutPanel_TargetFormat"; label3.Name = "label3";
flowLayoutPanel_TargetFormat.Size = new Size(841, 34); //
flowLayoutPanel_TargetFormat.TabIndex = 19; // comboBox_SourceVersion
// //
// radioButton_BinaryTarget resources.ApplyResources(comboBox_SourceVersion, "comboBox_SourceVersion");
// comboBox_SourceVersion.DropDownStyle = ComboBoxStyle.DropDownList;
radioButton_BinaryTarget.AutoSize = true; comboBox_SourceVersion.FormattingEnabled = true;
radioButton_BinaryTarget.Location = new Point(3, 3); comboBox_SourceVersion.Name = "comboBox_SourceVersion";
radioButton_BinaryTarget.Name = "radioButton_BinaryTarget"; comboBox_SourceVersion.Sorted = true;
radioButton_BinaryTarget.Size = new Size(151, 28); //
radioButton_BinaryTarget.TabIndex = 17; // tableLayoutPanel2
radioButton_BinaryTarget.Text = "二进制 (*.skel)"; //
radioButton_BinaryTarget.UseVisualStyleBackColor = true; resources.ApplyResources(tableLayoutPanel2, "tableLayoutPanel2");
// tableLayoutPanel1.SetColumnSpan(tableLayoutPanel2, 4);
// radioButton_JsonTarget tableLayoutPanel2.Controls.Add(button_Ok, 0, 0);
// tableLayoutPanel2.Controls.Add(button_Cancel, 1, 0);
radioButton_JsonTarget.AutoSize = true; tableLayoutPanel2.Name = "tableLayoutPanel2";
radioButton_JsonTarget.Checked = true; //
radioButton_JsonTarget.Location = new Point(160, 3); // button_Ok
radioButton_JsonTarget.Name = "radioButton_JsonTarget"; //
radioButton_JsonTarget.Size = new Size(135, 28); resources.ApplyResources(button_Ok, "button_Ok");
radioButton_JsonTarget.TabIndex = 18; button_Ok.Name = "button_Ok";
radioButton_JsonTarget.TabStop = true; button_Ok.UseVisualStyleBackColor = true;
radioButton_JsonTarget.Text = "文本 (*.json)"; button_Ok.Click += button_Ok_Click;
radioButton_JsonTarget.UseVisualStyleBackColor = true; //
// // button_Cancel
// label1 //
// resources.ApplyResources(button_Cancel, "button_Cancel");
label1.Anchor = AnchorStyles.Right; button_Cancel.Name = "button_Cancel";
label1.AutoSize = true; button_Cancel.UseVisualStyleBackColor = true;
label1.Location = new Point(21, 539); button_Cancel.Click += button_Cancel_Click;
label1.Name = "label1"; //
label1.Size = new Size(86, 24); // label2
label1.TabIndex = 15; //
label1.Text = "目标版本:"; resources.ApplyResources(label2, "label2");
// label2.Name = "label2";
// label4 //
// // skelFileListBox
label4.AutoSize = true; //
tableLayoutPanel1.SetColumnSpan(label4, 4); tableLayoutPanel1.SetColumnSpan(skelFileListBox, 2);
label4.Dock = DockStyle.Fill; resources.ApplyResources(skelFileListBox, "skelFileListBox");
label4.Location = new Point(15, 15); skelFileListBox.Name = "skelFileListBox";
label4.Margin = new Padding(15); //
label4.Name = "label4"; // tableLayoutPanel3
label4.Size = new Size(921, 24); //
label4.TabIndex = 14; resources.ApplyResources(tableLayoutPanel3, "tableLayoutPanel3");
label4.Text = "说明:输出文件夹留空则在每个文件同级目录下生成目标格式后缀的文件,视情况会覆盖已存在文件"; tableLayoutPanel3.Controls.Add(textBox_OutputDir, 1, 0);
label4.TextAlign = ContentAlignment.MiddleCenter; tableLayoutPanel3.Controls.Add(button_SelectOutputDir, 2, 0);
// tableLayoutPanel3.Name = "tableLayoutPanel3";
// label3 //
// // textBox_OutputDir
label3.Anchor = AnchorStyles.Right; //
label3.AutoSize = true; resources.ApplyResources(textBox_OutputDir, "textBox_OutputDir");
label3.Location = new Point(39, 501); textBox_OutputDir.Name = "textBox_OutputDir";
label3.Name = "label3"; //
label3.Size = new Size(68, 24); // button_SelectOutputDir
label3.TabIndex = 12; //
label3.Text = "源版本:"; resources.ApplyResources(button_SelectOutputDir, "button_SelectOutputDir");
// button_SelectOutputDir.Name = "button_SelectOutputDir";
// comboBox_SourceVersion button_SelectOutputDir.UseVisualStyleBackColor = true;
// button_SelectOutputDir.Click += button_SelectOutputDir_Click;
comboBox_SourceVersion.Anchor = AnchorStyles.Left; //
comboBox_SourceVersion.DropDownStyle = ComboBoxStyle.DropDownList; // ConvertFileFormatDialog
comboBox_SourceVersion.FormattingEnabled = true; //
comboBox_SourceVersion.Location = new Point(113, 497); AcceptButton = button_Ok;
comboBox_SourceVersion.Name = "comboBox_SourceVersion"; resources.ApplyResources(this, "$this");
comboBox_SourceVersion.Size = new Size(182, 32); AutoScaleMode = AutoScaleMode.Font;
comboBox_SourceVersion.Sorted = true; CancelButton = button_Cancel;
comboBox_SourceVersion.TabIndex = 13; Controls.Add(panel);
// FormBorderStyle = FormBorderStyle.FixedDialog;
// tableLayoutPanel2 MaximizeBox = false;
// MinimizeBox = false;
tableLayoutPanel2.AutoSize = true; Name = "ConvertFileFormatDialog";
tableLayoutPanel2.AutoSizeMode = AutoSizeMode.GrowAndShrink; ShowInTaskbar = false;
tableLayoutPanel2.ColumnCount = 2; panel.ResumeLayout(false);
tableLayoutPanel1.SetColumnSpan(tableLayoutPanel2, 4); tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); tableLayoutPanel1.PerformLayout();
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); flowLayoutPanel_TargetFormat.ResumeLayout(false);
tableLayoutPanel2.Controls.Add(button_Ok, 0, 0); flowLayoutPanel_TargetFormat.PerformLayout();
tableLayoutPanel2.Controls.Add(button_Cancel, 1, 0); tableLayoutPanel2.ResumeLayout(false);
tableLayoutPanel2.Dock = DockStyle.Fill; tableLayoutPanel3.ResumeLayout(false);
tableLayoutPanel2.Location = new Point(3, 634); tableLayoutPanel3.PerformLayout();
tableLayoutPanel2.Margin = new Padding(3, 30, 3, 3); ResumeLayout(false);
tableLayoutPanel2.Name = "tableLayoutPanel2"; }
tableLayoutPanel2.RowCount = 1;
tableLayoutPanel2.RowStyles.Add(new RowStyle());
tableLayoutPanel2.Size = new Size(945, 40);
tableLayoutPanel2.TabIndex = 11;
//
// button_Ok
//
button_Ok.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
button_Ok.Location = new Point(330, 3);
button_Ok.Margin = new Padding(3, 3, 30, 3);
button_Ok.Name = "button_Ok";
button_Ok.Size = new Size(112, 34);
button_Ok.TabIndex = 7;
button_Ok.Text = "确认";
button_Ok.UseVisualStyleBackColor = true;
button_Ok.Click += button_Ok_Click;
//
// button_Cancel
//
button_Cancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
button_Cancel.Location = new Point(502, 3);
button_Cancel.Margin = new Padding(30, 3, 3, 3);
button_Cancel.Name = "button_Cancel";
button_Cancel.Size = new Size(112, 34);
button_Cancel.TabIndex = 8;
button_Cancel.Text = "取消";
button_Cancel.UseVisualStyleBackColor = true;
button_Cancel.Click += button_Cancel_Click;
//
// label2
//
label2.Anchor = AnchorStyles.Right;
label2.AutoSize = true;
label2.Location = new Point(21, 575);
label2.Name = "label2";
label2.Size = new Size(86, 24);
label2.TabIndex = 16;
label2.Text = "目标格式:";
//
// skelFileListBox
//
tableLayoutPanel1.SetColumnSpan(skelFileListBox, 2);
skelFileListBox.Dock = DockStyle.Fill;
skelFileListBox.Location = new Point(3, 57);
skelFileListBox.Name = "skelFileListBox";
skelFileListBox.Size = new Size(945, 394);
skelFileListBox.TabIndex = 20;
//
// tableLayoutPanel3
//
tableLayoutPanel3.AutoSize = true;
tableLayoutPanel3.AutoSizeMode = AutoSizeMode.GrowAndShrink;
tableLayoutPanel3.ColumnCount = 3;
tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle());
tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle());
tableLayoutPanel3.Controls.Add(textBox_OutputDir, 1, 0);
tableLayoutPanel3.Controls.Add(button_SelectOutputDir, 2, 0);
tableLayoutPanel3.Dock = DockStyle.Fill;
tableLayoutPanel3.Location = new Point(110, 454);
tableLayoutPanel3.Margin = new Padding(0);
tableLayoutPanel3.Name = "tableLayoutPanel3";
tableLayoutPanel3.RowCount = 1;
tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
tableLayoutPanel3.Size = new Size(841, 40);
tableLayoutPanel3.TabIndex = 22;
//
// textBox_OutputDir
//
textBox_OutputDir.Anchor = AnchorStyles.Left | AnchorStyles.Right;
textBox_OutputDir.Location = new Point(3, 5);
textBox_OutputDir.Name = "textBox_OutputDir";
textBox_OutputDir.Size = new Size(797, 30);
textBox_OutputDir.TabIndex = 1;
//
// button_SelectOutputDir
//
button_SelectOutputDir.Anchor = AnchorStyles.Left | AnchorStyles.Right;
button_SelectOutputDir.AutoSize = true;
button_SelectOutputDir.AutoSizeMode = AutoSizeMode.GrowAndShrink;
button_SelectOutputDir.Location = new Point(806, 3);
button_SelectOutputDir.Name = "button_SelectOutputDir";
button_SelectOutputDir.Size = new Size(32, 34);
button_SelectOutputDir.TabIndex = 2;
button_SelectOutputDir.Text = "...";
button_SelectOutputDir.UseVisualStyleBackColor = true;
button_SelectOutputDir.Click += button_SelectOutputDir_Click;
//
// ConvertFileFormatDialog
//
AcceptButton = button_Ok;
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
CancelButton = button_Cancel;
ClientSize = new Size(1051, 702);
Controls.Add(panel);
FormBorderStyle = FormBorderStyle.FixedDialog;
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
MinimizeBox = false;
Name = "ConvertFileFormatDialog";
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterScreen;
Text = "骨骼文件格式转换";
panel.ResumeLayout(false);
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
flowLayoutPanel_TargetFormat.ResumeLayout(false);
flowLayoutPanel_TargetFormat.PerformLayout();
tableLayoutPanel2.ResumeLayout(false);
tableLayoutPanel3.ResumeLayout(false);
tableLayoutPanel3.PerformLayout();
ResumeLayout(false);
}
#endregion #endregion
private Panel panel; private Panel panel;
private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel1;
private Label label4; private Label label4;
private Label label3; private Label label3;

View File

@@ -59,7 +59,7 @@ namespace SpineViewer.Dialogs
if (items.Count <= 0) if (items.Count <= 0)
{ {
MessagePopup.Info("未选择任何文件"); MessagePopup.Info("未选择任何文件", Properties.Resources.msgBoxInfo);
return; return;
} }
@@ -72,7 +72,7 @@ namespace SpineViewer.Dialogs
outputDir = Path.GetFullPath(outputDir); outputDir = Path.GetFullPath(outputDir);
if (!Directory.Exists(outputDir)) if (!Directory.Exists(outputDir))
{ {
if (MessagePopup.Quest("输出文件夹不存在,是否创建?") == DialogResult.OK) if (MessagePopup.Quest("输出文件夹不存在,是否创建?", Properties.Resources.msgBoxQuest) == DialogResult.OK)
{ {
try try
{ {
@@ -82,7 +82,7 @@ namespace SpineViewer.Dialogs
{ {
logger.Error(ex.ToString()); logger.Error(ex.ToString());
logger.Error("Failed to create output dir {}", outputDir); logger.Error("Failed to create output dir {}", outputDir);
MessagePopup.Error(ex.ToString()); MessagePopup.Error(ex.ToString(), Properties.Resources.msgBoxError);
return; return;
} }
} }
@@ -97,20 +97,20 @@ namespace SpineViewer.Dialogs
{ {
if (!File.Exists(p)) if (!File.Exists(p))
{ {
MessagePopup.Info($"{p}", "skel文件不存在"); MessagePopup.Info($"{p}", Properties.Resources.skelNotExist);
return; return;
} }
} }
if (sourceVersion != SpineVersion.Auto && !SkeletonConverter.HasImplementation(sourceVersion)) if (sourceVersion != SpineVersion.Auto && !SkeletonConverter.HasImplementation(sourceVersion))
{ {
MessagePopup.Info($"{sourceVersion.GetName()} 版本尚未实现(咕咕咕~"); MessagePopup.Info($"{sourceVersion.GetName()} 版本尚未实现(咕咕咕~", Properties.Resources.msgBoxInfo);
return; return;
} }
if (!SkeletonConverter.HasImplementation(targetVersion)) if (!SkeletonConverter.HasImplementation(targetVersion))
{ {
MessagePopup.Info($"{targetVersion.GetName()} 版本尚未实现(咕咕咕~"); MessagePopup.Info($"{targetVersion.GetName()} 版本尚未实现(咕咕咕~", Properties.Resources.msgBoxInfo);
return; return;
} }

View File

@@ -117,10 +117,637 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="panel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="panel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="panel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="panel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>36, 12, 36, 8</value>
</data>
<data name="panel.Size" type="System.Drawing.Size, System.Drawing">
<value>764, 585</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="panel.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;panel.Name" xml:space="preserve">
<value>panel</value>
</data>
<data name="&gt;&gt;panel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;panel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="label5.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left, Right</value>
</data>
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 387</value>
</data>
<data name="label5.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 20</value>
</data>
<data name="label5.TabIndex" type="System.Int32, mscorlib">
<value>23</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>Output folder:</value>
</data>
<data name="&gt;&gt;label5.Name" xml:space="preserve">
<value>label5</value>
</data>
<data name="&gt;&gt;label5.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label5.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label5.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="comboBox_TargetVersion.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="comboBox_TargetVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>110, 448</value>
</data>
<data name="comboBox_TargetVersion.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="comboBox_TargetVersion.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 28</value>
</data>
<data name="comboBox_TargetVersion.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="&gt;&gt;comboBox_TargetVersion.Name" xml:space="preserve">
<value>comboBox_TargetVersion</value>
</data>
<data name="&gt;&gt;comboBox_TargetVersion.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBox_TargetVersion.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBox_TargetVersion.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="flowLayoutPanel_TargetFormat.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="flowLayoutPanel_TargetFormat.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel_TargetFormat.Location" type="System.Drawing.Point, System.Drawing">
<value>108, 478</value>
</data>
<data name="flowLayoutPanel_TargetFormat.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="flowLayoutPanel_TargetFormat.Size" type="System.Drawing.Size, System.Drawing">
<value>584, 28</value>
</data>
<data name="flowLayoutPanel_TargetFormat.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="&gt;&gt;flowLayoutPanel_TargetFormat.Name" xml:space="preserve">
<value>flowLayoutPanel_TargetFormat</value>
</data>
<data name="&gt;&gt;flowLayoutPanel_TargetFormat.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel_TargetFormat.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel_TargetFormat.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Right</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 452</value>
</data>
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 20</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Target version:</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label4.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 12</value>
</data>
<data name="label4.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>11, 12, 11, 12</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>670, 40</value>
</data>
<data name="label4.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Note: If the output folder is left blank, a file with the target format suffix will be generated in the same directory as each file, and the existing file will be overwritten if necessary.</value>
</data>
<data name="label4.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>label4</value>
</data>
<data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="label3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Right</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 420</value>
</data>
<data name="label3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 20</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Spine version:</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="comboBox_SourceVersion.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="comboBox_SourceVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>110, 416</value>
</data>
<data name="comboBox_SourceVersion.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="comboBox_SourceVersion.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 28</value>
</data>
<data name="comboBox_SourceVersion.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;comboBox_SourceVersion.Name" xml:space="preserve">
<value>comboBox_SourceVersion</value>
</data>
<data name="&gt;&gt;comboBox_SourceVersion.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBox_SourceVersion.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBox_SourceVersion.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;button_Ok.Name" xml:space="preserve">
<value>button_Ok</value>
</data>
<data name="&gt;&gt;button_Ok.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button_Ok.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;button_Ok.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;button_Cancel.Name" xml:space="preserve">
<value>button_Cancel</value>
</data>
<data name="&gt;&gt;button_Cancel.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button_Cancel.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;button_Cancel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 531</value>
</data>
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 25, 2, 2</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>688, 32</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="button_Ok" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="button_Cancel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,50,Percent,50" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Right</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 482</value>
</data>
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 20</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Target format:</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="skelFileListBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="skelFileListBox.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 66</value>
</data>
<data name="skelFileListBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 2, 1, 2</value>
</data>
<data name="skelFileListBox.Size" type="System.Drawing.Size, System.Drawing">
<value>690, 312</value>
</data>
<data name="skelFileListBox.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="&gt;&gt;skelFileListBox.Name" xml:space="preserve">
<value>skelFileListBox</value>
</data>
<data name="&gt;&gt;skelFileListBox.Type" xml:space="preserve">
<value>SpineViewer.Controls.SkelFileListBox, SpineViewer, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;skelFileListBox.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;skelFileListBox.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="tableLayoutPanel3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel3.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel3.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;textBox_OutputDir.Name" xml:space="preserve">
<value>textBox_OutputDir</value>
</data>
<data name="&gt;&gt;textBox_OutputDir.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;textBox_OutputDir.Parent" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;textBox_OutputDir.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;button_SelectOutputDir.Name" xml:space="preserve">
<value>button_SelectOutputDir</value>
</data>
<data name="&gt;&gt;button_SelectOutputDir.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button_SelectOutputDir.Parent" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;button_SelectOutputDir.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel3.Location" type="System.Drawing.Point, System.Drawing">
<value>108, 380</value>
</data>
<data name="tableLayoutPanel3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel3.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel3.Size" type="System.Drawing.Size, System.Drawing">
<value>584, 34</value>
</data>
<data name="tableLayoutPanel3.TabIndex" type="System.Int32, mscorlib">
<value>22</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.Name" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="tableLayoutPanel3.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="textBox_OutputDir" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="button_SelectOutputDir" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /&gt;&lt;Rows Styles="Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 12</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>692, 565</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>panel</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="label5" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="comboBox_TargetVersion" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="flowLayoutPanel_TargetFormat" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label4" Row="0" RowSpan="1" Column="0" ColumnSpan="4" /&gt;&lt;Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="comboBox_SourceVersion" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanel2" Row="6" RowSpan="1" Column="0" ColumnSpan="4" /&gt;&lt;Control Name="label2" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="skelFileListBox" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="tableLayoutPanel3" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,17" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="radioButton_BinaryTarget.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioButton_BinaryTarget.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 2</value>
</data>
<data name="radioButton_BinaryTarget.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="radioButton_BinaryTarget.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 24</value>
</data>
<data name="radioButton_BinaryTarget.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="radioButton_BinaryTarget.Text" xml:space="preserve">
<value>Binary (*.skel)</value>
</data>
<data name="&gt;&gt;radioButton_BinaryTarget.Name" xml:space="preserve">
<value>radioButton_BinaryTarget</value>
</data>
<data name="&gt;&gt;radioButton_BinaryTarget.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioButton_BinaryTarget.Parent" xml:space="preserve">
<value>flowLayoutPanel_TargetFormat</value>
</data>
<data name="&gt;&gt;radioButton_BinaryTarget.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="radioButton_JsonTarget.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioButton_JsonTarget.Location" type="System.Drawing.Point, System.Drawing">
<value>125, 2</value>
</data>
<data name="radioButton_JsonTarget.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="radioButton_JsonTarget.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 24</value>
</data>
<data name="radioButton_JsonTarget.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="radioButton_JsonTarget.Text" xml:space="preserve">
<value>Text (*.json)</value>
</data>
<data name="&gt;&gt;radioButton_JsonTarget.Name" xml:space="preserve">
<value>radioButton_JsonTarget</value>
</data>
<data name="&gt;&gt;radioButton_JsonTarget.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioButton_JsonTarget.Parent" xml:space="preserve">
<value>flowLayoutPanel_TargetFormat</value>
</data>
<data name="&gt;&gt;radioButton_JsonTarget.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="button_Ok.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="button_Ok.Location" type="System.Drawing.Point, System.Drawing">
<value>241, 2</value>
</data>
<data name="button_Ok.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 22, 2</value>
</data>
<data name="button_Ok.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 28</value>
</data>
<data name="button_Ok.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="button_Ok.Text" xml:space="preserve">
<value>Confirm</value>
</data>
<data name="button_Cancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="button_Cancel.Location" type="System.Drawing.Point, System.Drawing">
<value>366, 2</value>
</data>
<data name="button_Cancel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>22, 2, 2, 2</value>
</data>
<data name="button_Cancel.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 28</value>
</data>
<data name="button_Cancel.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="button_Cancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="textBox_OutputDir.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left, Right</value>
</data>
<data name="textBox_OutputDir.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 3</value>
</data>
<data name="textBox_OutputDir.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="textBox_OutputDir.Size" type="System.Drawing.Size, System.Drawing">
<value>548, 27</value>
</data>
<data name="textBox_OutputDir.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="button_SelectOutputDir.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left, Right</value>
</data>
<data name="button_SelectOutputDir.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button_SelectOutputDir.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="button_SelectOutputDir.Location" type="System.Drawing.Point, System.Drawing">
<value>554, 2</value>
</data>
<data name="button_SelectOutputDir.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_SelectOutputDir.Size" type="System.Drawing.Size, System.Drawing">
<value>28, 30</value>
</data>
<data name="button_SelectOutputDir.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="button_SelectOutputDir.Text" xml:space="preserve">
<value>...</value>
</data>
<metadata name="folderBrowserDialog_Output.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="folderBrowserDialog_Output.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>36, 22</value> <value>36, 22</value>
</metadata> </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <metadata name="$this.Language" type="System.Globalization.CultureInfo, System.Private.CoreLib, Culture=neutral, PublicKeyToken=7cec85d7bea7798e">
<value>en</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>764, 585</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA
@@ -3267,4 +3894,25 @@
////////wAAAAAAAB/////// ////////wAAAAAAAB///////
</value> </value>
</data> </data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>File format conversion</value>
</data>
<data name="&gt;&gt;folderBrowserDialog_Output.Name" xml:space="preserve">
<value>folderBrowserDialog_Output</value>
</data>
<data name="&gt;&gt;folderBrowserDialog_Output.Type" xml:space="preserve">
<value>System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ConvertFileFormatDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root> </root>

View File

@@ -20,96 +20,68 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DiagnosticsDialog)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DiagnosticsDialog));
panel1 = new Panel(); panel1 = new Panel();
tableLayoutPanel1 = new TableLayoutPanel(); tableLayoutPanel1 = new TableLayoutPanel();
button_Copy = new Button(); button_Copy = new Button();
propertyGrid = new PropertyGrid(); propertyGrid = new PropertyGrid();
panel1.SuspendLayout(); panel1.SuspendLayout();
tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// panel1 // panel1
// //
panel1.Controls.Add(tableLayoutPanel1); resources.ApplyResources(panel1, "panel1");
panel1.Dock = DockStyle.Fill; panel1.Controls.Add(tableLayoutPanel1);
panel1.Location = new Point(0, 0); panel1.Name = "panel1";
panel1.Name = "panel1"; //
panel1.Padding = new Padding(50, 15, 50, 10); // tableLayoutPanel1
panel1.Size = new Size(901, 452); //
panel1.TabIndex = 1; resources.ApplyResources(tableLayoutPanel1, "tableLayoutPanel1");
// tableLayoutPanel1.Controls.Add(button_Copy, 0, 1);
// tableLayoutPanel1 tableLayoutPanel1.Controls.Add(propertyGrid, 0, 0);
// tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.AutoSize = true; //
tableLayoutPanel1.ColumnCount = 1; // button_Copy
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); //
tableLayoutPanel1.Controls.Add(button_Copy, 0, 1); resources.ApplyResources(button_Copy, "button_Copy");
tableLayoutPanel1.Controls.Add(propertyGrid, 0, 0); button_Copy.Name = "button_Copy";
tableLayoutPanel1.Dock = DockStyle.Fill; button_Copy.UseVisualStyleBackColor = true;
tableLayoutPanel1.Location = new Point(50, 15); button_Copy.Click += button_Copy_Click;
tableLayoutPanel1.Name = "tableLayoutPanel1"; //
tableLayoutPanel1.RowCount = 2; // propertyGrid
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); //
tableLayoutPanel1.RowStyles.Add(new RowStyle()); resources.ApplyResources(propertyGrid, "propertyGrid");
tableLayoutPanel1.Size = new Size(801, 427); propertyGrid.Name = "propertyGrid";
tableLayoutPanel1.TabIndex = 0; propertyGrid.ToolbarVisible = false;
// //
// button_Copy // DiagnosticsDialog
// //
button_Copy.Anchor = AnchorStyles.None; resources.ApplyResources(this, "$this");
button_Copy.AutoSize = true; AutoScaleMode = AutoScaleMode.Font;
button_Copy.Location = new Point(326, 390); Controls.Add(panel1);
button_Copy.Margin = new Padding(3, 10, 3, 3); MaximizeBox = false;
button_Copy.Name = "button_Copy"; MinimizeBox = false;
button_Copy.Padding = new Padding(10, 0, 10, 0); Name = "DiagnosticsDialog";
button_Copy.Size = new Size(148, 34); ShowInTaskbar = false;
button_Copy.TabIndex = 12; panel1.ResumeLayout(false);
button_Copy.Text = "复制到剪贴板"; panel1.PerformLayout();
button_Copy.UseVisualStyleBackColor = true; tableLayoutPanel1.ResumeLayout(false);
button_Copy.Click += button_Copy_Click; tableLayoutPanel1.PerformLayout();
// ResumeLayout(false);
// propertyGrid }
//
propertyGrid.Dock = DockStyle.Fill;
propertyGrid.HelpVisible = false;
propertyGrid.Location = new Point(3, 3);
propertyGrid.Name = "propertyGrid";
propertyGrid.Size = new Size(795, 374);
propertyGrid.TabIndex = 13;
propertyGrid.ToolbarVisible = false;
//
// DiagnosticsDialog
//
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(901, 452);
Controls.Add(panel1);
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
MinimizeBox = false;
Name = "DiagnosticsDialog";
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterScreen;
Text = "诊断信息";
panel1.ResumeLayout(false);
panel1.PerformLayout();
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
ResumeLayout(false);
}
#endregion #endregion
private Panel panel1; private Panel panel1;
private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel1;
private Button button_Copy; private Button button_Copy;
private PropertyGrid propertyGrid; private PropertyGrid propertyGrid;

View File

@@ -93,7 +93,7 @@ namespace SpineViewer.Dialogs
var properties = selectedObject.GetType().GetProperties(); var properties = selectedObject.GetType().GetProperties();
var result = string.Join(Environment.NewLine, properties.Select(p => $"{p.Name}\t{p.GetValue(selectedObject)?.ToString()}")); var result = string.Join(Environment.NewLine, properties.Select(p => $"{p.Name}\t{p.GetValue(selectedObject)?.ToString()}"));
Clipboard.SetText(result); Clipboard.SetText(result);
MessagePopup.Info("已复制"); MessagePopup.Info("已复制", Properties.Resources.msgBoxInfo);
} }
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -117,7 +117,36 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button_Copy.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<data name="&gt;&gt;button_Copy.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="button_Copy.Size" type="System.Drawing.Size, System.Drawing">
<value>124, 30</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<data name="propertyGrid.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA
@@ -3264,4 +3293,140 @@
////////wAAAAAAAB/////// ////////wAAAAAAAB///////
</value> </value>
</data> </data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;button_Copy.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button_Copy.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 8, 2, 2</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>诊断信息</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="button_Copy.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;propertyGrid.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="button_Copy" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="propertyGrid" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Percent,100,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Copy.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;propertyGrid.Name" xml:space="preserve">
<value>propertyGrid</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>655, 377</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>DiagnosticsDialog</value>
</data>
<data name="propertyGrid.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="button_Copy.Text" xml:space="preserve">
<value>复制到剪贴板</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>655, 377</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="propertyGrid.Size" type="System.Drawing.Size, System.Drawing">
<value>579, 313</value>
</data>
<data name="&gt;&gt;button_Copy.Name" xml:space="preserve">
<value>button_Copy</value>
</data>
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;button_Copy.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="propertyGrid.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="button_Copy.Location" type="System.Drawing.Point, System.Drawing">
<value>229, 325</value>
</data>
<data name="&gt;&gt;propertyGrid.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;propertyGrid.Type" xml:space="preserve">
<value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Copy.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>7, 0, 7, 0</value>
</data>
<data name="propertyGrid.HelpVisible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="panel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>36, 12, 36, 8</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>583, 357</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="propertyGrid.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 12</value>
</data>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, System.Private.CoreLib, Culture=neutral, PublicKeyToken=7cec85d7bea7798e">
<value>en</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root> </root>

View File

@@ -20,132 +20,89 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ExportDialog)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ExportDialog));
panel1 = new Panel(); panel1 = new Panel();
tableLayoutPanel1 = new TableLayoutPanel(); tableLayoutPanel1 = new TableLayoutPanel();
propertyGrid_ExportArgs = new PropertyGrid(); propertyGrid_ExportArgs = new PropertyGrid();
tableLayoutPanel2 = new TableLayoutPanel(); tableLayoutPanel2 = new TableLayoutPanel();
button_Ok = new Button(); button_Ok = new Button();
button_Cancel = new Button(); button_Cancel = new Button();
panel1.SuspendLayout(); panel1.SuspendLayout();
tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.SuspendLayout();
tableLayoutPanel2.SuspendLayout(); tableLayoutPanel2.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// panel1 // panel1
// //
panel1.Controls.Add(tableLayoutPanel1); resources.ApplyResources(panel1, "panel1");
panel1.Dock = DockStyle.Fill; panel1.Controls.Add(tableLayoutPanel1);
panel1.Location = new Point(0, 0); panel1.Name = "panel1";
panel1.Name = "panel1"; //
panel1.Padding = new Padding(50, 15, 50, 10); // tableLayoutPanel1
panel1.Size = new Size(793, 841); //
panel1.TabIndex = 2; resources.ApplyResources(tableLayoutPanel1, "tableLayoutPanel1");
// tableLayoutPanel1.Controls.Add(propertyGrid_ExportArgs, 0, 0);
// tableLayoutPanel1 tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 1);
// tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.AutoSize = true; //
tableLayoutPanel1.ColumnCount = 1; // propertyGrid_ExportArgs
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); //
tableLayoutPanel1.Controls.Add(propertyGrid_ExportArgs, 0, 0); resources.ApplyResources(propertyGrid_ExportArgs, "propertyGrid_ExportArgs");
tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 1); propertyGrid_ExportArgs.Name = "propertyGrid_ExportArgs";
tableLayoutPanel1.Dock = DockStyle.Fill; propertyGrid_ExportArgs.PropertySort = PropertySort.Categorized;
tableLayoutPanel1.Location = new Point(50, 15); propertyGrid_ExportArgs.ToolbarVisible = false;
tableLayoutPanel1.Name = "tableLayoutPanel1"; //
tableLayoutPanel1.RowCount = 2; // tableLayoutPanel2
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); //
tableLayoutPanel1.RowStyles.Add(new RowStyle()); resources.ApplyResources(tableLayoutPanel2, "tableLayoutPanel2");
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F)); tableLayoutPanel2.Controls.Add(button_Ok, 0, 0);
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F)); tableLayoutPanel2.Controls.Add(button_Cancel, 1, 0);
tableLayoutPanel1.Size = new Size(693, 816); tableLayoutPanel2.Name = "tableLayoutPanel2";
tableLayoutPanel1.TabIndex = 0; //
// // button_Ok
// propertyGrid_ExportArgs //
// resources.ApplyResources(button_Ok, "button_Ok");
propertyGrid_ExportArgs.Dock = DockStyle.Fill; button_Ok.Name = "button_Ok";
propertyGrid_ExportArgs.Location = new Point(3, 3); button_Ok.UseVisualStyleBackColor = true;
propertyGrid_ExportArgs.Name = "propertyGrid_ExportArgs"; button_Ok.Click += button_Ok_Click;
propertyGrid_ExportArgs.PropertySort = PropertySort.Categorized; //
propertyGrid_ExportArgs.Size = new Size(687, 737); // button_Cancel
propertyGrid_ExportArgs.TabIndex = 1; //
propertyGrid_ExportArgs.ToolbarVisible = false; resources.ApplyResources(button_Cancel, "button_Cancel");
// button_Cancel.Name = "button_Cancel";
// tableLayoutPanel2 button_Cancel.UseVisualStyleBackColor = true;
// button_Cancel.Click += button_Cancel_Click;
tableLayoutPanel2.AutoSize = true; //
tableLayoutPanel2.AutoSizeMode = AutoSizeMode.GrowAndShrink; // ExportDialog
tableLayoutPanel2.ColumnCount = 2; //
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); AcceptButton = button_Ok;
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); resources.ApplyResources(this, "$this");
tableLayoutPanel2.Controls.Add(button_Ok, 0, 0); AutoScaleMode = AutoScaleMode.Font;
tableLayoutPanel2.Controls.Add(button_Cancel, 1, 0); CancelButton = button_Cancel;
tableLayoutPanel2.Dock = DockStyle.Bottom; Controls.Add(panel1);
tableLayoutPanel2.Location = new Point(3, 773); MaximizeBox = false;
tableLayoutPanel2.Margin = new Padding(3, 30, 3, 3); MinimizeBox = false;
tableLayoutPanel2.Name = "tableLayoutPanel2"; Name = "ExportDialog";
tableLayoutPanel2.RowCount = 1; ShowInTaskbar = false;
tableLayoutPanel2.RowStyles.Add(new RowStyle()); panel1.ResumeLayout(false);
tableLayoutPanel2.Size = new Size(687, 40); panel1.PerformLayout();
tableLayoutPanel2.TabIndex = 10; tableLayoutPanel1.ResumeLayout(false);
// tableLayoutPanel1.PerformLayout();
// button_Ok tableLayoutPanel2.ResumeLayout(false);
// ResumeLayout(false);
button_Ok.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; }
button_Ok.Location = new Point(201, 3);
button_Ok.Margin = new Padding(3, 3, 30, 3);
button_Ok.Name = "button_Ok";
button_Ok.Size = new Size(112, 34);
button_Ok.TabIndex = 7;
button_Ok.Text = "确认";
button_Ok.UseVisualStyleBackColor = true;
button_Ok.Click += button_Ok_Click;
//
// button_Cancel
//
button_Cancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
button_Cancel.Location = new Point(373, 3);
button_Cancel.Margin = new Padding(30, 3, 3, 3);
button_Cancel.Name = "button_Cancel";
button_Cancel.Size = new Size(112, 34);
button_Cancel.TabIndex = 8;
button_Cancel.Text = "取消";
button_Cancel.UseVisualStyleBackColor = true;
button_Cancel.Click += button_Cancel_Click;
//
// ExportDialog
//
AcceptButton = button_Ok;
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
CancelButton = button_Cancel;
ClientSize = new Size(793, 841);
Controls.Add(panel1);
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
MinimizeBox = false;
Name = "ExportDialog";
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterScreen;
Text = "导出参数";
panel1.ResumeLayout(false);
panel1.PerformLayout();
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
tableLayoutPanel2.ResumeLayout(false);
ResumeLayout(false);
}
#endregion #endregion
private Panel panel1; private Panel panel1;
private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel1;
private TableLayoutPanel tableLayoutPanel2; private TableLayoutPanel tableLayoutPanel2;
private Button button_Ok; private Button button_Ok;

View File

@@ -65,7 +65,7 @@ namespace SpineViewer.Dialogs
{ {
if (wrapper.Exporter.Validate() is string error) if (wrapper.Exporter.Validate() is string error)
{ {
MessagePopup.Info(error, "参数错误"); MessagePopup.Info(error, Properties.Resources.parameterError);
return; return;
} }
DialogResult = DialogResult.OK; DialogResult = DialogResult.OK;

File diff suppressed because it is too large Load Diff

View File

@@ -117,7 +117,100 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="button_Ok.Text" xml:space="preserve">
<value>确认</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="button_Cancel.Text" xml:space="preserve">
<value>取消</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button_Ok.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;propertyGrid_ExportArgs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>导出参数</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="propertyGrid_ExportArgs.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 2</value>
</data>
<data name="button_Ok.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 28</value>
</data>
<data name="&gt;&gt;propertyGrid_ExportArgs.Type" xml:space="preserve">
<value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>577, 701</value>
</data>
<data name="&gt;&gt;propertyGrid_ExportArgs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ExportDialog</value>
</data>
<data name="propertyGrid_ExportArgs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 25, 2, 2</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="propertyGrid_ExportArgs.Size" type="System.Drawing.Size, System.Drawing">
<value>501, 618</value>
</data>
<data name="&gt;&gt;button_Ok.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>505, 681</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;button_Cancel.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA
@@ -3264,4 +3357,139 @@
////////wAAAAAAAB/////// ////////wAAAAAAAB///////
</value> </value>
</data> </data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>501, 32</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>577, 701</value>
</data>
<data name="button_Cancel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>22, 2, 2, 2</value>
</data>
<data name="button_Ok.Location" type="System.Drawing.Point, System.Drawing">
<value>147, 2</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 647</value>
</data>
<data name="button_Cancel.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 28</value>
</data>
<data name="panel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>36, 12, 36, 8</value>
</data>
<data name="&gt;&gt;button_Cancel.Name" xml:space="preserve">
<value>button_Cancel</value>
</data>
<data name="&gt;&gt;propertyGrid_ExportArgs.Name" xml:space="preserve">
<value>propertyGrid_ExportArgs</value>
</data>
<data name="button_Cancel.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="button_Cancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;button_Ok.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="button_Cancel.Location" type="System.Drawing.Point, System.Drawing">
<value>272, 2</value>
</data>
<data name="&gt;&gt;button_Cancel.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="propertyGrid_ExportArgs" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Percent,100,AutoSize,0,Absolute,17,Absolute,17" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 12</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="button_Ok.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 22, 2</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="propertyGrid_ExportArgs.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="button_Ok.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;button_Ok.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="button_Ok" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="button_Cancel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,50,Percent,50" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="&gt;&gt;button_Cancel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;button_Ok.Name" xml:space="preserve">
<value>button_Ok</value>
</data>
<data name="propertyGrid_ExportArgs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, System.Private.CoreLib, Culture=neutral, PublicKeyToken=7cec85d7bea7798e">
<value>en</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root> </root>

View File

@@ -20,256 +20,170 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OpenSpineDialog)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OpenSpineDialog));
panel1 = new Panel(); panel1 = new Panel();
tableLayoutPanel1 = new TableLayoutPanel(); tableLayoutPanel1 = new TableLayoutPanel();
label4 = new Label(); label4 = new Label();
label1 = new Label(); label1 = new Label();
label2 = new Label(); label2 = new Label();
label3 = new Label(); label3 = new Label();
textBox_SkelPath = new TextBox(); textBox_SkelPath = new TextBox();
button_SelectSkel = new Button(); button_SelectSkel = new Button();
button_SelectAtlas = new Button(); button_SelectAtlas = new Button();
comboBox_Version = new ComboBox(); comboBox_Version = new ComboBox();
textBox_AtlasPath = new TextBox(); textBox_AtlasPath = new TextBox();
tableLayoutPanel2 = new TableLayoutPanel(); tableLayoutPanel2 = new TableLayoutPanel();
button_Ok = new Button(); button_Ok = new Button();
button_Cancel = new Button(); button_Cancel = new Button();
openFileDialog_Skel = new OpenFileDialog(); openFileDialog_Skel = new OpenFileDialog();
openFileDialog_Atlas = new OpenFileDialog(); openFileDialog_Atlas = new OpenFileDialog();
panel1.SuspendLayout(); panel1.SuspendLayout();
tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.SuspendLayout();
tableLayoutPanel2.SuspendLayout(); tableLayoutPanel2.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// panel1 // panel1
// //
panel1.Controls.Add(tableLayoutPanel1); resources.ApplyResources(panel1, "panel1");
panel1.Dock = DockStyle.Fill; panel1.Controls.Add(tableLayoutPanel1);
panel1.Location = new Point(0, 0); panel1.Name = "panel1";
panel1.Name = "panel1"; //
panel1.Padding = new Padding(50, 15, 50, 10); // tableLayoutPanel1
panel1.Size = new Size(907, 286); //
panel1.TabIndex = 0; resources.ApplyResources(tableLayoutPanel1, "tableLayoutPanel1");
// tableLayoutPanel1.Controls.Add(label4, 0, 0);
// tableLayoutPanel1 tableLayoutPanel1.Controls.Add(label1, 0, 1);
// tableLayoutPanel1.Controls.Add(label2, 0, 2);
tableLayoutPanel1.AutoSize = true; tableLayoutPanel1.Controls.Add(label3, 0, 3);
tableLayoutPanel1.ColumnCount = 4; tableLayoutPanel1.Controls.Add(textBox_SkelPath, 1, 1);
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle()); tableLayoutPanel1.Controls.Add(button_SelectSkel, 3, 1);
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); tableLayoutPanel1.Controls.Add(button_SelectAtlas, 3, 2);
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); tableLayoutPanel1.Controls.Add(comboBox_Version, 1, 3);
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle()); tableLayoutPanel1.Controls.Add(textBox_AtlasPath, 1, 2);
tableLayoutPanel1.Controls.Add(label4, 0, 0); tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 4);
tableLayoutPanel1.Controls.Add(label1, 0, 1); tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.Controls.Add(label2, 0, 2); //
tableLayoutPanel1.Controls.Add(label3, 0, 3); // label4
tableLayoutPanel1.Controls.Add(textBox_SkelPath, 1, 1); //
tableLayoutPanel1.Controls.Add(button_SelectSkel, 3, 1); resources.ApplyResources(label4, "label4");
tableLayoutPanel1.Controls.Add(button_SelectAtlas, 3, 2); tableLayoutPanel1.SetColumnSpan(label4, 4);
tableLayoutPanel1.Controls.Add(comboBox_Version, 1, 3); label4.Name = "label4";
tableLayoutPanel1.Controls.Add(textBox_AtlasPath, 1, 2); //
tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 4); // label1
tableLayoutPanel1.Dock = DockStyle.Fill; //
tableLayoutPanel1.Location = new Point(50, 15); resources.ApplyResources(label1, "label1");
tableLayoutPanel1.Name = "tableLayoutPanel1"; label1.Name = "label1";
tableLayoutPanel1.RowCount = 5; //
tableLayoutPanel1.RowStyles.Add(new RowStyle()); // label2
tableLayoutPanel1.RowStyles.Add(new RowStyle()); //
tableLayoutPanel1.RowStyles.Add(new RowStyle()); resources.ApplyResources(label2, "label2");
tableLayoutPanel1.RowStyles.Add(new RowStyle()); label2.Name = "label2";
tableLayoutPanel1.RowStyles.Add(new RowStyle()); //
tableLayoutPanel1.Size = new Size(807, 261); // label3
tableLayoutPanel1.TabIndex = 0; //
// resources.ApplyResources(label3, "label3");
// label4 label3.Name = "label3";
// //
label4.AutoSize = true; // textBox_SkelPath
tableLayoutPanel1.SetColumnSpan(label4, 4); //
label4.Dock = DockStyle.Fill; resources.ApplyResources(textBox_SkelPath, "textBox_SkelPath");
label4.Location = new Point(15, 15); tableLayoutPanel1.SetColumnSpan(textBox_SkelPath, 2);
label4.Margin = new Padding(15); textBox_SkelPath.Name = "textBox_SkelPath";
label4.Name = "label4"; //
label4.Size = new Size(777, 24); // button_SelectSkel
label4.TabIndex = 11; //
label4.Text = "说明如果没有选择atlas则会自动读取与skel同目录下同名的atlas文件"; resources.ApplyResources(button_SelectSkel, "button_SelectSkel");
label4.TextAlign = ContentAlignment.MiddleCenter; button_SelectSkel.Name = "button_SelectSkel";
// button_SelectSkel.UseVisualStyleBackColor = true;
// label1 button_SelectSkel.Click += button_SelectSkel_Click;
// //
label1.Anchor = AnchorStyles.Right; // button_SelectAtlas
label1.AutoSize = true; //
label1.Location = new Point(10, 62); resources.ApplyResources(button_SelectAtlas, "button_SelectAtlas");
label1.Name = "label1"; button_SelectAtlas.Name = "button_SelectAtlas";
label1.Size = new Size(119, 24); button_SelectAtlas.UseVisualStyleBackColor = true;
label1.TabIndex = 0; button_SelectAtlas.Click += button_SelectAtlas_Click;
label1.Text = "skel文件路径:"; //
// // comboBox_Version
// label2 //
// resources.ApplyResources(comboBox_Version, "comboBox_Version");
label2.Anchor = AnchorStyles.Right; comboBox_Version.DropDownStyle = ComboBoxStyle.DropDownList;
label2.AutoSize = true; comboBox_Version.FormattingEnabled = true;
label2.Location = new Point(3, 102); comboBox_Version.Name = "comboBox_Version";
label2.Name = "label2"; comboBox_Version.Sorted = true;
label2.Size = new Size(126, 24); //
label2.TabIndex = 1; // textBox_AtlasPath
label2.Text = "atlas文件路径:"; //
// resources.ApplyResources(textBox_AtlasPath, "textBox_AtlasPath");
// label3 tableLayoutPanel1.SetColumnSpan(textBox_AtlasPath, 2);
// textBox_AtlasPath.Name = "textBox_AtlasPath";
label3.Anchor = AnchorStyles.Right; //
label3.AutoSize = true; // tableLayoutPanel2
label3.Location = new Point(79, 141); //
label3.Name = "label3"; resources.ApplyResources(tableLayoutPanel2, "tableLayoutPanel2");
label3.Size = new Size(50, 24); tableLayoutPanel1.SetColumnSpan(tableLayoutPanel2, 4);
label3.TabIndex = 2; tableLayoutPanel2.Controls.Add(button_Ok, 0, 0);
label3.Text = "版本:"; tableLayoutPanel2.Controls.Add(button_Cancel, 1, 0);
// tableLayoutPanel2.Name = "tableLayoutPanel2";
// textBox_SkelPath //
// // button_Ok
tableLayoutPanel1.SetColumnSpan(textBox_SkelPath, 2); //
textBox_SkelPath.Dock = DockStyle.Fill; resources.ApplyResources(button_Ok, "button_Ok");
textBox_SkelPath.Location = new Point(135, 57); button_Ok.Name = "button_Ok";
textBox_SkelPath.Name = "textBox_SkelPath"; button_Ok.UseVisualStyleBackColor = true;
textBox_SkelPath.Size = new Size(630, 30); button_Ok.Click += button_Ok_Click;
textBox_SkelPath.TabIndex = 3; //
// // button_Cancel
// button_SelectSkel //
// resources.ApplyResources(button_Cancel, "button_Cancel");
button_SelectSkel.AutoSize = true; button_Cancel.Name = "button_Cancel";
button_SelectSkel.AutoSizeMode = AutoSizeMode.GrowAndShrink; button_Cancel.UseVisualStyleBackColor = true;
button_SelectSkel.Location = new Point(771, 57); button_Cancel.Click += button_Cancel_Click;
button_SelectSkel.Name = "button_SelectSkel"; //
button_SelectSkel.Size = new Size(32, 34); // openFileDialog_Skel
button_SelectSkel.TabIndex = 5; //
button_SelectSkel.Text = "..."; openFileDialog_Skel.AddExtension = false;
button_SelectSkel.UseVisualStyleBackColor = true; openFileDialog_Skel.AddToRecent = false;
button_SelectSkel.Click += button_SelectSkel_Click; resources.ApplyResources(openFileDialog_Skel, "openFileDialog_Skel");
// //
// button_SelectAtlas // openFileDialog_Atlas
// //
button_SelectAtlas.AutoSize = true; openFileDialog_Atlas.AddExtension = false;
button_SelectAtlas.AutoSizeMode = AutoSizeMode.GrowAndShrink; openFileDialog_Atlas.AddToRecent = false;
button_SelectAtlas.Location = new Point(771, 97); resources.ApplyResources(openFileDialog_Atlas, "openFileDialog_Atlas");
button_SelectAtlas.Name = "button_SelectAtlas"; //
button_SelectAtlas.Size = new Size(32, 34); // OpenSpineDialog
button_SelectAtlas.TabIndex = 6; //
button_SelectAtlas.Text = "..."; AcceptButton = button_Ok;
button_SelectAtlas.UseVisualStyleBackColor = true; resources.ApplyResources(this, "$this");
button_SelectAtlas.Click += button_SelectAtlas_Click; AutoScaleMode = AutoScaleMode.Font;
// CancelButton = button_Cancel;
// comboBox_Version Controls.Add(panel1);
// FormBorderStyle = FormBorderStyle.FixedDialog;
comboBox_Version.Anchor = AnchorStyles.Left; MaximizeBox = false;
comboBox_Version.DropDownStyle = ComboBoxStyle.DropDownList; MinimizeBox = false;
comboBox_Version.FormattingEnabled = true; Name = "OpenSpineDialog";
comboBox_Version.Location = new Point(135, 137); ShowInTaskbar = false;
comboBox_Version.Name = "comboBox_Version"; Load += OpenSpineDialog_Load;
comboBox_Version.Size = new Size(182, 32); panel1.ResumeLayout(false);
comboBox_Version.Sorted = true; panel1.PerformLayout();
comboBox_Version.TabIndex = 9; tableLayoutPanel1.ResumeLayout(false);
// tableLayoutPanel1.PerformLayout();
// textBox_AtlasPath tableLayoutPanel2.ResumeLayout(false);
// ResumeLayout(false);
tableLayoutPanel1.SetColumnSpan(textBox_AtlasPath, 2); }
textBox_AtlasPath.Dock = DockStyle.Fill;
textBox_AtlasPath.Location = new Point(135, 97);
textBox_AtlasPath.Name = "textBox_AtlasPath";
textBox_AtlasPath.Size = new Size(630, 30);
textBox_AtlasPath.TabIndex = 4;
//
// tableLayoutPanel2
//
tableLayoutPanel2.AutoSize = true;
tableLayoutPanel2.AutoSizeMode = AutoSizeMode.GrowAndShrink;
tableLayoutPanel2.ColumnCount = 2;
tableLayoutPanel1.SetColumnSpan(tableLayoutPanel2, 4);
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
tableLayoutPanel2.Controls.Add(button_Ok, 0, 0);
tableLayoutPanel2.Controls.Add(button_Cancel, 1, 0);
tableLayoutPanel2.Dock = DockStyle.Bottom;
tableLayoutPanel2.Location = new Point(3, 218);
tableLayoutPanel2.Name = "tableLayoutPanel2";
tableLayoutPanel2.RowCount = 1;
tableLayoutPanel2.RowStyles.Add(new RowStyle());
tableLayoutPanel2.Size = new Size(801, 40);
tableLayoutPanel2.TabIndex = 10;
//
// button_Ok
//
button_Ok.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
button_Ok.Location = new Point(258, 3);
button_Ok.Margin = new Padding(3, 3, 30, 3);
button_Ok.Name = "button_Ok";
button_Ok.Size = new Size(112, 34);
button_Ok.TabIndex = 7;
button_Ok.Text = "确认";
button_Ok.UseVisualStyleBackColor = true;
button_Ok.Click += button_Ok_Click;
//
// button_Cancel
//
button_Cancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
button_Cancel.Location = new Point(430, 3);
button_Cancel.Margin = new Padding(30, 3, 3, 3);
button_Cancel.Name = "button_Cancel";
button_Cancel.Size = new Size(112, 34);
button_Cancel.TabIndex = 8;
button_Cancel.Text = "取消";
button_Cancel.UseVisualStyleBackColor = true;
button_Cancel.Click += button_Cancel_Click;
//
// openFileDialog_Skel
//
openFileDialog_Skel.AddExtension = false;
openFileDialog_Skel.AddToRecent = false;
openFileDialog_Skel.Filter = "所有文件 (*.*)|*.*|skel 文件 (*.skel; *.json)|*.skel;*.json";
openFileDialog_Skel.Title = "选择skel文件";
//
// openFileDialog_Atlas
//
openFileDialog_Atlas.AddExtension = false;
openFileDialog_Atlas.AddToRecent = false;
openFileDialog_Atlas.Filter = "所有文件 (*.*)|*.*|atlas 文件 (*.atlas)|*.atlas";
openFileDialog_Atlas.Title = "选择atlas文件";
//
// OpenSpineDialog
//
AcceptButton = button_Ok;
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
CancelButton = button_Cancel;
ClientSize = new Size(907, 286);
Controls.Add(panel1);
FormBorderStyle = FormBorderStyle.FixedDialog;
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
MinimizeBox = false;
Name = "OpenSpineDialog";
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterScreen;
Text = "打开骨骼";
Load += OpenSpineDialog_Load;
panel1.ResumeLayout(false);
panel1.PerformLayout();
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
tableLayoutPanel2.ResumeLayout(false);
ResumeLayout(false);
}
#endregion #endregion
private Panel panel1; private Panel panel1;
private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel1;
private Label label1; private Label label1;
private Label label2; private Label label2;

View File

@@ -58,7 +58,7 @@ namespace SpineViewer.Dialogs
if (!File.Exists(skelPath)) if (!File.Exists(skelPath))
{ {
MessagePopup.Info($"{skelPath}", "skel文件不存在"); MessagePopup.Info($"{skelPath}", Properties.Resources.skelNotExist);
return; return;
} }
else else
@@ -72,7 +72,7 @@ namespace SpineViewer.Dialogs
} }
else if (!File.Exists(atlasPath)) else if (!File.Exists(atlasPath))
{ {
MessagePopup.Info($"{atlasPath}", "atlas文件不存在"); MessagePopup.Info($"{atlasPath}", Properties.Resources.atlasNotExist);
return; return;
} }
else else
@@ -82,7 +82,7 @@ namespace SpineViewer.Dialogs
if (version != SpineVersion.Auto && !Spine.SpineObject.HasImplementation(version)) if (version != SpineVersion.Auto && !Spine.SpineObject.HasImplementation(version))
{ {
MessagePopup.Info($"{version.GetName()} 版本尚未实现(咕咕咕~"); MessagePopup.Info($"{version.GetName()} 版本尚未实现(咕咕咕~", Properties.Resources.msgBoxInfo);
return; return;
} }

File diff suppressed because it is too large Load Diff

View File

@@ -117,13 +117,232 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="openFileDialog_Skel.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<value>58, 25</value> <data name="button_SelectSkel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
</metadata> <value>2, 2, 2, 2</value>
<metadata name="openFileDialog_Atlas.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> </data>
<value>349, 29</value> <data name="&gt;&gt;label3.Name" xml:space="preserve">
</metadata> <value>label3</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button_Cancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;button_SelectAtlas.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;textBox_AtlasPath.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="label4" Row="0" RowSpan="1" Column="0" ColumnSpan="4" /&gt;&lt;Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="textBox_SkelPath" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /&gt;&lt;Control Name="button_SelectSkel" Row="1" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;Control Name="button_SelectAtlas" Row="2" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;Control Name="comboBox_Version" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="textBox_AtlasPath" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /&gt;&lt;Control Name="tableLayoutPanel2" Row="4" RowSpan="1" Column="0" ColumnSpan="4" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,50,Percent,50,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>atlas文件路径:</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>skel文件路径:</value>
</data>
<data name="&gt;&gt;button_SelectSkel.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="comboBox_Version.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="button_Ok.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 22, 2</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="textBox_SkelPath.Location" type="System.Drawing.Point, System.Drawing">
<value>109, 46</value>
</data>
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button_SelectAtlas.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="textBox_SkelPath.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;textBox_AtlasPath.Name" xml:space="preserve">
<value>textBox_AtlasPath</value>
</data>
<data name="button_Cancel.Location" type="System.Drawing.Point, System.Drawing">
<value>314, 2</value>
</data>
<data name="comboBox_Version.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 28</value>
</data>
<data name="openFileDialog_Atlas.Filter" xml:space="preserve">
<value>所有文件 (*.*)|*.*|atlas 文件 (*.atlas)|*.atlas</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="button_SelectSkel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;button_SelectSkel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;button_Cancel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="button_SelectAtlas.Text" xml:space="preserve">
<value>...</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;openFileDialog_Skel.Type" xml:space="preserve">
<value>System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 85</value>
</data>
<data name="&gt;&gt;textBox_SkelPath.Name" xml:space="preserve">
<value>textBox_SkelPath</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="&gt;&gt;openFileDialog_Atlas.Name" xml:space="preserve">
<value>openFileDialog_Atlas</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>566, 20</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 184</value>
</data>
<data name="textBox_AtlasPath.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;button_Cancel.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="button_SelectAtlas.Location" type="System.Drawing.Point, System.Drawing">
<value>557, 80</value>
</data>
<data name="button_Ok.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="label3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Right</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;button_Cancel.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;button_Ok.Name" xml:space="preserve">
<value>button_Ok</value>
</data>
<data name="button_SelectSkel.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="openFileDialog_Skel.Title" xml:space="preserve">
<value>选择skel文件</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="textBox_SkelPath.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;button_SelectSkel.Name" xml:space="preserve">
<value>button_SelectSkel</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="panel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>36, 12, 36, 8</value>
</data>
<data name="&gt;&gt;textBox_SkelPath.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="textBox_AtlasPath.Size" type="System.Drawing.Size, System.Drawing">
<value>444, 27</value>
</data>
<data name="&gt;&gt;comboBox_Version.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;textBox_SkelPath.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;button_Ok.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;textBox_SkelPath.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="button_SelectAtlas.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>588, 218</value>
</data>
<data name="button_Ok.Location" type="System.Drawing.Point, System.Drawing">
<value>189, 2</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA
@@ -3270,4 +3489,292 @@
////////wAAAAAAAB/////// ////////wAAAAAAAB///////
</value> </value>
</data> </data>
<data name="button_SelectAtlas.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button_SelectAtlas.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>584, 32</value>
</data>
<data name="button_Cancel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>22, 2, 2, 2</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>版本:</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="button_Ok.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 28</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;textBox_AtlasPath.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 20</value>
</data>
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="button_Ok.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="textBox_SkelPath.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="button_SelectSkel.Location" type="System.Drawing.Point, System.Drawing">
<value>557, 46</value>
</data>
<data name="textBox_AtlasPath.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>label4</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>OpenSpineDialog</value>
</data>
<data name="&gt;&gt;button_SelectAtlas.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Ok.Text" xml:space="preserve">
<value>确认</value>
</data>
<data name="button_SelectSkel.Text" xml:space="preserve">
<value>...</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;button_SelectSkel.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>说明如果没有选择atlas则会自动读取与skel同目录下同名的atlas文件</value>
</data>
<data name="label4.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>11, 12, 11, 12</value>
</data>
<data name="button_Cancel.Text" xml:space="preserve">
<value>取消</value>
</data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 12</value>
</data>
<data name="button_SelectAtlas.Size" type="System.Drawing.Size, System.Drawing">
<value>28, 30</value>
</data>
<data name="button_SelectAtlas.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Right</value>
</data>
<data name="openFileDialog_Atlas.Title" xml:space="preserve">
<value>选择atlas文件</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;openFileDialog_Atlas.Type" xml:space="preserve">
<value>System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="&gt;&gt;comboBox_Version.Name" xml:space="preserve">
<value>comboBox_Version</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>63, 118</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>660, 238</value>
</data>
<data name="comboBox_Version.Location" type="System.Drawing.Point, System.Drawing">
<value>109, 114</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>97, 20</value>
</data>
<data name="label4.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label4.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;comboBox_Version.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="button_Cancel.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="button_Ok" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="button_Cancel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,50,Percent,50" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="textBox_AtlasPath.Location" type="System.Drawing.Point, System.Drawing">
<value>109, 80</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;button_Cancel.Name" xml:space="preserve">
<value>button_Cancel</value>
</data>
<data name="button_SelectSkel.Size" type="System.Drawing.Size, System.Drawing">
<value>28, 30</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="comboBox_Version.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;button_Ok.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBox_Version.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Right</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="textBox_SkelPath.Size" type="System.Drawing.Size, System.Drawing">
<value>444, 27</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 20</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="button_Cancel.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 28</value>
</data>
<data name="&gt;&gt;button_SelectAtlas.Name" xml:space="preserve">
<value>button_SelectAtlas</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>打开骨骼</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 51</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 12</value>
</data>
<data name="&gt;&gt;openFileDialog_Skel.Name" xml:space="preserve">
<value>openFileDialog_Skel</value>
</data>
<data name="openFileDialog_Skel.Filter" xml:space="preserve">
<value>所有文件 (*.*)|*.*|skel 文件 (*.skel; *.json)|*.skel;*.json</value>
</data>
<data name="label3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 0, 2, 0</value>
</data>
<data name="label4.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>660, 238</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;button_Ok.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;textBox_AtlasPath.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="textBox_AtlasPath.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="button_SelectSkel.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="comboBox_Version.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, System.Private.CoreLib, Culture=neutral, PublicKeyToken=7cec85d7bea7798e">
<value>en</value>
</metadata>
<metadata name="openFileDialog_Atlas.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>349, 29</value>
</metadata>
<metadata name="openFileDialog_Skel.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>58, 25</value>
</metadata>
</root> </root>

View File

@@ -20,114 +20,85 @@
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
progressBar = new ProgressBar(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProgressDialog));
panel1 = new Panel(); progressBar = new ProgressBar();
tableLayoutPanel1 = new TableLayoutPanel(); panel1 = new Panel();
button_Cancel = new Button(); tableLayoutPanel1 = new TableLayoutPanel();
label_Tip = new Label(); button_Cancel = new Button();
backgroundWorker = new System.ComponentModel.BackgroundWorker(); label_Tip = new Label();
panel1.SuspendLayout(); backgroundWorker = new System.ComponentModel.BackgroundWorker();
tableLayoutPanel1.SuspendLayout(); panel1.SuspendLayout();
SuspendLayout(); tableLayoutPanel1.SuspendLayout();
// SuspendLayout();
// progressBar //
// // progressBar
progressBar.Dock = DockStyle.Fill; //
progressBar.Location = new Point(3, 57); resources.ApplyResources(progressBar, "progressBar");
progressBar.Name = "progressBar"; progressBar.Name = "progressBar";
progressBar.Size = new Size(552, 34); progressBar.Style = ProgressBarStyle.Continuous;
progressBar.Style = ProgressBarStyle.Continuous; //
progressBar.TabIndex = 0; // panel1
// //
// panel1 resources.ApplyResources(panel1, "panel1");
// panel1.Controls.Add(tableLayoutPanel1);
panel1.Controls.Add(tableLayoutPanel1); panel1.Name = "panel1";
panel1.Dock = DockStyle.Fill; //
panel1.Location = new Point(0, 0); // tableLayoutPanel1
panel1.Name = "panel1"; //
panel1.Padding = new Padding(30); resources.ApplyResources(tableLayoutPanel1, "tableLayoutPanel1");
panel1.Size = new Size(618, 206); tableLayoutPanel1.Controls.Add(progressBar, 0, 1);
panel1.TabIndex = 1; tableLayoutPanel1.Controls.Add(button_Cancel, 0, 2);
// tableLayoutPanel1.Controls.Add(label_Tip, 0, 0);
// tableLayoutPanel1 tableLayoutPanel1.Name = "tableLayoutPanel1";
// //
tableLayoutPanel1.ColumnCount = 1; // button_Cancel
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); //
tableLayoutPanel1.Controls.Add(progressBar, 0, 1); resources.ApplyResources(button_Cancel, "button_Cancel");
tableLayoutPanel1.Controls.Add(button_Cancel, 0, 2); button_Cancel.Name = "button_Cancel";
tableLayoutPanel1.Controls.Add(label_Tip, 0, 0); button_Cancel.UseVisualStyleBackColor = true;
tableLayoutPanel1.Dock = DockStyle.Fill; button_Cancel.Click += button_Cancel_Click;
tableLayoutPanel1.Location = new Point(30, 30); //
tableLayoutPanel1.Name = "tableLayoutPanel1"; // label_Tip
tableLayoutPanel1.RowCount = 3; //
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); resources.ApplyResources(label_Tip, "label_Tip");
tableLayoutPanel1.RowStyles.Add(new RowStyle()); label_Tip.Name = "label_Tip";
tableLayoutPanel1.RowStyles.Add(new RowStyle()); //
tableLayoutPanel1.Size = new Size(558, 146); // backgroundWorker
tableLayoutPanel1.TabIndex = 1; //
// backgroundWorker.WorkerReportsProgress = true;
// button_Cancel backgroundWorker.WorkerSupportsCancellation = true;
// backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged;
button_Cancel.Anchor = AnchorStyles.Bottom; backgroundWorker.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted;
button_Cancel.Location = new Point(223, 109); //
button_Cancel.Margin = new Padding(3, 15, 3, 3); // ProgressDialog
button_Cancel.Name = "button_Cancel"; //
button_Cancel.Size = new Size(112, 34); resources.ApplyResources(this, "$this");
button_Cancel.TabIndex = 9; AutoScaleMode = AutoScaleMode.Font;
button_Cancel.Text = "取消"; ControlBox = false;
button_Cancel.UseVisualStyleBackColor = true; Controls.Add(panel1);
button_Cancel.Click += button_Cancel_Click; FormBorderStyle = FormBorderStyle.FixedDialog;
// MaximizeBox = false;
// label_Tip MinimizeBox = false;
// Name = "ProgressDialog";
label_Tip.AutoSize = true; ShowIcon = false;
label_Tip.Dock = DockStyle.Fill; ShowInTaskbar = false;
label_Tip.Location = new Point(3, 10); panel1.ResumeLayout(false);
label_Tip.Margin = new Padding(3, 10, 3, 10); tableLayoutPanel1.ResumeLayout(false);
label_Tip.Name = "label_Tip"; tableLayoutPanel1.PerformLayout();
label_Tip.Size = new Size(552, 34); ResumeLayout(false);
label_Tip.TabIndex = 10; }
label_Tip.Text = "初始化...";
//
// backgroundWorker
//
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.WorkerSupportsCancellation = true;
backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged;
backgroundWorker.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted;
//
// ProgressDialog
//
AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(618, 206);
ControlBox = false;
Controls.Add(panel1);
FormBorderStyle = FormBorderStyle.FixedDialog;
MaximizeBox = false;
MinimizeBox = false;
Name = "ProgressDialog";
ShowIcon = false;
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterScreen;
Text = "进度";
panel1.ResumeLayout(false);
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
ResumeLayout(false);
}
#endregion #endregion
private ProgressBar progressBar; private ProgressBar progressBar;
private Panel panel1; private Panel panel1;
private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel1;
private System.ComponentModel.BackgroundWorker backgroundWorker; private System.ComponentModel.BackgroundWorker backgroundWorker;

View File

@@ -52,7 +52,7 @@ namespace SpineViewer.Dialogs
if (e.Error != null) if (e.Error != null)
{ {
logger.Error(e.Error.ToString()); logger.Error(e.Error.ToString());
MessagePopup.Error(e.Error.ToString(), "执行出错"); MessagePopup.Error(e.Error.ToString(), Properties.Resources.runtimeError);
DialogResult = DialogResult.Abort; DialogResult = DialogResult.Abort;
} }
else if (e.Cancelled) else if (e.Cancelled)

View File

@@ -0,0 +1,129 @@
<?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>
<data name="button_Cancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="label_Tip.Text" xml:space="preserve">
<value>Initializing...</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Progress</value>
</data>
</root>

View File

@@ -117,6 +117,199 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="&gt;&gt;button_Cancel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label_Tip.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="button_Cancel.Text" xml:space="preserve">
<value>取消</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button_Cancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="&gt;&gt;progressBar.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="button_Cancel.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 25</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label_Tip.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 8, 2, 8</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="&gt;&gt;label_Tip.Name" xml:space="preserve">
<value>label_Tip</value>
</data>
<data name="&gt;&gt;button_Cancel.Name" xml:space="preserve">
<value>button_Cancel</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 20</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="progressBar.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 50</value>
</data>
<data name="label_Tip.Text" xml:space="preserve">
<value>初始化...</value>
</data>
<data name="label_Tip.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;backgroundWorker.Type" xml:space="preserve">
<value>System.ComponentModel.BackgroundWorker, System.ComponentModel.EventBasedAsync, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="progressBar" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="button_Cancel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label_Tip" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Percent,100,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Cancel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 12, 2, 2</value>
</data>
<data name="&gt;&gt;button_Cancel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;progressBar.Type" xml:space="preserve">
<value>System.Windows.Forms.ProgressBar, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Cancel.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 28</value>
</data>
<data name="label_Tip.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="progressBar.Size" type="System.Drawing.Size, System.Drawing">
<value>401, 28</value>
</data>
<data name="label_Tip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;progressBar.Name" xml:space="preserve">
<value>progressBar</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>449, 172</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ProgressDialog</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="progressBar.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="label_Tip.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 8</value>
</data>
<data name="&gt;&gt;backgroundWorker.Name" xml:space="preserve">
<value>backgroundWorker</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;label_Tip.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>449, 172</value>
</data>
<data name="label_Tip.Size" type="System.Drawing.Size, System.Drawing">
<value>401, 32</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button_Cancel.Location" type="System.Drawing.Point, System.Drawing">
<value>162, 92</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>进度</value>
</data>
<data name="&gt;&gt;label_Tip.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="panel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>22, 25, 22, 25</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>405, 122</value>
</data>
<data name="progressBar.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button_Cancel.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;progressBar.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="progressBar.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, System.Private.CoreLib, Culture=neutral, PublicKeyToken=7cec85d7bea7798e">
<value>en</value>
</metadata>
<metadata name="backgroundWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="backgroundWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>

File diff suppressed because it is too large Load Diff

View File

@@ -5,463 +5,510 @@ using System.Diagnostics;
using SpineViewer.Natives; using SpineViewer.Natives;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Spine.SpineExporter; using SpineViewer.Spine.SpineExporter;
using System.Configuration;
using SpineViewer.Utils.Localize;
namespace SpineViewer namespace SpineViewer
{ {
internal partial class SpineViewerForm : Form internal partial class SpineViewerForm : Form
{ {
private readonly Logger logger = LogManager.GetCurrentClassLogger(); private readonly Logger logger = LogManager.GetCurrentClassLogger();
private readonly Dictionary<string, Exporter> exporterCache = []; private readonly Dictionary<string, Exporter> exporterCache = [];
public SpineViewerForm() public SpineViewerForm()
{ {
InitializeComponent(); InitializeComponent();
InitializeLogConfiguration(); InitializeLogConfiguration();
// 执行一些初始化工作 // 执行一些初始化工作
try try
{ {
SFMLShader.Init(); SFMLShader.Init();
} }
catch (Exception ex) catch (Exception ex)
{ {
logger.Error(ex.ToString()); logger.Error(ex.ToString());
logger.Error("Failed to load fragment shader"); logger.Error("Failed to load fragment shader");
MessagePopup.Warn("Fragment shader 加载失败预乘Alpha通道属性失效"); MessagePopup.Warn(Properties.Resources.failLoadingFragmentShader, Properties.Resources.msgBoxWarning);
} }
#if DEBUG #if DEBUG
toolStripMenuItem_Debug.Visible = true; toolStripMenuItem_Debug.Visible = true;
#endif #endif
} }
/// <summary> /// <summary>
/// 初始化窗口日志器 /// 初始化窗口日志器
/// </summary> /// </summary>
private void InitializeLogConfiguration() private void InitializeLogConfiguration()
{ {
// 窗口日志 // 窗口日志
var rtbTarget = new NLog.Windows.Forms.RichTextBoxTarget var rtbTarget = new NLog.Windows.Forms.RichTextBoxTarget
{ {
Name = "rtbTarget", Name = "rtbTarget",
TargetForm = this, TargetForm = this,
TargetRichTextBox = rtbLog, TargetRichTextBox = rtbLog,
AutoScroll = true, AutoScroll = true,
MaxLines = 3000, MaxLines = 3000,
SupportLinks = true, SupportLinks = true,
Layout = "[${level:format=OneLetter}]${date:format=yyyy-MM-dd HH\\:mm\\:ss} - ${message}" Layout = "[${level:format=OneLetter}]${date:format=yyyy-MM-dd HH\\:mm\\:ss} - ${message}"
}; };
rtbTarget.WordColoringRules.Add(new("[D]", "Gray", "Empty", FontStyle.Bold)); rtbTarget.WordColoringRules.Add(new("[D]", "Gray", "Empty", FontStyle.Bold));
rtbTarget.WordColoringRules.Add(new("[I]", "DimGray", "Empty", FontStyle.Bold)); rtbTarget.WordColoringRules.Add(new("[I]", "DimGray", "Empty", FontStyle.Bold));
rtbTarget.WordColoringRules.Add(new("[W]", "DarkOrange", "Empty", FontStyle.Bold)); rtbTarget.WordColoringRules.Add(new("[W]", "DarkOrange", "Empty", FontStyle.Bold));
rtbTarget.WordColoringRules.Add(new("[E]", "Red", "Empty", FontStyle.Bold)); rtbTarget.WordColoringRules.Add(new("[E]", "Red", "Empty", FontStyle.Bold));
rtbTarget.WordColoringRules.Add(new("[F]", "DarkRed", "Empty", FontStyle.Bold)); rtbTarget.WordColoringRules.Add(new("[F]", "DarkRed", "Empty", FontStyle.Bold));
LogManager.Configuration.AddTarget(rtbTarget); LogManager.Configuration.AddTarget(rtbTarget);
LogManager.Configuration.AddRule(LogLevel.Debug, LogLevel.Fatal, rtbTarget); LogManager.Configuration.AddRule(LogLevel.Debug, LogLevel.Fatal, rtbTarget);
LogManager.ReconfigExistingLoggers(); LogManager.ReconfigExistingLoggers();
} }
private void MainForm_Load(object sender, EventArgs e) private void MainForm_Load(object sender, EventArgs e)
{ {
spinePreviewPanel.StartRender(); spinePreviewPanel.StartRender();
} string cultureName = ConfigurationManager.AppSettings["localize"];
switch (cultureName)
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) {
{ case "zh-CN":
spinePreviewPanel.StopRender(); ToolStripMenuItem_Chinese.Checked = true;
} ToolStripMenuItem_English.Checked = false;
break;
private void toolStripMenuItem_Open_Click(object sender, EventArgs e) case "en-US":
{ ToolStripMenuItem_English.Checked = true;
spineListView.Add(); ToolStripMenuItem_Chinese.Checked = false;
} break;
default:
private void toolStripMenuItem_BatchOpen_Click(object sender, EventArgs e) ToolStripMenuItem_Chinese.Checked = true;
{ ToolStripMenuItem_English.Checked = false;
spineListView.BatchAdd(); break;
} }
}
#region private void toolStripMenuItem_ExportXXX_Click(object sender, EventArgs e)
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
private void toolStripMenuItem_ExportFrame_Click(object sender, EventArgs e) {
{ spinePreviewPanel.StopRender();
if (spinePreviewPanel.IsUpdating && MessagePopup.Quest("画面仍在更新,建议手动暂停画面后导出固定的一帧,是否继续?") != DialogResult.OK) }
return;
private void toolStripMenuItem_Open_Click(object sender, EventArgs e)
var k = nameof(toolStripMenuItem_ExportFrame); {
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new FrameExporter(); spineListView.Add();
}
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); private void toolStripMenuItem_BatchOpen_Click(object sender, EventArgs e)
exporter.Resolution = spinePreviewPanel.Resolution; {
exporter.PreviewerView = view; spineListView.BatchAdd();
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly; }
var exportDialog = new Dialogs.ExportDialog(new FrameExporterProperty((FrameExporter)exporter)); #region private void toolStripMenuItem_ExportXXX_Click(object sender, EventArgs e)
if (exportDialog.ShowDialog() != DialogResult.OK)
return; private void toolStripMenuItem_ExportFrame_Click(object sender, EventArgs e)
{
var progressDialog = new Dialogs.ProgressDialog(); if (spinePreviewPanel.IsUpdating && MessagePopup.Quest(Properties.Resources.isUpdatingAndManuallyExportFrame, Properties.Resources.msgBoxQuest) != DialogResult.OK)
progressDialog.DoWork += Export_Work; return;
progressDialog.RunWorkerAsync(exporter);
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportFrame);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new FrameExporter();
private void toolStripMenuItem_ExportFrameSequence_Click(object sender, EventArgs e) var exporter = exporterCache[k];
{ using var view = spinePreviewPanel.GetView();
var k = nameof(toolStripMenuItem_ExportFrameSequence); exporter.Resolution = spinePreviewPanel.Resolution;
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new FrameSequenceExporter(); exporter.PreviewerView = view;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); var exportDialog = new Dialogs.ExportDialog(new FrameExporterProperty((FrameExporter)exporter));
exporter.Resolution = spinePreviewPanel.Resolution; if (exportDialog.ShowDialog() != DialogResult.OK)
exporter.PreviewerView = view; return;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var progressDialog = new Dialogs.ProgressDialog();
var exportDialog = new Dialogs.ExportDialog(new FrameSequenceExporterProperty((FrameSequenceExporter)exporter)); progressDialog.DoWork += Export_Work;
if (exportDialog.ShowDialog() != DialogResult.OK) progressDialog.RunWorkerAsync(exporter);
return; progressDialog.ShowDialog();
}
var progressDialog = new Dialogs.ProgressDialog();
progressDialog.DoWork += Export_Work; private void toolStripMenuItem_ExportFrameSequence_Click(object sender, EventArgs e)
progressDialog.RunWorkerAsync(exporter); {
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportFrameSequence);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new FrameSequenceExporter();
private void toolStripMenuItem_ExportGif_Click(object sender, EventArgs e) var exporter = exporterCache[k];
{ using var view = spinePreviewPanel.GetView();
var k = nameof(toolStripMenuItem_ExportGif); exporter.Resolution = spinePreviewPanel.Resolution;
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new GifExporter(); exporter.PreviewerView = view;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); var exportDialog = new Dialogs.ExportDialog(new FrameSequenceExporterProperty((FrameSequenceExporter)exporter));
exporter.Resolution = spinePreviewPanel.Resolution; if (exportDialog.ShowDialog() != DialogResult.OK)
exporter.PreviewerView = view; return;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var progressDialog = new Dialogs.ProgressDialog();
var exportDialog = new Dialogs.ExportDialog(new GifExporterProperty((GifExporter)exporter)); progressDialog.DoWork += Export_Work;
if (exportDialog.ShowDialog() != DialogResult.OK) progressDialog.RunWorkerAsync(exporter);
return; progressDialog.ShowDialog();
}
var progressDialog = new Dialogs.ProgressDialog();
progressDialog.DoWork += Export_Work; private void toolStripMenuItem_ExportGif_Click(object sender, EventArgs e)
progressDialog.RunWorkerAsync(exporter); {
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportGif);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new GifExporter();
private void toolStripMenuItem_ExportWebp_Click(object sender, EventArgs e) var exporter = exporterCache[k];
{ using var view = spinePreviewPanel.GetView();
var k = nameof(toolStripMenuItem_ExportWebp); exporter.Resolution = spinePreviewPanel.Resolution;
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new WebpExporter(); exporter.PreviewerView = view;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); var exportDialog = new Dialogs.ExportDialog(new GifExporterProperty((GifExporter)exporter));
exporter.Resolution = spinePreviewPanel.Resolution; if (exportDialog.ShowDialog() != DialogResult.OK)
exporter.PreviewerView = view; return;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var progressDialog = new Dialogs.ProgressDialog();
var exportDialog = new Dialogs.ExportDialog(new WebpExporterProperty((WebpExporter)exporter)); progressDialog.DoWork += Export_Work;
if (exportDialog.ShowDialog() != DialogResult.OK) progressDialog.RunWorkerAsync(exporter);
return; progressDialog.ShowDialog();
}
var progressDialog = new Dialogs.ProgressDialog();
progressDialog.DoWork += Export_Work; private void toolStripMenuItem_ExportWebp_Click(object sender, EventArgs e)
progressDialog.RunWorkerAsync(exporter); {
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportWebp);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new WebpExporter();
private void toolStripMenuItem_ExportAvif_Click(object sender, EventArgs e) var exporter = exporterCache[k];
{ using var view = spinePreviewPanel.GetView();
var k = nameof(toolStripMenuItem_ExportAvif); exporter.Resolution = spinePreviewPanel.Resolution;
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new AvifExporter(); exporter.PreviewerView = view;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); var exportDialog = new Dialogs.ExportDialog(new WebpExporterProperty((WebpExporter)exporter));
exporter.Resolution = spinePreviewPanel.Resolution; if (exportDialog.ShowDialog() != DialogResult.OK)
exporter.PreviewerView = view; return;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var progressDialog = new Dialogs.ProgressDialog();
var exportDialog = new Dialogs.ExportDialog(new AvifExporterProperty((AvifExporter)exporter)); progressDialog.DoWork += Export_Work;
if (exportDialog.ShowDialog() != DialogResult.OK) progressDialog.RunWorkerAsync(exporter);
return; progressDialog.ShowDialog();
}
var progressDialog = new Dialogs.ProgressDialog();
progressDialog.DoWork += Export_Work; private void toolStripMenuItem_ExportAvif_Click(object sender, EventArgs e)
progressDialog.RunWorkerAsync(exporter); {
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportAvif);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new AvifExporter();
private void toolStripMenuItem_ExportMp4_Click(object sender, EventArgs e) var exporter = exporterCache[k];
{ using var view = spinePreviewPanel.GetView();
var k = nameof(toolStripMenuItem_ExportMp4); exporter.Resolution = spinePreviewPanel.Resolution;
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new Mp4Exporter(); exporter.PreviewerView = view;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); var exportDialog = new Dialogs.ExportDialog(new AvifExporterProperty((AvifExporter)exporter));
exporter.Resolution = spinePreviewPanel.Resolution; if (exportDialog.ShowDialog() != DialogResult.OK)
exporter.PreviewerView = view; return;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var progressDialog = new Dialogs.ProgressDialog();
var exportDialog = new Dialogs.ExportDialog(new Mp4ExporterProperty((Mp4Exporter)exporter)); progressDialog.DoWork += Export_Work;
if (exportDialog.ShowDialog() != DialogResult.OK) progressDialog.RunWorkerAsync(exporter);
return; progressDialog.ShowDialog();
}
var progressDialog = new Dialogs.ProgressDialog();
progressDialog.DoWork += Export_Work; private void toolStripMenuItem_ExportMp4_Click(object sender, EventArgs e)
progressDialog.RunWorkerAsync(exporter); {
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportMp4);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new Mp4Exporter();
private void toolStripMenuItem_ExportWebm_Click(object sender, EventArgs e) var exporter = exporterCache[k];
{ using var view = spinePreviewPanel.GetView();
var k = nameof(toolStripMenuItem_ExportWebm); exporter.Resolution = spinePreviewPanel.Resolution;
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new WebmExporter(); exporter.PreviewerView = view;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); var exportDialog = new Dialogs.ExportDialog(new Mp4ExporterProperty((Mp4Exporter)exporter));
exporter.Resolution = spinePreviewPanel.Resolution; if (exportDialog.ShowDialog() != DialogResult.OK)
exporter.PreviewerView = view; return;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var progressDialog = new Dialogs.ProgressDialog();
var exportDialog = new Dialogs.ExportDialog(new WebmExporterProperty((WebmExporter)exporter)); progressDialog.DoWork += Export_Work;
if (exportDialog.ShowDialog() != DialogResult.OK) progressDialog.RunWorkerAsync(exporter);
return; progressDialog.ShowDialog();
}
var progressDialog = new Dialogs.ProgressDialog();
progressDialog.DoWork += Export_Work; private void toolStripMenuItem_ExportWebm_Click(object sender, EventArgs e)
progressDialog.RunWorkerAsync(exporter); {
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportWebm);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new WebmExporter();
private void toolStripMenuItem_ExportMkv_Click(object sender, EventArgs e) var exporter = exporterCache[k];
{ using var view = spinePreviewPanel.GetView();
var k = nameof(toolStripMenuItem_ExportMkv); exporter.Resolution = spinePreviewPanel.Resolution;
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new MkvExporter(); exporter.PreviewerView = view;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); var exportDialog = new Dialogs.ExportDialog(new WebmExporterProperty((WebmExporter)exporter));
exporter.Resolution = spinePreviewPanel.Resolution; if (exportDialog.ShowDialog() != DialogResult.OK)
exporter.PreviewerView = view; return;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var progressDialog = new Dialogs.ProgressDialog();
var exportDialog = new Dialogs.ExportDialog(new MkvExporterProperty((MkvExporter)exporter)); progressDialog.DoWork += Export_Work;
if (exportDialog.ShowDialog() != DialogResult.OK) progressDialog.RunWorkerAsync(exporter);
return; progressDialog.ShowDialog();
}
var progressDialog = new Dialogs.ProgressDialog();
progressDialog.DoWork += Export_Work; private void toolStripMenuItem_ExportMkv_Click(object sender, EventArgs e)
progressDialog.RunWorkerAsync(exporter); {
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportMkv);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new MkvExporter();
private void toolStripMenuItem_ExportMov_Click(object sender, EventArgs e) var exporter = exporterCache[k];
{ using var view = spinePreviewPanel.GetView();
var k = nameof(toolStripMenuItem_ExportMov); exporter.Resolution = spinePreviewPanel.Resolution;
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new MovExporter(); exporter.PreviewerView = view;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); var exportDialog = new Dialogs.ExportDialog(new MkvExporterProperty((MkvExporter)exporter));
exporter.Resolution = spinePreviewPanel.Resolution; if (exportDialog.ShowDialog() != DialogResult.OK)
exporter.PreviewerView = view; return;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var progressDialog = new Dialogs.ProgressDialog();
var exportDialog = new Dialogs.ExportDialog(new MovExporterProperty((MovExporter)exporter)); progressDialog.DoWork += Export_Work;
if (exportDialog.ShowDialog() != DialogResult.OK) progressDialog.RunWorkerAsync(exporter);
return; progressDialog.ShowDialog();
}
var progressDialog = new Dialogs.ProgressDialog();
progressDialog.DoWork += Export_Work; private void toolStripMenuItem_ExportMov_Click(object sender, EventArgs e)
progressDialog.RunWorkerAsync(exporter); {
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportMov);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new MovExporter();
private void toolStripMenuItem_ExportCustom_Click(object sender, EventArgs e) var exporter = exporterCache[k];
{ using var view = spinePreviewPanel.GetView();
var k = nameof(toolStripMenuItem_ExportCustom); exporter.Resolution = spinePreviewPanel.Resolution;
if (!exporterCache.ContainsKey(k)) exporterCache[k] = new CustomExporter(); exporter.PreviewerView = view;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView(); var exportDialog = new Dialogs.ExportDialog(new MovExporterProperty((MovExporter)exporter));
exporter.Resolution = spinePreviewPanel.Resolution; if (exportDialog.ShowDialog() != DialogResult.OK)
exporter.PreviewerView = view; return;
exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
var progressDialog = new Dialogs.ProgressDialog();
var exportDialog = new Dialogs.ExportDialog(new CustomExporterProperty((CustomExporter)exporter)); progressDialog.DoWork += Export_Work;
if (exportDialog.ShowDialog() != DialogResult.OK) progressDialog.RunWorkerAsync(exporter);
return; progressDialog.ShowDialog();
}
var progressDialog = new Dialogs.ProgressDialog();
progressDialog.DoWork += Export_Work; private void toolStripMenuItem_ExportCustom_Click(object sender, EventArgs e)
progressDialog.RunWorkerAsync(exporter); {
progressDialog.ShowDialog(); var k = nameof(toolStripMenuItem_ExportCustom);
} if (!exporterCache.ContainsKey(k)) exporterCache[k] = new CustomExporter();
#endregion var exporter = exporterCache[k];
using var view = spinePreviewPanel.GetView();
private void toolStripMenuItem_Exit_Click(object sender, EventArgs e) exporter.Resolution = spinePreviewPanel.Resolution;
{ exporter.PreviewerView = view;
Close(); exporter.RenderSelectedOnly = spinePreviewPanel.RenderSelectedOnly;
}
var exportDialog = new Dialogs.ExportDialog(new CustomExporterProperty((CustomExporter)exporter));
private void toolStripMenuItem_ConvertFileFormat_Click(object sender, EventArgs e) if (exportDialog.ShowDialog() != DialogResult.OK)
{ return;
var openDialog = new Dialogs.ConvertFileFormatDialog();
if (openDialog.ShowDialog() != DialogResult.OK) var progressDialog = new Dialogs.ProgressDialog();
return; progressDialog.DoWork += Export_Work;
progressDialog.RunWorkerAsync(exporter);
var progressDialog = new Dialogs.ProgressDialog(); progressDialog.ShowDialog();
progressDialog.DoWork += ConvertFileFormat_Work; }
progressDialog.RunWorkerAsync(openDialog.Result);
progressDialog.ShowDialog(); #endregion
}
private void toolStripMenuItem_Exit_Click(object sender, EventArgs e)
private void toolStripMenuItem_ManageResource_Click(object sender, EventArgs e) {
{ Close();
}
}
private void toolStripMenuItem_ConvertFileFormat_Click(object sender, EventArgs e)
private void toolStripMenuItem_About_Click(object sender, EventArgs e) {
{ var openDialog = new Dialogs.ConvertFileFormatDialog();
using var dialog = new Dialogs.AboutDialog(); if (openDialog.ShowDialog() != DialogResult.OK)
dialog.ShowDialog(); return;
}
var progressDialog = new Dialogs.ProgressDialog();
private void toolStripMenuItem_Diagnostics_Click(object sender, EventArgs e) progressDialog.DoWork += ConvertFileFormat_Work;
{ progressDialog.RunWorkerAsync(openDialog.Result);
using var dialog = new Dialogs.DiagnosticsDialog(); progressDialog.ShowDialog();
dialog.ShowDialog(); }
}
private void toolStripMenuItem_ManageResource_Click(object sender, EventArgs e)
private void splitContainer_SplitterMoved(object sender, SplitterEventArgs e) => ActiveControl = null; {
private void splitContainer_MouseUp(object sender, MouseEventArgs e) => ActiveControl = null; }
private void Export_Work(object? sender, DoWorkEventArgs e) private void toolStripMenuItem_About_Click(object sender, EventArgs e)
{ {
var worker = (BackgroundWorker)sender; using var dialog = new Dialogs.AboutDialog();
var exporter = (Exporter)e.Argument; dialog.ShowDialog();
Invoke(() => TaskbarManager.SetProgressState(Handle, TBPFLAG.TBPF_INDETERMINATE)); }
spinePreviewPanel.StopRender();
lock (spineListView.Spines) { exporter.Export(spineListView.Spines.Where(sp => !sp.IsHidden).ToArray(), (BackgroundWorker)sender); } private void toolStripMenuItem_Diagnostics_Click(object sender, EventArgs e)
e.Cancel = worker.CancellationPending; {
spinePreviewPanel.StartRender(); using var dialog = new Dialogs.DiagnosticsDialog();
Invoke(() => TaskbarManager.SetProgressState(Handle, TBPFLAG.TBPF_NOPROGRESS)); dialog.ShowDialog();
} }
private void ConvertFileFormat_Work(object? sender, DoWorkEventArgs e) private void splitContainer_SplitterMoved(object sender, SplitterEventArgs e) => ActiveControl = null;
{
var worker = sender as BackgroundWorker; private void splitContainer_MouseUp(object sender, MouseEventArgs e) => ActiveControl = null;
var args = e.Argument as Dialogs.ConvertFileFormatDialogResult;
var newSuffix = args.JsonTarget ? ".json" : ".skel"; private void Export_Work(object? sender, DoWorkEventArgs e)
{
int totalCount = args.SkelPaths.Length; var worker = (BackgroundWorker)sender;
int success = 0; var exporter = (Exporter)e.Argument;
int error = 0; Invoke(() => TaskbarManager.SetProgressState(Handle, TBPFLAG.TBPF_INDETERMINATE));
spinePreviewPanel.StopRender();
SkeletonConverter srcCvter = args.SourceVersion != SpineVersion.Auto ? SkeletonConverter.New(args.SourceVersion) : null; lock (spineListView.Spines) { exporter.Export(spineListView.Spines.Where(sp => !sp.IsHidden).ToArray(), (BackgroundWorker)sender); }
SkeletonConverter tgtCvter = SkeletonConverter.New(args.TargetVersion); e.Cancel = worker.CancellationPending;
spinePreviewPanel.StartRender();
worker.ReportProgress(0, $"已处理 0/{totalCount}"); Invoke(() => TaskbarManager.SetProgressState(Handle, TBPFLAG.TBPF_NOPROGRESS));
for (int i = 0; i < totalCount; i++) }
{
if (worker.CancellationPending) private void ConvertFileFormat_Work(object? sender, DoWorkEventArgs e)
{ {
e.Cancel = true; var worker = sender as BackgroundWorker;
break; var args = e.Argument as Dialogs.ConvertFileFormatDialogResult;
} var newSuffix = args.JsonTarget ? ".json" : ".skel";
var skelPath = args.SkelPaths[i]; int totalCount = args.SkelPaths.Length;
var newPath = Path.ChangeExtension(skelPath, newSuffix); int success = 0;
if (args.OutputDir is string outputDir) newPath = Path.Combine(outputDir, Path.GetFileName(newPath)); int error = 0;
try SkeletonConverter srcCvter = args.SourceVersion != SpineVersion.Auto ? SkeletonConverter.New(args.SourceVersion) : null;
{ SkeletonConverter tgtCvter = SkeletonConverter.New(args.TargetVersion);
if (args.SourceVersion == SpineVersion.Auto)
{ worker.ReportProgress(0, $"{Properties.Resources.process} 0/{totalCount}");
try for (int i = 0; i < totalCount; i++)
{ {
srcCvter = SkeletonConverter.New(SpineUtils.GetVersion(skelPath)); if (worker.CancellationPending)
} {
catch (Exception ex) e.Cancel = true;
{ break;
throw new InvalidDataException($"Auto version detection failed for {skelPath}, try to use a specific version", ex); }
}
} var skelPath = args.SkelPaths[i];
var root = srcCvter.Read(skelPath); var newPath = Path.ChangeExtension(skelPath, newSuffix);
root = srcCvter.ToVersion(root, args.TargetVersion); if (args.OutputDir is string outputDir) newPath = Path.Combine(outputDir, Path.GetFileName(newPath));
if (args.JsonTarget) tgtCvter.WriteJson(root, newPath);
else tgtCvter.WriteBinary(root, newPath); try
success++; {
} if (args.SourceVersion == SpineVersion.Auto)
catch (Exception ex) {
{ try
logger.Error(ex.ToString()); {
logger.Error("Failed to convert {}", skelPath); srcCvter = SkeletonConverter.New(SpineUtils.GetVersion(skelPath));
error++; }
} catch (Exception ex)
{
worker.ReportProgress((int)((i + 1) * 100.0) / totalCount, $"已处理 {i + 1}/{totalCount}"); throw new InvalidDataException($"Auto version detection failed for {skelPath}, try to use a specific version", ex);
} }
}
if (error > 0) var root = srcCvter.Read(skelPath);
{ root = srcCvter.ToVersion(root, args.TargetVersion);
logger.Warn("Batch convert {} successfully, {} failed", success, error); if (args.JsonTarget) tgtCvter.WriteJson(root, newPath);
} else tgtCvter.WriteBinary(root, newPath);
else success++;
{ }
logger.Info("{} skel converted successfully", success); catch (Exception ex)
} {
} logger.Error(ex.ToString());
logger.Error("Failed to convert {}", skelPath);
private void toolStripMenuItem_DesktopProjection_Click(object sender, EventArgs e) error++;
{ }
toolStripMenuItem_DesktopProjection.Checked = !toolStripMenuItem_DesktopProjection.Checked;
spinePreviewPanel.EnableDesktopProjection = toolStripMenuItem_DesktopProjection.Checked; worker.ReportProgress((int)((i + 1) * 100.0) / totalCount, $"{Properties.Resources.process} {i + 1}/{totalCount}");
} }
private void toolStripMenuItem_Debug_Click(object sender, EventArgs e) if (error > 0)
{ {
logger.Warn("Batch convert {} successfully, {} failed", success, error);
}
else
{
logger.Info("{} skel converted successfully", success);
}
}
private void toolStripMenuItem_DesktopProjection_Click(object sender, EventArgs e)
{
toolStripMenuItem_DesktopProjection.Checked = !toolStripMenuItem_DesktopProjection.Checked;
spinePreviewPanel.EnableDesktopProjection = toolStripMenuItem_DesktopProjection.Checked;
}
private void toolStripMenuItem_Debug_Click(object sender, EventArgs e)
{
#if DEBUG #if DEBUG
//var cvt = SkeletonConverter.New(SpineVersion.V38); //var cvt = SkeletonConverter.New(SpineVersion.V38);
//var root = cvt.ReadBinary(@"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3 - 副本.skel"); //var root = cvt.ReadBinary(@"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3 - 副本.skel");
//cvt.WriteJson(root, @"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3.json"); //cvt.WriteJson(root, @"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3.json");
//root = cvt.ReadJson(@"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3.json"); //root = cvt.ReadJson(@"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3.json");
//cvt.WriteBinary(root, @"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3.skel"); //cvt.WriteBinary(root, @"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3.skel");
//var sp = SpineObject.New(SpineVersion.V38, @"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3.skel"); //var sp = SpineObject.New(SpineVersion.V38, @"D:\ACGN\AzurLane_Export\AzurLane_Dynamic\docs\aerhangeersike\aerhangeersike_3\aerhangeersike_3.skel");
//var cvt = SkeletonConverter.New(SpineVersion.V38); //var cvt = SkeletonConverter.New(SpineVersion.V38);
//var root = cvt.ReadJson(@"D:\ACGN\G\GirlsCreation\standing_spine\st4020069\st4020069.json"); //var root = cvt.ReadJson(@"D:\ACGN\G\GirlsCreation\standing_spine\st4020069\st4020069.json");
//cvt.WriteBinary(root, @"D:\ACGN\G\GirlsCreation\standing_spine\st4020069\st4020069.skel"); //cvt.WriteBinary(root, @"D:\ACGN\G\GirlsCreation\standing_spine\st4020069\st4020069.skel");
//var sp = SpineObject.New(SpineVersion.V38, @"D:\ACGN\G\GirlsCreation\standing_spine\st4020069\st4020069.skel"); //var sp = SpineObject.New(SpineVersion.V38, @"D:\ACGN\G\GirlsCreation\standing_spine\st4020069\st4020069.skel");
//_Test(); //_Test();
#endif #endif
} }
//private void spinePreviewer_KeyDown(object sender, KeyEventArgs e) private void ToolStripMenuItem_English_Click(object sender, EventArgs e)
//{ {
// switch (e.KeyCode) if (ToolStripMenuItem_English.Checked) return;
// { ChangeLanguage("en-US");
// case Keys.Space: }
// if ((ModifierKeys & Keys.Alt) != 0)
// spinePreviewer.ClickStopButton(); private void ToolStripMenuItem_Chinese_Click(object sender, EventArgs e)
// else {
// spinePreviewer.ClickStartButton(); if (ToolStripMenuItem_Chinese.Checked) return;
// break; ChangeLanguage("zh-CN");
// case Keys.Right: }
// if ((ModifierKeys & Keys.Alt) != 0)
// spinePreviewer.ClickForwardFastButton(); private void ChangeLanguage(string localize)
// else {
// spinePreviewer.ClickForwardStepButton(); DialogResult result = MessageBox.Show(
// break; Properties.Resources.restartPrompt,
// case Keys.Left: Properties.Resources.restartTitle,
// if ((ModifierKeys & Keys.Alt) != 0) MessageBoxButtons.YesNo,
// spinePreviewer.ClickRestartButton(); MessageBoxIcon.Question);
// break;
// } if (result == DialogResult.Yes)
//} {
} LocalizeConfiguration.UpdateLocalizeSetting(localize);
LocalizeConfiguration.SetCulture();
Application.Restart();
Environment.Exit(0);
}
}
//private void spinePreviewer_KeyDown(object sender, KeyEventArgs e)
//{
// switch (e.KeyCode)
// {
// case Keys.Space:
// if ((ModifierKeys & Keys.Alt) != 0)
// spinePreviewer.ClickStopButton();
// else
// spinePreviewer.ClickStartButton();
// break;
// case Keys.Right:
// if ((ModifierKeys & Keys.Alt) != 0)
// spinePreviewer.ClickForwardFastButton();
// else
// spinePreviewer.ClickForwardStepButton();
// break;
// case Keys.Left:
// if ((ModifierKeys & Keys.Alt) != 0)
// spinePreviewer.ClickRestartButton();
// break;
// }
//}
}
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,14 @@
using NLog; using NLog;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System.Configuration;
using System.Diagnostics; using System.Diagnostics;
using System.Globalization;
using System.Reflection; using System.Reflection;
namespace SpineViewer namespace SpineViewer
{ {
internal static class Program internal static class Program
{ {
///// <summary> ///// <summary>
///// 程序路径 ///// 程序路径
@@ -42,20 +45,21 @@ namespace SpineViewer
{ {
// 此处先初始化全局配置再触发静态字段 Logger 引用构造, 才能将配置应用到新的日志器上 // 此处先初始化全局配置再触发静态字段 Logger 引用构造, 才能将配置应用到新的日志器上
InitializeLogConfiguration(); InitializeLogConfiguration();
logger.Info("Program Started"); logger.Info("Program Started");
// To customize application configuration such as set high DPI settings or default font, // To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration. // see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize(); ApplicationConfiguration.Initialize();
LocalizeConfiguration.SetCulture();
try try
{ {
Application.Run(new SpineViewerForm() { Text = $"SpineViewer - v{Version}"}); Application.Run(new SpineViewerForm() { Text = $"SpineViewer - v{Version}"});
} }
catch (Exception ex) catch (Exception ex)
{ {
logger.Fatal(ex.ToString()); logger.Fatal(ex.ToString());
MessagePopup.Error(ex.ToString(), "程序已崩溃"); MessagePopup.Error(ex.ToString(), Properties.Resources.programCrashed);
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,511 @@
<?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>
<data name="about" xml:space="preserve">
<value>About</value>
</data>
<data name="animation" xml:space="preserve">
<value>Animation</value>
</data>
<data name="atlasNotExist" xml:space="preserve">
<value>Atlas file doesn't exist.</value>
</data>
<data name="atlasPath" xml:space="preserve">
<value>Atlas file path</value>
</data>
<data name="basicInfo" xml:space="preserve">
<value>Basic info</value>
</data>
<data name="categoryCustom" xml:space="preserve">
<value>Custom</value>
</data>
<data name="categoryExport" xml:space="preserve">
<value>[0] Export</value>
</data>
<data name="categoryFormatParameters" xml:space="preserve">
<value>[3] Format parameters</value>
</data>
<data name="categoryPreview" xml:space="preserve">
<value>[1] Preview</value>
</data>
<data name="countInfoStatusMidfix" xml:space="preserve">
<value>item(s) selected,</value>
</data>
<data name="countInfoStatusPrefix" xml:space="preserve">
<value>.</value>
</data>
<data name="countInfoStatusSuffix" xml:space="preserve">
<value>in total.</value>
</data>
<data name="debug" xml:space="preserve">
<value>Debug</value>
</data>
<data name="descAssociatedSpineListView" xml:space="preserve">
<value>Associated SpineListView</value>
</data>
<data name="descDisplayImageProperties" xml:space="preserve">
<value>Property page for displaying image properties</value>
</data>
<data name="descAvifEncoder" xml:space="preserve">
<value>-c:v: Video encoder to use. Hardware acceleration is recommended. Note: libaom-av1 is extremely slow.</value>
</data>
<data name="descModelAttributes" xml:space="preserve">
<value>Model attributes display page.</value>
</data>
<data name="displayBackgroundColor" xml:space="preserve">
<value>Background color</value>
</data>
<data name="displayCenter" xml:space="preserve">
<value>Center point of screen</value>
</data>
<data name="displayEncoder" xml:space="preserve">
<value>Encoder</value>
</data>
<data name="displayFlipHorizontal" xml:space="preserve">
<value>Flip horizontal</value>
</data>
<data name="displayFlipVertical" xml:space="preserve">
<value>Flip vertical</value>
</data>
<data name="displayMaximumFrameRate" xml:space="preserve">
<value>Maximum frame rate</value>
</data>
<data name="displayRenderSelected" xml:space="preserve">
<value>Render selected only</value>
</data>
<data name="displayResolution" xml:space="preserve">
<value>Resolution</value>
</data>
<data name="displayRotation" xml:space="preserve">
<value>Rotation</value>
</data>
<data name="displayShowAxis" xml:space="preserve">
<value>Show axis</value>
</data>
<data name="displayZoom" xml:space="preserve">
<value>Zoom</value>
</data>
<data name="duration" xml:space="preserve">
<value>Duration</value>
</data>
<data name="errorLoadSkeleton" xml:space="preserve">
<value>Failed to load skeleton</value>
</data>
<data name="fileVersion" xml:space="preserve">
<value>File version</value>
</data>
<data name="flipX" xml:space="preserve">
<value>FlipX</value>
</data>
<data name="flipY" xml:space="preserve">
<value>FlipY</value>
</data>
<data name="formatExceptionParseColor" xml:space="preserve">
<value>Unable to parse color, please use #RRGGBBAA, #RRGGBB, #RGBA or #RGB format.</value>
</data>
<data name="formatExceptionParseColorError" xml:space="preserve">
<value>Color format is invalid. Please check the format.</value>
</data>
<data name="formatExceptionUnknownColor" xml:space="preserve">
<value>Color not recognized. Please use a valid color name.</value>
</data>
<data name="isHidden" xml:space="preserve">
<value>Is hidden</value>
</data>
<data name="itemCountPrefix" xml:space="preserve">
<value>.</value>
</data>
<data name="itemCountSuffix" xml:space="preserve">
<value> item(s) selected.</value>
</data>
<data name="loadAllSkeletonPrefix" xml:space="preserve">
<value>A total of </value>
</data>
<data name="loadAllSkeletonSuffix" xml:space="preserve">
<value>skeletons found. Do you want to load them all at once?</value>
</data>
<data name="maximumTrackLength" xml:space="preserve">
<value>Maximum Track Length</value>
</data>
<data name="msgBoxError" xml:space="preserve">
<value>Error</value>
</data>
<data name="msgBoxInfo" xml:space="preserve">
<value>Info</value>
</data>
<data name="msgBoxQuest" xml:space="preserve">
<value>Action Confirmation</value>
</data>
<data name="msgBoxWarning" xml:space="preserve">
<value>Warning</value>
</data>
<data name="name" xml:space="preserve">
<value>Name</value>
</data>
<data name="notifyCopyGithubLink" xml:space="preserve">
<value>Link copied to clipboard. Please open it in browser</value>
</data>
<data name="parameterError" xml:space="preserve">
<value>Invalid Parameters</value>
</data>
<data name="position" xml:space="preserve">
<value>Position</value>
</data>
<data name="previewRenderStopped" xml:space="preserve">
<value>Preview Render Stopped</value>
</data>
<data name="process" xml:space="preserve">
<value>Processed </value>
</data>
<data name="programCrashed" xml:space="preserve">
<value>Application has crashed</value>
</data>
<data name="removeAllItemPrefix" xml:space="preserve">
<value>Remove all </value>
</data>
<data name="removeItemConfirmPrefix" xml:space="preserve">
<value>Remove </value>
</data>
<data name="removeItemConfirmSuffix" xml:space="preserve">
<value> item(s)?</value>
</data>
<data name="render" xml:space="preserve">
<value>Render</value>
</data>
<data name="resourcesPath" xml:space="preserve">
<value>Resource Path</value>
</data>
<data name="restartPrompt" xml:space="preserve">
<value>Language set to Simplified Chinese. Restart application now?</value>
</data>
<data name="restartTitle" xml:space="preserve">
<value>Application restart required!</value>
</data>
<data name="runtimeError" xml:space="preserve">
<value>Runtime error</value>
</data>
<data name="runtimeVersion" xml:space="preserve">
<value>Runtime version</value>
</data>
<data name="scale" xml:space="preserve">
<value>Scale</value>
</data>
<data name="skelNotExist" xml:space="preserve">
<value>Skel file doesn't exist.</value>
</data>
<data name="skelPath" xml:space="preserve">
<value>Skel file path</value>
</data>
<data name="skin" xml:space="preserve">
<value>Skin</value>
</data>
<data name="slot" xml:space="preserve">
<value>Slot</value>
</data>
<data name="transform" xml:space="preserve">
<value>Transform</value>
</data>
<data name="usePremultipliedAlpha" xml:space="preserve">
<value>UsePremultipliedAlpha</value>
</data>
<data name="descCRF" xml:space="preserve">
<value>-crf: Accepts values from 0 to 63. Recommended range is 1828 (default is 23). Lower values result in higher output quality</value>
</data>
<data name="displayPixelFormat" xml:space="preserve">
<value>Pixel format</value>
</data>
<data name="descPixelFormat" xml:space="preserve">
<value>-pix_fmt: Pixel format to use.</value>
</data>
<data name="displayLoopCount" xml:space="preserve">
<value>Loop count</value>
</data>
<data name="descLoopCount" xml:space="preserve">
<value>-loop: Number of loops. 0 for infinite loops. Valid range: [0, 65535].</value>
</data>
<data name="invalidInputFolder" xml:space="preserve">
<value>Invalid output folder</value>
</data>
<data name="folderNotExistPrefix" xml:space="preserve">
<value>Folder </value>
</data>
<data name="folderNotExistSuffix" xml:space="preserve">
<value>doesn't exist.</value>
</data>
<data name="mustProvideOutputFolder" xml:space="preserve">
<value>An output folder must be provided when exporting a single file.</value>
</data>
<data name="categoryFFmpegParameter" xml:space="preserve">
<value>[2] FFmpeg Basic Parameters</value>
</data>
<data name="displayFileFormat" xml:space="preserve">
<value>File format</value>
</data>
<data name="descFileFormat" xml:space="preserve">
<value>-f: Specify the output file format</value>
</data>
<data name="displayFilenameSuffix" xml:space="preserve">
<value>File extension</value>
</data>
<data name="descFilenameSuffix" xml:space="preserve">
<value>File extension</value>
</data>
<data name="displayOutputFolder" xml:space="preserve">
<value>Output folder</value>
</data>
<data name="descOutputFolder" xml:space="preserve">
<value>Leave empty to export to each model's folder.</value>
</data>
<data name="displayExportSingle" xml:space="preserve">
<value>Export single</value>
</data>
<data name="descExportSingle" xml:space="preserve">
<value>Export all models in a single file, or export each model separately.</value>
</data>
<data name="descResolution" xml:space="preserve">
<value>Set pixel size in preview panel.</value>
</data>
<data name="displayPreviewViewport" xml:space="preserve">
<value>Preview viewport</value>
</data>
<data name="descPreviewViewport" xml:space="preserve">
<value>Preview viewport settings. Adjust in the preview panel.</value>
</data>
<data name="descRenderSelected" xml:space="preserve">
<value>Export selected models only. Adjust this in the preview settings panel.</value>
</data>
<data name="descBackgroundColor" xml:space="preserve">
<value>Background color to use, in #RRGGBBAA format.</value>
</data>
<data name="displayMargin" xml:space="preserve">
<value>Margin</value>
</data>
<data name="descMargin" xml:space="preserve">
<value>Outer canvas margin. This will be added to the final export resolution.</value>
</data>
<data name="displayPadding" xml:space="preserve">
<value>Padding</value>
</data>
<data name="descPadding" xml:space="preserve">
<value>Internal canvas padding. The export resolution remains unchanged, but space will be left around the edges.</value>
</data>
<data name="displayAllowContentOverflow" xml:space="preserve">
<value>Allow content overflow</value>
</data>
<data name="descAllowContentOverflow" xml:space="preserve">
<value>When using the preview resolution, allow content to overflow into the edges and padding areas.</value>
</data>
<data name="displayAutoResolution" xml:space="preserve">
<value>Auto resolution</value>
</data>
<data name="descAutoResolution" xml:space="preserve">
<value>Automatically set resolution based on export content. Edge padding and content overflow settings will be ignored.</value>
</data>
<data name="validFormatRequired" xml:space="preserve">
<value>Valid format required.</value>
</data>
<data name="validExtensionRequired" xml:space="preserve">
<value>Valie extension required.</value>
</data>
<data name="descCustomArgument" xml:space="preserve">
<value>Use "ffmpeg -h encoder=&lt;encoder&gt;" to view supported encoder parameters.
Use "ffmpeg -h muxer=&lt;file format&gt;" to view supported file format parameters.</value>
</data>
<data name="displayCustomArgument" xml:space="preserve">
<value>Custom arguments</value>
</data>
<data name="categorySingleFrame" xml:space="preserve">
<value>[1] Single Frame</value>
</data>
<data name="displayImageFormat" xml:space="preserve">
<value>Image format</value>
</data>
<data name="descFileNameExtension" xml:space="preserve">
<value>Filename extension matching the image format.</value>
</data>
<data name="descDPI" xml:space="preserve">
<value>Pixels per inch (PPI) for the exported image, used to adjust the physical size of the image.</value>
</data>
<data name="categoryFrameSequenceParameters" xml:space="preserve">
<value>[2] Frame Sequence Parameters</value>
</data>
<data name="descFrameFileExtension" xml:space="preserve">
<value>Frame file extension, which also defines the image format of each frame.</value>
</data>
<data name="displayMaxColor" xml:space="preserve">
<value>Max colors in palette</value>
</data>
<data name="descMaxColor" xml:space="preserve">
<value>Max colors in palette. Higher value = better color retention.</value>
</data>
<data name="displayAlphaThreshold" xml:space="preserve">
<value>Alpha threshold</value>
</data>
<data name="descAlphaThreshold" xml:space="preserve">
<value>Pixels below this value will be considered transparent.</value>
</data>
<data name="displayPreset" xml:space="preserve">
<value>Preset</value>
</data>
<data name="descPreset" xml:space="preserve">
<value>-profile: Preset configuration</value>
</data>
<data name="negativeDuration" xml:space="preserve">
<value>Export duration cannot be negative when exporting a single file.</value>
</data>
<data name="frame" xml:space="preserve">
<value>frame(s)</value>
</data>
<data name="categoryVideoParameters" xml:space="preserve">
<value>[1] Video Parameters</value>
</data>
<data name="descDuration" xml:space="preserve">
<value>Check animation duration in the model list. If less than 0, each model uses its longest track when exporting individually.</value>
</data>
<data name="displayFPS" xml:space="preserve">
<value>FPS</value>
</data>
<data name="descFPS" xml:space="preserve">
<value>Frames Per Second (FPS)</value>
</data>
<data name="displayKeepLastFrame" xml:space="preserve">
<value>Keep last frame</value>
</data>
<data name="descKeepLastFrame" xml:space="preserve">
<value>Keeping the last frame smooths the animation, but may add one extra frame.</value>
</data>
<data name="displayLoseless" xml:space="preserve">
<value>Loseless</value>
</data>
<data name="descLoseless" xml:space="preserve">
<value>-lossless: 0 for lossy, 1 for lossless.</value>
</data>
<data name="displayQuality" xml:space="preserve">
<value>Quality</value>
</data>
<data name="descQuality" xml:space="preserve">
<value>-quality: Range 0-100, default is 75.</value>
</data>
<data name="failLoadingFragmentShader" xml:space="preserve">
<value>Fragment shader failed to load, pre-multiplied alpha channel property disabled.</value>
</data>
<data name="isUpdatingAndManuallyExportFrame" xml:space="preserve">
<value>The screen is still updating. Its recommended to manually pause and export a fixed frame. Do you want to continue?</value>
</data>
</root>

View File

@@ -117,4 +117,394 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="about" xml:space="preserve">
<value>关于 </value>
</data>
<data name="animation" xml:space="preserve">
<value>动画</value>
</data>
<data name="atlasNotExist" xml:space="preserve">
<value>atlas文件不存在</value>
</data>
<data name="atlasPath" xml:space="preserve">
<value>atlas文件路径</value>
</data>
<data name="basicInfo" xml:space="preserve">
<value>基本信息</value>
</data>
<data name="categoryCustom" xml:space="preserve">
<value>自定义</value>
</data>
<data name="categoryExport" xml:space="preserve">
<value>[0] 导出</value>
</data>
<data name="categoryFormatParameters" xml:space="preserve">
<value>[3] 格式参数</value>
</data>
<data name="categoryPreview" xml:space="preserve">
<value>[1] 预览</value>
</data>
<data name="countInfoStatusMidfix" xml:space="preserve">
<value> 项,共 </value>
</data>
<data name="countInfoStatusPrefix" xml:space="preserve">
<value>已选择 </value>
</data>
<data name="countInfoStatusSuffix" xml:space="preserve">
<value> 项</value>
</data>
<data name="debug" xml:space="preserve">
<value>调试</value>
</data>
<data name="descAssociatedSpineListView" xml:space="preserve">
<value>相关联的 SpineListView</value>
</data>
<data name="descDisplayImageProperties" xml:space="preserve">
<value>用于显示画面属性的属性页</value>
</data>
<data name="descAvifEncoder" xml:space="preserve">
<value>-c:v, 要使用的编码器\n建议使用硬件加速, libaom-av1 速度非常非常非常慢</value>
</data>
<data name="descModelAttributes" xml:space="preserve">
<value>用于显示模型属性的组合属性页</value>
</data>
<data name="displayBackgroundColor" xml:space="preserve">
<value>背景颜色</value>
</data>
<data name="displayCenter" xml:space="preserve">
<value>画面中心点</value>
</data>
<data name="displayEncoder" xml:space="preserve">
<value>编码器</value>
</data>
<data name="displayFlipHorizontal" xml:space="preserve">
<value>水平翻转</value>
</data>
<data name="displayFlipVertical" xml:space="preserve">
<value>垂直翻转</value>
</data>
<data name="displayMaximumFrameRate" xml:space="preserve">
<value>最大帧率</value>
</data>
<data name="displayRenderSelected" xml:space="preserve">
<value>仅渲染选中</value>
</data>
<data name="displayResolution" xml:space="preserve">
<value>分辨率</value>
</data>
<data name="displayRotation" xml:space="preserve">
<value>旋转</value>
</data>
<data name="displayShowAxis" xml:space="preserve">
<value>显示坐标轴</value>
</data>
<data name="displayZoom" xml:space="preserve">
<value>缩放</value>
</data>
<data name="duration" xml:space="preserve">
<value>时长</value>
</data>
<data name="errorLoadSkeleton" xml:space="preserve">
<value>骨骼加载失败</value>
</data>
<data name="fileVersion" xml:space="preserve">
<value>文件版本</value>
</data>
<data name="flipX" xml:space="preserve">
<value>水平翻转</value>
</data>
<data name="flipY" xml:space="preserve">
<value>垂直翻转</value>
</data>
<data name="formatExceptionParseColor" xml:space="preserve">
<value>无法解析颜色,请使用 #RRGGBBAA、#RRGGBB、#RGBA 或 #RGB 格式</value>
</data>
<data name="formatExceptionParseColorError" xml:space="preserve">
<value>无法解析颜色,请检查格式</value>
</data>
<data name="formatExceptionUnknownColor" xml:space="preserve">
<value>无法解析颜色,请使用已知的颜色名称</value>
</data>
<data name="isHidden" xml:space="preserve">
<value>是否隐藏</value>
</data>
<data name="itemCountPrefix" xml:space="preserve">
<value>已选择 </value>
</data>
<data name="itemCountSuffix" xml:space="preserve">
<value> 个文件</value>
</data>
<data name="loadAllSkeletonPrefix" xml:space="preserve">
<value>共发现 </value>
</data>
<data name="loadAllSkeletonSuffix" xml:space="preserve">
<value> 个可加载骨骼,数量较多,是否一次性全部加载?</value>
</data>
<data name="maximumTrackLength" xml:space="preserve">
<value>全轨道最大时长</value>
</data>
<data name="msgBoxError" xml:space="preserve">
<value>错误信息</value>
</data>
<data name="msgBoxInfo" xml:space="preserve">
<value>提示信息</value>
</data>
<data name="msgBoxQuest" xml:space="preserve">
<value>操作确认</value>
</data>
<data name="msgBoxWarning" xml:space="preserve">
<value>警告信息</value>
</data>
<data name="name" xml:space="preserve">
<value>名称</value>
</data>
<data name="notifyCopyGithubLink" xml:space="preserve">
<value>链接已复制到剪贴板,请前往浏览器进行访问</value>
</data>
<data name="parameterError" xml:space="preserve">
<value>参数错误</value>
</data>
<data name="position" xml:space="preserve">
<value>位置</value>
</data>
<data name="previewRenderStopped" xml:space="preserve">
<value>预览画面已停止渲染</value>
</data>
<data name="process" xml:space="preserve">
<value>已处理 </value>
</data>
<data name="programCrashed" xml:space="preserve">
<value>程序已崩溃</value>
</data>
<data name="removeAllItemPrefix" xml:space="preserve">
<value>确认移除所有 </value>
</data>
<data name="removeItemConfirmPrefix" xml:space="preserve">
<value>确定移除所选 </value>
</data>
<data name="removeItemConfirmSuffix" xml:space="preserve">
<value> 项吗?</value>
</data>
<data name="render" xml:space="preserve">
<value>渲染</value>
</data>
<data name="resourcesPath" xml:space="preserve">
<value>资源目录</value>
</data>
<data name="restartPrompt" xml:space="preserve">
<value>语言已设为英语。立即重启应用程序吗?</value>
</data>
<data name="restartTitle" xml:space="preserve">
<value>需要重新启动应用程序!</value>
</data>
<data name="runtimeError" xml:space="preserve">
<value>执行出错</value>
</data>
<data name="runtimeVersion" xml:space="preserve">
<value>运行时版本</value>
</data>
<data name="scale" xml:space="preserve">
<value>缩放比例</value>
</data>
<data name="skelNotExist" xml:space="preserve">
<value>skel文件不存在</value>
</data>
<data name="skelPath" xml:space="preserve">
<value>skel文件路径</value>
</data>
<data name="skin" xml:space="preserve">
<value>皮肤</value>
</data>
<data name="slot" xml:space="preserve">
<value>插槽</value>
</data>
<data name="transform" xml:space="preserve">
<value>变换</value>
</data>
<data name="usePremultipliedAlpha" xml:space="preserve">
<value>预乘Alpha通道</value>
</data>
<data name="descCRF" xml:space="preserve">
<value>-crf, 取值范围 0-63, 建议范围 18-28, 默认取值 23, 数值越小则输出质量越高</value>
</data>
<data name="displayPixelFormat" xml:space="preserve">
<value>像素格式</value>
</data>
<data name="descPixelFormat" xml:space="preserve">
<value>-pix_fmt, 要使用的像素格式</value>
</data>
<data name="displayLoopCount" xml:space="preserve">
<value>循环次数</value>
</data>
<data name="descLoopCount" xml:space="preserve">
<value>-loop, 循环次数, 0 无限循环, 取值范围 [0, 65535]</value>
</data>
<data name="invalidInputFolder" xml:space="preserve">
<value>输出文件夹无效</value>
</data>
<data name="folderNotExistPrefix" xml:space="preserve">
<value>文件夹 </value>
</data>
<data name="folderNotExistSuffix" xml:space="preserve">
<value>不存在</value>
</data>
<data name="mustProvideOutputFolder" xml:space="preserve">
<value>导出单个时必须提供输出文件夹</value>
</data>
<data name="categoryFFmpegParameter" xml:space="preserve">
<value>[2] FFmpeg 基本参数</value>
</data>
<data name="displayFileFormat" xml:space="preserve">
<value>文件格式</value>
</data>
<data name="descFileFormat" xml:space="preserve">
<value>-f, 文件格式</value>
</data>
<data name="displayFilenameSuffix" xml:space="preserve">
<value>文件名后缀</value>
</data>
<data name="descFilenameSuffix" xml:space="preserve">
<value>文件名后缀</value>
</data>
<data name="displayOutputFolder" xml:space="preserve">
<value>输出文件夹</value>
</data>
<data name="descOutputFolder" xml:space="preserve">
<value>逐个导出时可以留空,将逐个导出到模型自身所在目录</value>
</data>
<data name="displayExportSingle" xml:space="preserve">
<value>导出单个</value>
</data>
<data name="descExportSingle" xml:space="preserve">
<value>是否将模型在同一个画面上导出单个文件,否则逐个导出模型</value>
</data>
<data name="descResolution" xml:space="preserve">
<value>是否将模型在同一个画面上导出单个文件,否则逐个导出模型</value>
</data>
<data name="displayPreviewViewport" xml:space="preserve">
<value>预览画面视区</value>
</data>
<data name="descPreviewViewport" xml:space="preserve">
<value>预览画面的视区参数,请在预览画面参数面板进行调整</value>
</data>
<data name="descRenderSelected" xml:space="preserve">
<value>是否仅导出选中的模型,请在预览画面参数面板进行调整</value>
</data>
<data name="descBackgroundColor" xml:space="preserve">
<value>要使用的背景色, 格式为 #RRGGBBAA</value>
</data>
<data name="displayMargin" xml:space="preserve">
<value>四周边缘距离</value>
</data>
<data name="descMargin" xml:space="preserve">
<value>画布外部的边缘距离 (Margin), 最终导出的分辨率需要加上这个边距</value>
</data>
<data name="displayPadding" xml:space="preserve">
<value>四周填充距离</value>
</data>
<data name="descPadding" xml:space="preserve">
<value>画布内部的填充距离 (Padding), 导出的分辨率大小不会发生变化, 但是会留有四周空间</value>
</data>
<data name="displayAllowContentOverflow" xml:space="preserve">
<value>允许内容溢出</value>
</data>
<data name="descAllowContentOverflow" xml:space="preserve">
<value>使用预览画面分辨率的情况下, 允许内容溢出到边缘和填充区域</value>
</data>
<data name="displayAutoResolution" xml:space="preserve">
<value>自动分辨率</value>
</data>
<data name="descAutoResolution" xml:space="preserve">
<value>根据导出内容自动设置分辨率, 四周填充距离和内容溢出参数将会被忽略</value>
</data>
<data name="validFormatRequired" xml:space="preserve">
<value>需要提供有效的格式</value>
</data>
<data name="validExtensionRequired" xml:space="preserve">
<value>需要提供有效的文件名后缀</value>
</data>
<data name="descCustomArgument" xml:space="preserve">
<value>使用 \"ffmpeg -h encoder=&lt;编码器&gt;\" 查看编码器支持的参数\n使用 \"ffmpeg -h muxer=&lt;文件格式&gt;\" 查看文件格式支持的参数</value>
</data>
<data name="displayCustomArgument" xml:space="preserve">
<value>自定义参数</value>
</data>
<data name="categorySingleFrame" xml:space="preserve">
<value>[1] 单帧画面</value>
</data>
<data name="displayImageFormat" xml:space="preserve">
<value>图像格式</value>
</data>
<data name="descFileNameExtension" xml:space="preserve">
<value>与图像格式匹配的文件名后缀</value>
</data>
<data name="descDPI" xml:space="preserve">
<value>导出图像的每英寸像素数,用于调整图像的物理尺寸</value>
</data>
<data name="categoryFrameSequenceParameters" xml:space="preserve">
<value>[2] 帧序列参数</value>
</data>
<data name="descFrameFileExtension" xml:space="preserve">
<value>帧文件的后缀,同时决定帧图像格式</value>
</data>
<data name="displayMaxColor" xml:space="preserve">
<value>调色板最大颜色数量</value>
</data>
<data name="descMaxColor" xml:space="preserve">
<value>设置调色板使用的最大颜色数量, 越多则色彩保留程度越高</value>
</data>
<data name="displayAlphaThreshold" xml:space="preserve">
<value>透明度阈值</value>
</data>
<data name="descAlphaThreshold" xml:space="preserve">
<value>小于该值的像素点会被认为是透明像素</value>
</data>
<data name="displayPreset" xml:space="preserve">
<value>预设</value>
</data>
<data name="descPreset" xml:space="preserve">
<value>-profile, 预设配置</value>
</data>
<data name="negativeDuration" xml:space="preserve">
<value>导出单个时导出时长不能为负数</value>
</data>
<data name="frame" xml:space="preserve">
<value>帧</value>
</data>
<data name="categoryVideoParameters" xml:space="preserve">
<value>[1] 视频参数</value>
</data>
<data name="descDuration" xml:space="preserve">
<value>可以从模型列表查看动画时长, 如果小于 0, 则在逐个导出时每个模型使用各自的所有轨道动画时长最大值</value>
</data>
<data name="displayFPS" xml:space="preserve">
<value>帧率</value>
</data>
<data name="descFPS" xml:space="preserve">
<value>每秒画面数</value>
</data>
<data name="displayKeepLastFrame" xml:space="preserve">
<value>保留最后一帧</value>
</data>
<data name="descKeepLastFrame" xml:space="preserve">
<value>当设置保留最后一帧时, 动图会更为连贯, 但是帧数可能比预期帧数多 1</value>
</data>
<data name="displayLoseless" xml:space="preserve">
<value>无损</value>
</data>
<data name="descLoseless" xml:space="preserve">
<value>-lossless, 0 表示有损, 1 表示无损</value>
</data>
<data name="displayQuality" xml:space="preserve">
<value>质量</value>
</data>
<data name="descQuality" xml:space="preserve">
<value>-quality, 取值范围 0-100, 默认值 75</value>
</data>
<data name="failLoadingFragmentShader" xml:space="preserve">
<value>Fragment shader 加载失败预乘Alpha通道属性失效</value>
</data>
<data name="isUpdatingAndManuallyExportFrame" xml:space="preserve">
<value>画面仍在更新,建议手动暂停画面后导出固定的一帧,是否继续?</value>
</data>
</root> </root>

View File

@@ -1,5 +1,6 @@
using FFMpegCore; using FFMpegCore;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -64,13 +65,17 @@ namespace SpineViewer.Spine.SpineExporter
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("av1_nvenc", "av1_amf", "libaom-av1", Customizable = true)] [StringEnumConverter.StandardValues("av1_nvenc", "av1_amf", "libaom-av1", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-c:v, 使\n建议使用硬件加速, libaom-av1 ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
/// <summary> /// <summary>
/// CRF /// CRF
/// </summary> /// </summary>
[Category("[3] "), DisplayName("CRF"), Description("-crf, 0-63, 18-28, 23, ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
[DisplayName("CRF")]
[LocalizedDescription(typeof(Properties.Resources), "descCRF")]
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; } public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
/// <summary> /// <summary>
@@ -78,13 +83,17 @@ namespace SpineViewer.Spine.SpineExporter
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", Customizable = true)] [StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-pix_fmt, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; } public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
/// <summary> /// <summary>
/// 循环次数 /// 循环次数
/// </summary> /// </summary>
[Category("[3] "), DisplayName(""), Description("-loop, , 0 , [0, 65535]")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayLoopCount")]
[LocalizedDescription(typeof(Properties.Resources), "descLoopCount")]
public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; } public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; }
} }
} }

View File

@@ -1,4 +1,5 @@
using System; using SpineViewer.Utils.Localize;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Linq; using System.Linq;
@@ -45,16 +46,20 @@ namespace SpineViewer.Spine.SpineExporter
[Browsable(false)] [Browsable(false)]
public override string Suffix => Exporter.Suffix; public override string Suffix => Exporter.Suffix;
/// <summary> /// <summary>
/// 文件格式 /// 文件格式
/// </summary> /// </summary>
[Category("[2] FFmpeg "), DisplayName(""), Description("-f, ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFFmpegParameter")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayFileFormat")]
[LocalizedDescription(typeof(Properties.Resources), "descFileFormat")]
public string CustomFormat { get => Exporter.CustomFormat; set => Exporter.CustomFormat = value; } public string CustomFormat { get => Exporter.CustomFormat; set => Exporter.CustomFormat = value; }
/// <summary> /// <summary>
/// 文件名后缀 /// 文件名后缀
/// </summary> /// </summary>
[Category("[2] FFmpeg "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryFFmpegParameter")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayFilenameSuffix")]
[LocalizedDescription(typeof(Properties.Resources), "descFilenameSuffix")]
public string CustomSuffix { get => Exporter.CustomSuffix; set => Exporter.CustomSuffix = value; } public string CustomSuffix { get => Exporter.CustomSuffix; set => Exporter.CustomSuffix = value; }
} }
} }

View File

@@ -1,6 +1,7 @@
using NLog; using NLog;
using SpineViewer.Extensions; using SpineViewer.Extensions;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -288,11 +289,11 @@ namespace SpineViewer.Spine.SpineExporter
public virtual string? Validate() public virtual string? Validate()
{ {
if (!string.IsNullOrWhiteSpace(OutputDir) && File.Exists(OutputDir)) if (!string.IsNullOrWhiteSpace(OutputDir) && File.Exists(OutputDir))
return "输出文件夹无效"; return Properties.Resources.invalidInputFolder;
if (!string.IsNullOrWhiteSpace(OutputDir) && !Directory.Exists(OutputDir)) if (!string.IsNullOrWhiteSpace(OutputDir) && !Directory.Exists(OutputDir))
return $"文件夹 {OutputDir} 不存在"; return $"{Properties.Resources.folderNotExistPrefix} {OutputDir} {Properties.Resources.folderNotExistSuffix}";
if (IsExportSingle && string.IsNullOrWhiteSpace(OutputDir)) if (IsExportSingle && string.IsNullOrWhiteSpace(OutputDir))
return "导出单个时必须提供输出文件夹"; return Properties.Resources.mustProvideOutputFolder;
OutputDir = string.IsNullOrWhiteSpace(OutputDir) ? null : Path.GetFullPath(OutputDir); OutputDir = string.IsNullOrWhiteSpace(OutputDir) ? null : Path.GetFullPath(OutputDir);
return null; return null;
@@ -345,66 +346,86 @@ namespace SpineViewer.Spine.SpineExporter
/// 输出文件夹 /// 输出文件夹
/// </summary> /// </summary>
[Editor(typeof(FolderNameEditor), typeof(UITypeEditor))] [Editor(typeof(FolderNameEditor), typeof(UITypeEditor))]
[Category("[0] "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayOutputFolder")]
[LocalizedDescription(typeof(Properties.Resources), "descOutputFolder")]
public string? OutputDir { get => Exporter.OutputDir; set => Exporter.OutputDir = value; } public string? OutputDir { get => Exporter.OutputDir; set => Exporter.OutputDir = value; }
/// <summary> /// <summary>
/// 导出单个 /// 导出单个
/// </summary> /// </summary>
[Category("[0] "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public bool IsExportSingle { get => Exporter.IsExportSingle; set => Exporter.IsExportSingle = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayExportSingle")]
[LocalizedDescription(typeof(Properties.Resources), "descExportSingle")]
public bool IsExportSingle { get => Exporter.IsExportSingle; set => Exporter.IsExportSingle = value; }
/// <summary> /// <summary>
/// 画面分辨率 /// 画面分辨率
/// </summary> /// </summary>
[TypeConverter(typeof(SizeConverter))] [TypeConverter(typeof(SizeConverter))]
[Category("[0] "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public Size Resolution { get => Exporter.Resolution; } [LocalizedDisplayName(typeof(Properties.Resources), "displayResolution")]
[LocalizedDescription(typeof(Properties.Resources), "descResolution")]
public Size Resolution { get => Exporter.Resolution; }
/// <summary> /// <summary>
/// 预览画面视区 /// 预览画面视区
/// </summary> /// </summary>
[Category("[0] "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public SFML.Graphics.View View { get => Exporter.PreviewerView; } [LocalizedDisplayName(typeof(Properties.Resources), "displayPreviewViewport")]
[LocalizedDescription(typeof(Properties.Resources), "descPreviewViewport")]
public SFML.Graphics.View View { get => Exporter.PreviewerView; }
/// <summary> /// <summary>
/// 是否仅渲染选中 /// 是否仅渲染选中
/// </summary> /// </summary>
[Category("[0] "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public bool RenderSelectedOnly { get => Exporter.RenderSelectedOnly; } [LocalizedDisplayName(typeof(Properties.Resources), "displayRenderSelected")]
[LocalizedDescription(typeof(Properties.Resources), "descRenderSelected")]
public bool RenderSelectedOnly { get => Exporter.RenderSelectedOnly; }
/// <summary> /// <summary>
/// 背景颜色 /// 背景颜色
/// </summary> /// </summary>
[Editor(typeof(SFMLColorEditor), typeof(UITypeEditor))] [Editor(typeof(SFMLColorEditor), typeof(UITypeEditor))]
[TypeConverter(typeof(SFMLColorConverter))] [TypeConverter(typeof(SFMLColorConverter))]
[Category("[0] "), DisplayName(""), Description("使, #RRGGBBAA")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public SFML.Graphics.Color BackgroundColor { get => Exporter.BackgroundColor; set => Exporter.BackgroundColor = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayBackgroundColor")]
[LocalizedDescription(typeof(Properties.Resources), "descBackgroundColor")]
public SFML.Graphics.Color BackgroundColor { get => Exporter.BackgroundColor; set => Exporter.BackgroundColor = value; }
/// <summary> /// <summary>
/// 四周边缘距离 /// 四周边缘距离
/// </summary> /// </summary>
[TypeConverter(typeof(PaddingConverter))] [TypeConverter(typeof(PaddingConverter))]
[Category("[0] "), DisplayName(""), Description(" (Margin), ")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public Padding Margin { get => Exporter.Margin; set => Exporter.Margin = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayMargin")]
[LocalizedDescription(typeof(Properties.Resources), "descMargin")]
public Padding Margin { get => Exporter.Margin; set => Exporter.Margin = value; }
/// <summary> /// <summary>
/// 四周填充距离 /// 四周填充距离
/// </summary> /// </summary>
[TypeConverter(typeof(PaddingConverter))] [TypeConverter(typeof(PaddingConverter))]
[Category("[0] "), DisplayName(""), Description(" (Padding), , ")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public Padding Padding { get => Exporter.Padding; set => Exporter.Padding = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayPadding")]
[LocalizedDescription(typeof(Properties.Resources), "descPadding")]
public Padding Padding { get => Exporter.Padding; set => Exporter.Padding = value; }
/// <summary> /// <summary>
/// 允许内容溢出到边缘和填充区域 /// 允许内容溢出到边缘和填充区域
/// </summary> /// </summary>
[Category("[0] "), DisplayName(""), Description("使, ")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public bool AllowContentOverflow { get => Exporter.AllowContentOverflow; set => Exporter.AllowContentOverflow = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayAllowContentOverflow")]
[LocalizedDescription(typeof(Properties.Resources), "descAllowContentOverflow")]
public bool AllowContentOverflow { get => Exporter.AllowContentOverflow; set => Exporter.AllowContentOverflow = value; }
/// <summary> /// <summary>
/// 自动分辨率 /// 自动分辨率
/// </summary> /// </summary>
[Category("[0] "), DisplayName(""), Description(", ")] [LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
public bool AutoResolution { get => Exporter.AutoResolution; set => Exporter.AutoResolution = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayAutoResolution")]
[LocalizedDescription(typeof(Properties.Resources), "descAutoResolution")]
public bool AutoResolution { get => Exporter.AutoResolution; set => Exporter.AutoResolution = value; }
} }
} }

View File

@@ -7,6 +7,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Diagnostics; using System.Diagnostics;
using SpineViewer.Utils.Localize;
namespace SpineViewer.Spine.SpineExporter namespace SpineViewer.Spine.SpineExporter
{ {
@@ -45,9 +46,9 @@ namespace SpineViewer.Spine.SpineExporter
if (base.Validate() is string error) if (base.Validate() is string error)
return error; return error;
if (string.IsNullOrWhiteSpace(Format)) if (string.IsNullOrWhiteSpace(Format))
return "需要提供有效的格式"; return Properties.Resources.validFormatRequired;
if (string.IsNullOrWhiteSpace(Suffix)) if (string.IsNullOrWhiteSpace(Suffix))
return "需要提供有效的文件名后缀"; return Properties.Resources.validExtensionRequired;
return null; return null;
} }
@@ -114,22 +115,28 @@ namespace SpineViewer.Spine.SpineExporter
[Browsable(false)] [Browsable(false)]
public override FFmpegVideoExporter Exporter => (FFmpegVideoExporter)base.Exporter; public override FFmpegVideoExporter Exporter => (FFmpegVideoExporter)base.Exporter;
/// <summary> /// <summary>
/// 文件格式 /// 文件格式
/// </summary> /// </summary>
[Category("[2] FFmpeg "), DisplayName(""), Description("-f, ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFFmpegParameter")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayFileFormat")]
[LocalizedDescription(typeof(Properties.Resources), "descFileFormat")]
public virtual string Format => Exporter.Format; public virtual string Format => Exporter.Format;
/// <summary> /// <summary>
/// 文件名后缀 /// 文件名后缀
/// </summary> /// </summary>
[Category("[2] FFmpeg "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryFFmpegParameter")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayFilenameSuffix")]
[LocalizedDescription(typeof(Properties.Resources), "descFilenameSuffix")]
public virtual string Suffix => Exporter.Suffix; public virtual string Suffix => Exporter.Suffix;
/// <summary> /// <summary>
/// 文件名后缀 /// 文件名后缀
/// </summary> /// </summary>
[Category("[2] FFmpeg "), DisplayName(""), Description("使 \"ffmpeg -h encoder=<编码器>\" 查看编码器支持的参数\n使用 \"ffmpeg -h muxer=<文件格式>\" 查看文件格式支持的参数")] [LocalizedCategory(typeof(Properties.Resources), "categoryFFmpegParameter")]
public string CustomArgument { get => Exporter.CustomArgument; set => Exporter.CustomArgument = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayCustomArgument")]
[LocalizedDescription(typeof(Properties.Resources), "descCustomArgument")]
public string CustomArgument { get => Exporter.CustomArgument; set => Exporter.CustomArgument = value; }
} }
} }

View File

@@ -1,4 +1,5 @@
using SpineViewer.Spine; using SpineViewer.Spine;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -49,7 +50,7 @@ namespace SpineViewer.Spine.SpineExporter
var filename = $"frame_{timestamp}{ImageFormat.GetSuffix()}"; var filename = $"frame_{timestamp}{ImageFormat.GetSuffix()}";
var savePath = Path.Combine(OutputDir, filename); var savePath = Path.Combine(OutputDir, filename);
worker?.ReportProgress(0, $"已处理 0/1"); worker?.ReportProgress(0, $"{Properties.Resources.process} 0/1");
try try
{ {
using var frame = GetFrame(spinesToRender); using var frame = GetFrame(spinesToRender);
@@ -62,7 +63,7 @@ namespace SpineViewer.Spine.SpineExporter
logger.Error(ex.ToString()); logger.Error(ex.ToString());
logger.Error("Failed to save single frame"); logger.Error("Failed to save single frame");
} }
worker?.ReportProgress(100, $"已处理 1/1"); worker?.ReportProgress(100, $"{Properties.Resources.process} 1/1");
} }
protected override void ExportIndividual(SpineObject[] spinesToRender, BackgroundWorker? worker = null) protected override void ExportIndividual(SpineObject[] spinesToRender, BackgroundWorker? worker = null)
@@ -71,7 +72,7 @@ namespace SpineViewer.Spine.SpineExporter
int success = 0; int success = 0;
int error = 0; int error = 0;
worker?.ReportProgress(0, $"已处理 0/{total}"); worker?.ReportProgress(0, $"{Properties.Resources.process} 0/{total}");
for (int i = 0; i < total; i++) for (int i = 0; i < total; i++)
{ {
var spine = spinesToRender[i]; var spine = spinesToRender[i];
@@ -95,7 +96,7 @@ namespace SpineViewer.Spine.SpineExporter
error++; error++;
} }
worker?.ReportProgress((int)((i + 1) * 100.0) / total, $"已处理 {i + 1}/{total}"); worker?.ReportProgress((int)((i + 1) * 100.0) / total, $"{Properties.Resources.process} {i + 1}/{total}");
} }
if (error > 0) if (error > 0)
@@ -114,20 +115,24 @@ namespace SpineViewer.Spine.SpineExporter
/// 单帧画面格式 /// 单帧画面格式
/// </summary> /// </summary>
[TypeConverter(typeof(ImageFormatConverter))] [TypeConverter(typeof(ImageFormatConverter))]
[Category("[1] "), DisplayName("")] [LocalizedCategory(typeof(Properties.Resources), "categorySingleFrame")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayImageFormat")]
public ImageFormat ImageFormat { get => Exporter.ImageFormat; set => Exporter.ImageFormat = value; } public ImageFormat ImageFormat { get => Exporter.ImageFormat; set => Exporter.ImageFormat = value; }
/// <summary> /// <summary>
/// 文件名后缀 /// 文件名后缀
/// </summary> /// </summary>
[Category("[1] "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categorySingleFrame")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayFilenameSuffix")]
[LocalizedDescription(typeof(Properties.Resources), "descFileNameExtension")]
public string Suffix { get => Exporter.ImageFormat.GetSuffix(); } public string Suffix { get => Exporter.ImageFormat.GetSuffix(); }
/// <summary> /// <summary>
/// DPI /// DPI
/// </summary> /// </summary>
[TypeConverter(typeof(SizeFConverter))] [TypeConverter(typeof(SizeFConverter))]
[Category("[1] "), DisplayName("DPI"), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categorySingleFrame")]
[LocalizedDescription(typeof(Properties.Resources), "descDPI")]
public SizeF DPI { get => Exporter.DPI; set => Exporter.DPI = value; } public SizeF DPI { get => Exporter.DPI; set => Exporter.DPI = value; }
} }
} }

View File

@@ -1,5 +1,6 @@
using SpineViewer.Spine; using SpineViewer.Spine;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -93,7 +94,9 @@ namespace SpineViewer.Spine.SpineExporter
/// 文件名后缀 /// 文件名后缀
/// </summary> /// </summary>
[TypeConverter(typeof(StringEnumConverter)), StringEnumConverter.StandardValues(".png", ".jpg", ".tga", ".bmp")] [TypeConverter(typeof(StringEnumConverter)), StringEnumConverter.StandardValues(".png", ".jpg", ".tga", ".bmp")]
[Category("[2] "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryFrameSequenceParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayFilenameSuffix")]
[LocalizedDescription(typeof(Properties.Resources), "descFrameFileExtension")]
public string Suffix { get => Exporter.Suffix; set => Exporter.Suffix = value; } public string Suffix { get => Exporter.Suffix; set => Exporter.Suffix = value; }
} }
} }

View File

@@ -1,4 +1,5 @@
using FFMpegCore; using FFMpegCore;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -58,22 +59,28 @@ namespace SpineViewer.Spine.SpineExporter
[Browsable(false)] [Browsable(false)]
public override GifExporter Exporter => (GifExporter)base.Exporter; public override GifExporter Exporter => (GifExporter)base.Exporter;
/// <summary> /// <summary>
/// 调色板最大颜色数量 /// 调色板最大颜色数量
/// </summary> /// </summary>
[Category("[3] "), DisplayName(""), Description("使, ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayMaxColor")]
[LocalizedDescription(typeof(Properties.Resources), "descMaxColor")]
public uint MaxColors { get => Exporter.MaxColors; set => Exporter.MaxColors = value; } public uint MaxColors { get => Exporter.MaxColors; set => Exporter.MaxColors = value; }
/// <summary> /// <summary>
/// 透明度阈值 /// 透明度阈值
/// </summary> /// </summary>
[Category("[3] "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayAlphaThreshold")]
[LocalizedDescription(typeof(Properties.Resources), "descAlphaThreshold")]
public byte AlphaThreshold { get => Exporter.AlphaThreshold; set => Exporter.AlphaThreshold = value; } public byte AlphaThreshold { get => Exporter.AlphaThreshold; set => Exporter.AlphaThreshold = value; }
/// <summary> /// <summary>
/// 透明度阈值 /// 透明度阈值
/// </summary> /// </summary>
[Category("[3] "), DisplayName(""), Description("-loop, , -1 , 0 , [-1, 65535]")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayLoopCount")]
[LocalizedDescription(typeof(Properties.Resources), "descLoopCount")]
public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; } public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; }
} }
} }

View File

@@ -1,5 +1,6 @@
using FFMpegCore; using FFMpegCore;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -58,21 +59,27 @@ namespace SpineViewer.Spine.SpineExporter
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("libx264", "libx265", "libvpx-vp9", "av1_nvenc", Customizable = true)] [StringEnumConverter.StandardValues("libx264", "libx265", "libvpx-vp9", "av1_nvenc", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-c:v, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
/// <summary> /// <summary>
/// CRF /// CRF
/// </summary> /// </summary>
[Category("[3] "), DisplayName("CRF"), Description("-crf, 0-63, 18-28, 23, ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; } [DisplayName("CRF")]
[LocalizedDescription(typeof(Properties.Resources), "descCRF")]
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
/// <summary> /// <summary>
/// 像素格式 /// 像素格式
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", "yuva420p", Customizable = true)] [StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", "yuva420p", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-pix_fmt, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; } public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
} }
} }

View File

@@ -1,5 +1,6 @@
using FFMpegCore; using FFMpegCore;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -57,15 +58,19 @@ namespace SpineViewer.Spine.SpineExporter
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("prores_ks", Customizable = true)] [StringEnumConverter.StandardValues("prores_ks", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-c:v, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
/// <summary> /// <summary>
/// 预设 /// 预设
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("auto", "proxy", "lt", "standard", "hq", "4444", "4444xq")] [StringEnumConverter.StandardValues("auto", "proxy", "lt", "standard", "hq", "4444", "4444xq")]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-profile, ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayPreset")]
[LocalizedDescription(typeof(Properties.Resources), "descPreset")]
public string Profile { get => Exporter.Profile; set => Exporter.Profile = value; } public string Profile { get => Exporter.Profile; set => Exporter.Profile = value; }
/// <summary> /// <summary>
@@ -73,7 +78,9 @@ namespace SpineViewer.Spine.SpineExporter
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("yuv422p10le", "yuv444p10le", "yuva444p10le", Customizable = true)] [StringEnumConverter.StandardValues("yuv422p10le", "yuv444p10le", "yuva444p10le", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-pix_fmt, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
} }
} }

View File

@@ -1,5 +1,6 @@
using FFMpegCore; using FFMpegCore;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -58,21 +59,27 @@ namespace SpineViewer.Spine.SpineExporter
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("libx264", "libx265", Customizable = true)] [StringEnumConverter.StandardValues("libx264", "libx265", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-c:v, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
/// <summary> /// <summary>
/// CRF /// CRF
/// </summary> /// </summary>
[Category("[3] "), DisplayName("CRF"), Description("-crf, 0-63, 18-28, 23, ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; } [DisplayName("CRF")]
[LocalizedDescription(typeof(Properties.Resources), "descCRF")]
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
/// <summary> /// <summary>
/// 像素格式 /// 像素格式
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", Customizable = true)] [StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-pix_fmt, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
} }
} }

View File

@@ -1,4 +1,5 @@
using SpineViewer.Spine; using SpineViewer.Spine;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -34,7 +35,7 @@ namespace SpineViewer.Spine.SpineExporter
if (base.Validate() is string error) if (base.Validate() is string error)
return error; return error;
if (IsExportSingle && Duration < 0) if (IsExportSingle && Duration < 0)
return "导出单个时导出时长不能为负数"; return Properties.Resources.negativeDuration;
return null; return null;
} }
@@ -55,11 +56,11 @@ namespace SpineViewer.Spine.SpineExporter
int frameCount = 1 + total + final; // 所有帧的数量 = 起始帧 + 完整帧 + 最后一帧 int frameCount = 1 + total + final; // 所有帧的数量 = 起始帧 + 完整帧 + 最后一帧
worker?.ReportProgress(0, $"{spine.Name} 已处理 0/{frameCount} 帧"); worker?.ReportProgress(0, $"{spine.Name} {Properties.Resources.process} 0/{frameCount} {Properties.Resources.frame}");
// 导出首帧 // 导出首帧
var firstFrame = GetFrame(spine); var firstFrame = GetFrame(spine);
worker?.ReportProgress(1 * 100 / frameCount, $"{spine.Name} 已处理 1/{frameCount} 帧"); worker?.ReportProgress(1 * 100 / frameCount, $"{spine.Name} {Properties.Resources.process} 1/{frameCount} {Properties.Resources.frame}");
yield return firstFrame; yield return firstFrame;
// 导出完整帧 // 导出完整帧
@@ -73,7 +74,7 @@ namespace SpineViewer.Spine.SpineExporter
spine.Update(delta); spine.Update(delta);
var frame = GetFrame(spine); var frame = GetFrame(spine);
worker?.ReportProgress((1 + i + 1) * 100 / frameCount, $"{spine.Name} 已处理 {1 + i + 1}/{frameCount} 帧"); worker?.ReportProgress((1 + i + 1) * 100 / frameCount, $"{spine.Name} {Properties.Resources.process} {1 + i + 1}/{frameCount} {Properties.Resources.frame}");
yield return frame; yield return frame;
} }
@@ -82,7 +83,7 @@ namespace SpineViewer.Spine.SpineExporter
{ {
spine.Update(deltaFinal); spine.Update(deltaFinal);
var finalFrame = GetFrame(spine); var finalFrame = GetFrame(spine);
worker?.ReportProgress(100, $"{spine.Name} 已处理 {frameCount}/{frameCount} 帧"); worker?.ReportProgress(100, $"{spine.Name} {Properties.Resources.process} {frameCount}/{frameCount} {Properties.Resources.frame}");
yield return finalFrame; yield return finalFrame;
} }
} }
@@ -103,11 +104,11 @@ namespace SpineViewer.Spine.SpineExporter
int frameCount = 1 + total + final; // 所有帧的数量 = 起始帧 + 完整帧 + 最后一帧 int frameCount = 1 + total + final; // 所有帧的数量 = 起始帧 + 完整帧 + 最后一帧
worker?.ReportProgress(0, $"已处理 0/{frameCount} 帧"); worker?.ReportProgress(0, $"{Properties.Resources.process} 0/{frameCount} {Properties.Resources.frame}");
// 导出首帧 // 导出首帧
var firstFrame = GetFrame(spinesToRender); var firstFrame = GetFrame(spinesToRender);
worker?.ReportProgress(1 * 100 / frameCount, $"已处理 1/{frameCount} 帧"); worker?.ReportProgress(1 * 100 / frameCount, $"{Properties.Resources.process} 1/{frameCount} {Properties.Resources.frame}");
yield return firstFrame; yield return firstFrame;
// 导出完整帧 // 导出完整帧
@@ -121,7 +122,7 @@ namespace SpineViewer.Spine.SpineExporter
foreach (var spine in spinesToRender) spine.Update(delta); foreach (var spine in spinesToRender) spine.Update(delta);
var frame = GetFrame(spinesToRender); var frame = GetFrame(spinesToRender);
worker?.ReportProgress((1 + i + 1) * 100 / frameCount, $"已处理 {1 + i + 1}/{frameCount} 帧"); worker?.ReportProgress((1 + i + 1) * 100 / frameCount, $"{Properties.Resources.process} {1 + i + 1}/{frameCount} {Properties.Resources.frame}");
yield return frame; yield return frame;
} }
@@ -130,7 +131,7 @@ namespace SpineViewer.Spine.SpineExporter
{ {
foreach (var spine in spinesToRender) spine.Update(delta); foreach (var spine in spinesToRender) spine.Update(delta);
var finalFrame = GetFrame(spinesToRender); var finalFrame = GetFrame(spinesToRender);
worker?.ReportProgress(100, $"已处理 {frameCount}/{frameCount} 帧"); worker?.ReportProgress(100, $"{Properties.Resources.process} {frameCount}/{frameCount} {Properties.Resources.frame}");
yield return finalFrame; yield return finalFrame;
} }
} }
@@ -148,22 +149,28 @@ namespace SpineViewer.Spine.SpineExporter
[Browsable(false)] [Browsable(false)]
public override VideoExporter Exporter => (VideoExporter)base.Exporter; public override VideoExporter Exporter => (VideoExporter)base.Exporter;
/// <summary> /// <summary>
/// 导出时长 /// 导出时长
/// </summary> /// </summary>
[Category("[1] "), DisplayName(""), Description(", 0, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryVideoParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "duration")]
[LocalizedDescription(typeof(Properties.Resources), "descDuration")]
public float Duration { get => Exporter.Duration; set => Exporter.Duration = value; } public float Duration { get => Exporter.Duration; set => Exporter.Duration = value; }
/// <summary> /// <summary>
/// 帧率 /// 帧率
/// </summary> /// </summary>
[Category("[1] "), DisplayName(""), Description("")] [LocalizedCategory(typeof(Properties.Resources), "categoryVideoParameters")]
public float FPS { get => Exporter.FPS; set => Exporter.FPS = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayFPS")]
[LocalizedDescription(typeof(Properties.Resources), "descFPS")]
public float FPS { get => Exporter.FPS; set => Exporter.FPS = value; }
/// <summary> /// <summary>
/// 保留最后一帧 /// 保留最后一帧
/// </summary> /// </summary>
[Category("[1] "), DisplayName(""), Description(", , 1")] [LocalizedCategory(typeof(Properties.Resources), "categoryVideoParameters")]
public bool KeepLast { get => Exporter.KeepLast; set => Exporter.KeepLast = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayKeepLastFrame")]
[LocalizedDescription(typeof(Properties.Resources), "descKeepLastFrame")]
public bool KeepLast { get => Exporter.KeepLast; set => Exporter.KeepLast = value; }
} }
} }

View File

@@ -1,5 +1,6 @@
using FFMpegCore; using FFMpegCore;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -59,21 +60,27 @@ namespace SpineViewer.Spine.SpineExporter
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("libvpx-vp9", Customizable = true)] [StringEnumConverter.StandardValues("libvpx-vp9", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-c:v, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
/// <summary> /// <summary>
/// CRF /// CRF
/// </summary> /// </summary>
[Category("[3] "), DisplayName("CRF"), Description("-crf, 0-63, 18-28, 23, ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; } [DisplayName("CRF")]
[LocalizedDescription(typeof(Properties.Resources), "descCRF")]
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
/// <summary> /// <summary>
/// 像素格式 /// 像素格式
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", "yuva420p", Customizable = true)] [StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", "yuva420p", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-pix_fmt, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
[LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; } public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
} }
} }

View File

@@ -1,5 +1,6 @@
using FFMpegCore; using FFMpegCore;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -69,33 +70,43 @@ namespace SpineViewer.Spine.SpineExporter
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("libwebp_anim", "libwebp", Customizable = true)] [StringEnumConverter.StandardValues("libwebp_anim", "libwebp", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-c:v, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
/// <summary> /// <summary>
/// 是否无损 /// 是否无损
/// </summary> /// </summary>
[Category("[3] "), DisplayName(""), Description("-lossless, 0 , 1 ")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public bool Lossless { get => Exporter.Lossless; set => Exporter.Lossless = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayLoseless")]
[LocalizedDescription(typeof(Properties.Resources), "descLoseless")]
public bool Lossless { get => Exporter.Lossless; set => Exporter.Lossless = value; }
/// <summary> /// <summary>
/// CRF /// CRF
/// </summary> /// </summary>
[Category("[3] "), DisplayName(""), Description("-quality, 0-100, 75")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public int Quality { get => Exporter.Quality; set => Exporter.Quality = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayQuality")]
[LocalizedDescription(typeof(Properties.Resources), "descQuality")]
public int Quality { get => Exporter.Quality; set => Exporter.Quality = value; }
/// <summary> /// <summary>
/// 像素格式 /// 像素格式
/// </summary> /// </summary>
[StringEnumConverter.StandardValues("yuv420p", "yuva420p", Customizable = true)] [StringEnumConverter.StandardValues("yuv420p", "yuva420p", Customizable = true)]
[TypeConverter(typeof(StringEnumConverter))] [TypeConverter(typeof(StringEnumConverter))]
[Category("[3] "), DisplayName(""), Description("-pix_fmt, 使")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
/// <summary> /// <summary>
/// 透明度阈值 /// 透明度阈值
/// </summary> /// </summary>
[Category("[3] "), DisplayName(""), Description("-loop, , 0 , [0, 65535]")] [LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; } [LocalizedDisplayName(typeof(Properties.Resources), "displayLoopCount")]
[LocalizedDescription(typeof(Properties.Resources), "descLoopCount")]
public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; }
} }
} }

View File

@@ -1,5 +1,6 @@
using SpineViewer.Spine; using SpineViewer.Spine;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -20,7 +21,7 @@ namespace SpineViewer.Spine.SpineView
/// <summary> /// <summary>
/// 全轨道动画最大时长 /// 全轨道动画最大时长
/// </summary> /// </summary>
[DisplayName("全轨道最大时长")] [LocalizedDisplayName(typeof(Properties.Resources), "maximumTrackLength")]
public float AnimationTracksMaxDuration => Spine.GetTrackIndices().Select(i => Spine.GetAnimationDuration(Spine.GetAnimation(i))).Max(); public float AnimationTracksMaxDuration => Spine.GetTrackIndices().Select(i => Spine.GetAnimationDuration(Spine.GetAnimation(i))).Max();
/// <summary> /// <summary>
@@ -144,8 +145,8 @@ namespace SpineViewer.Spine.SpineView
[Browsable(false)] [Browsable(false)]
public int Index { get; } = i; public int Index { get; } = i;
[DisplayName("时长")] [LocalizedDisplayName(typeof(Properties.Resources), "duration")]
public float Duration => spine.GetAnimationDuration(spine.GetAnimation(Index)); public float Duration => spine.GetAnimationDuration(spine.GetAnimation(Index));
/// <summary> /// <summary>
/// 实现了默认的转为字符串的方式 /// 实现了默认的转为字符串的方式

View File

@@ -1,5 +1,6 @@
using SpineViewer.Spine; using SpineViewer.Spine;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -21,37 +22,37 @@ namespace SpineViewer.Spine.SpineView
/// 获取所属版本 /// 获取所属版本
/// </summary> /// </summary>
[TypeConverter(typeof(SpineVersionConverter))] [TypeConverter(typeof(SpineVersionConverter))]
[DisplayName("运行时版本")] [LocalizedDisplayName(typeof(Properties.Resources), "runtimeVersion")]
public SpineVersion Version => Spine.Version; public SpineVersion Version => Spine.Version;
/// <summary> /// <summary>
/// 资源所在完整目录 /// 资源所在完整目录
/// </summary> /// </summary>
[DisplayName("资源目录")] [LocalizedDisplayName(typeof(Properties.Resources), "resourcesPath")]
public string AssetsDir => Spine.AssetsDir; public string AssetsDir => Spine.AssetsDir;
/// <summary> /// <summary>
/// skel 文件完整路径 /// skel 文件完整路径
/// </summary> /// </summary>
[DisplayName("skel文件路径")] [LocalizedDisplayName(typeof(Properties.Resources), "skelPath")]
public string SkelPath => Spine.SkelPath; public string SkelPath => Spine.SkelPath;
/// <summary> /// <summary>
/// atlas 文件完整路径 /// atlas 文件完整路径
/// </summary> /// </summary>
[DisplayName("atlas文件路径")] [LocalizedDisplayName(typeof(Properties.Resources), "atlasPath")]
public string AtlasPath => Spine.AtlasPath; public string AtlasPath => Spine.AtlasPath;
/// <summary> /// <summary>
/// 名称 /// 名称
/// </summary> /// </summary>
[DisplayName("名称")] [LocalizedDisplayName(typeof(Properties.Resources), "name")]
public string Name => Spine.Name; public string Name => Spine.Name;
/// <summary> /// <summary>
/// 获取所属文件版本 /// 获取所属文件版本
/// </summary> /// </summary>
[DisplayName("文件版本")] [LocalizedDisplayName(typeof(Properties.Resources), "fileVersion")]
public string FileVersion => Spine.FileVersion; public string FileVersion => Spine.FileVersion;
} }
} }

View File

@@ -6,6 +6,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using SpineViewer.Spine; using SpineViewer.Spine;
using SpineViewer.Utils.Localize;
namespace SpineViewer.Spine.SpineView namespace SpineViewer.Spine.SpineView
{ {
@@ -14,28 +15,28 @@ namespace SpineViewer.Spine.SpineView
[Browsable(false)] [Browsable(false)]
public SpineObject Spine { get; } = spine; public SpineObject Spine { get; } = spine;
[DisplayName("基本信息")] [LocalizedDisplayName(typeof(Properties.Resources), "basicInfo")]
public SpineBaseInfoProperty BaseInfo { get; } = new(spine); public SpineBaseInfoProperty BaseInfo { get; } = new(spine);
[DisplayName("渲染")] [LocalizedDisplayName(typeof(Properties.Resources), "render")]
public SpineRenderProperty Render { get; } = new(spine); public SpineRenderProperty Render { get; } = new(spine);
[DisplayName("变换")] [LocalizedDisplayName(typeof(Properties.Resources), "transform")]
public SpineTransformProperty Transform { get; } = new(spine); public SpineTransformProperty Transform { get; } = new(spine);
[TypeConverter(typeof(ExpandableObjectConverter))] [TypeConverter(typeof(ExpandableObjectConverter))]
[DisplayName("皮肤")] [LocalizedDisplayName(typeof(Properties.Resources), "skin")]
public SpineSkinProperty Skin { get; } = new(spine); public SpineSkinProperty Skin { get; } = new(spine);
[TypeConverter(typeof(ExpandableObjectConverter))] [TypeConverter(typeof(ExpandableObjectConverter))]
[DisplayName("插槽")] [LocalizedDisplayName(typeof(Properties.Resources), "slot")]
public SpineSlotProperty Slot { get; } = new(spine); public SpineSlotProperty Slot { get; } = new(spine);
[TypeConverter(typeof(ExpandableObjectConverter))] [TypeConverter(typeof(ExpandableObjectConverter))]
[DisplayName("动画")] [LocalizedDisplayName(typeof(Properties.Resources), "animation")]
public SpineAnimationProperty Animation { get; } = new(spine); public SpineAnimationProperty Animation { get; } = new(spine);
[DisplayName("调试")] [LocalizedDisplayName(typeof(Properties.Resources), "debug")]
public SpineDebugProperty Debug { get; } = new(spine); public SpineDebugProperty Debug { get; } = new(spine);
} }
} }

View File

@@ -5,6 +5,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using SpineViewer.Spine; using SpineViewer.Spine;
using SpineViewer.Utils.Localize;
namespace SpineViewer.Spine.SpineView namespace SpineViewer.Spine.SpineView
{ {
@@ -16,16 +17,16 @@ namespace SpineViewer.Spine.SpineView
[Browsable(false)] [Browsable(false)]
public SpineObject Spine { get; } = spine; public SpineObject Spine { get; } = spine;
/// <summary> /// <summary>
/// 是否被隐藏, 被隐藏的模型将仅仅在列表显示, 不参与其他行为 /// 是否被隐藏, 被隐藏的模型将仅仅在列表显示, 不参与其他行为
/// </summary> /// </summary>
[DisplayName("是否隐藏")] [LocalizedDisplayName(typeof(Properties.Resources), "isHidden")]
public bool IsHidden { get => Spine.IsHidden; set => Spine.IsHidden = value; } public bool IsHidden { get => Spine.IsHidden; set => Spine.IsHidden = value; }
/// <summary> /// <summary>
/// 是否使用预乘Alpha /// 是否使用预乘Alpha
/// </summary> /// </summary>
[DisplayName("预乘Alpha通道")] [LocalizedDisplayName(typeof(Properties.Resources), "usePremultipliedAlpha")]
public bool UsePremultipliedAlpha { get => Spine.UsePma; set => Spine.UsePma = value; } public bool UsePremultipliedAlpha { get => Spine.UsePma; set => Spine.UsePma = value; }
} }
} }

View File

@@ -6,6 +6,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using SpineViewer.Spine; using SpineViewer.Spine;
using SpineViewer.Utils; using SpineViewer.Utils;
using SpineViewer.Utils.Localize;
namespace SpineViewer.Spine.SpineView namespace SpineViewer.Spine.SpineView
{ {
@@ -17,29 +18,29 @@ namespace SpineViewer.Spine.SpineView
[Browsable(false)] [Browsable(false)]
public SpineObject Spine { get; } = spine; public SpineObject Spine { get; } = spine;
/// <summary> /// <summary>
/// 缩放比例 /// 缩放比例
/// </summary> /// </summary>
[DisplayName("缩放比例")] [LocalizedDisplayName(typeof(Properties.Resources), "scale")]
public float Scale { get => Spine.Scale; set => Spine.Scale = value; } public float Scale { get => Spine.Scale; set => Spine.Scale = value; }
/// <summary> /// <summary>
/// 位置 /// 位置
/// </summary> /// </summary>
[TypeConverter(typeof(PointFConverter))] [TypeConverter(typeof(PointFConverter))]
[DisplayName("位置")] [LocalizedDisplayName(typeof(Properties.Resources), "position")]
public PointF Position { get => Spine.Position; set => Spine.Position = value; } public PointF Position { get => Spine.Position; set => Spine.Position = value; }
/// <summary> /// <summary>
/// 水平翻转 /// 水平翻转
/// </summary> /// </summary>
[DisplayName("水平翻转")] [LocalizedDisplayName(typeof(Properties.Resources), "flipX")]
public bool FlipX { get => Spine.FlipX; set => Spine.FlipX = value; } public bool FlipX { get => Spine.FlipX; set => Spine.FlipX = value; }
/// <summary> /// <summary>
/// 垂直翻转 /// 垂直翻转
/// </summary> /// </summary>
[DisplayName("垂直翻转")] [LocalizedDisplayName(typeof(Properties.Resources), "flipY")]
public bool FlipY { get => Spine.FlipY; set => Spine.FlipY = value; } public bool FlipY { get => Spine.FlipY; set => Spine.FlipY = value; }
} }
} }

View File

@@ -49,6 +49,9 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Update="Controls\SpinePreviewPanel.resx">
<Generator></Generator>
</EmbeddedResource>
<EmbeddedResource Update="Properties\Resources.resx"> <EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>

View File

@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Resources;
using System.Text;
using System.Threading.Tasks;
namespace SpineViewer.Utils.Localize
{
public class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
private readonly ResourceManager _resourceManager;
private readonly string _resourceKey;
public LocalizedDisplayNameAttribute(Type resourceSource, string resourceKey)
{
_resourceManager = new ResourceManager(resourceSource);
_resourceKey = resourceKey;
}
public override string DisplayName => _resourceManager.GetString(_resourceKey) ?? $"[{_resourceKey}]";
}
public class LocalizedCategoryAttribute : CategoryAttribute
{
private readonly ResourceManager _resourceManager;
private readonly string _resourceKey;
public LocalizedCategoryAttribute(Type resourceSource, string resourceKey)
{
_resourceManager = new ResourceManager(resourceSource);
_resourceKey = resourceKey;
}
protected override string GetLocalizedString(string value)
{
return _resourceManager.GetString(_resourceKey) ?? $"[{_resourceKey}]";
}
}
public class LocalizedDescriptionAttribute : DescriptionAttribute
{
private readonly ResourceManager _resourceManager;
private readonly string _resourceKey;
public LocalizedDescriptionAttribute(Type resourceSource, string resourceKey)
{
_resourceManager = new ResourceManager(resourceSource);
_resourceKey = resourceKey;
}
public override string Description => _resourceManager.GetString(_resourceKey) ?? $"[{_resourceKey}]";
}
}

View File

@@ -0,0 +1,52 @@
using NLog;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace SpineViewer.Utils.Localize
{
public static class LocalizeConfiguration
{
public static void UpdateLocalizeSetting(string newCulture)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (config.AppSettings.Settings["localize"] != null)
config.AppSettings.Settings["localize"].Value = newCulture;
else
config.AppSettings.Settings.Add("localize", newCulture);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
public static void SetCulture()
{
string cultureName = ConfigurationManager.AppSettings["localize"];
if (string.IsNullOrWhiteSpace(cultureName))
{
cultureName = "zh-CN";
}
try
{
var culture = new CultureInfo(cultureName);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
}
catch (CultureNotFoundException)
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");
}
}
}
}

View File

@@ -188,7 +188,7 @@ namespace SpineViewer.Utils
if (s.Length == 4) // #RGB if (s.Length == 4) // #RGB
return ParseShortHexColor(s, includeAlpha: false); return ParseShortHexColor(s, includeAlpha: false);
throw new FormatException("无法解析颜色,请使用 #RRGGBBAA、#RRGGBB、#RGBA 或 #RGB 格式"); throw new FormatException(Properties.Resources.formatExceptionParseColor);
} }
// 处理 R,G,B,A 和 R,G,B 格式 // 处理 R,G,B,A 和 R,G,B 格式
@@ -207,11 +207,11 @@ namespace SpineViewer.Utils
if (color.IsKnownColor || color.IsNamedColor) if (color.IsKnownColor || color.IsNamedColor)
return new SFML.Graphics.Color(color.R, color.G, color.B, color.A); return new SFML.Graphics.Color(color.R, color.G, color.B, color.A);
throw new FormatException("无法解析颜色,请使用已知的颜色名称"); throw new FormatException(Properties.Resources.formatExceptionUnknownColor);
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new FormatException("无法解析颜色,请检查格式", ex); throw new FormatException(Properties.Resources.formatExceptionParseColorError, ex);
} }
} }