Merge branch 'master' of github.com:alcexhim/UniversalEditor
This commit is contained in:
commit
c983aa5537
@ -0,0 +1,356 @@
|
||||
namespace UniversalEditor.Editors
|
||||
{
|
||||
partial class ShortcutEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.cboTargetType = new System.Windows.Forms.ComboBox();
|
||||
this.txtTarget = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.cmdBrowseTarget = new System.Windows.Forms.Button();
|
||||
this.txtStartIn = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.txtShortcutKey = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.cboWindowSize = new System.Windows.Forms.ComboBox();
|
||||
this.txtComment = new System.Windows.Forms.TextBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.fraShortcutInformation = new System.Windows.Forms.GroupBox();
|
||||
this.fraAdvancedOptions = new System.Windows.Forms.GroupBox();
|
||||
this.chkRunInSeparateMemorySpace = new System.Windows.Forms.CheckBox();
|
||||
this.chkRunWithDifferentCredentials = new System.Windows.Forms.CheckBox();
|
||||
this.fraIcon = new System.Windows.Forms.GroupBox();
|
||||
this.lvIcons = new System.Windows.Forms.ListView();
|
||||
this.txtIconFileName = new System.Windows.Forms.TextBox();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.fraShortcutInformation.SuspendLayout();
|
||||
this.fraAdvancedOptions.SuspendLayout();
|
||||
this.fraIcon.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.label1.Location = new System.Drawing.Point(18, 25);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(64, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Target type:";
|
||||
//
|
||||
// cboTargetType
|
||||
//
|
||||
this.cboTargetType.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cboTargetType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cboTargetType.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.cboTargetType.FormattingEnabled = true;
|
||||
this.cboTargetType.Items.AddRange(new object[] {
|
||||
"Local file/directory",
|
||||
"Shell namespace extension"});
|
||||
this.cboTargetType.Location = new System.Drawing.Point(94, 22);
|
||||
this.cboTargetType.Name = "cboTargetType";
|
||||
this.cboTargetType.Size = new System.Drawing.Size(383, 21);
|
||||
this.cboTargetType.TabIndex = 1;
|
||||
this.cboTargetType.SelectedIndexChanged += new System.EventHandler(this.cboTargetType_SelectedIndexChanged);
|
||||
//
|
||||
// txtTarget
|
||||
//
|
||||
this.txtTarget.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtTarget.Location = new System.Drawing.Point(94, 49);
|
||||
this.txtTarget.Name = "txtTarget";
|
||||
this.txtTarget.Size = new System.Drawing.Size(383, 20);
|
||||
this.txtTarget.TabIndex = 2;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.label2.Location = new System.Drawing.Point(18, 52);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(41, 13);
|
||||
this.label2.TabIndex = 3;
|
||||
this.label2.Text = "Target:";
|
||||
//
|
||||
// cmdBrowseTarget
|
||||
//
|
||||
this.cmdBrowseTarget.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmdBrowseTarget.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.cmdBrowseTarget.Location = new System.Drawing.Point(402, 75);
|
||||
this.cmdBrowseTarget.Name = "cmdBrowseTarget";
|
||||
this.cmdBrowseTarget.Size = new System.Drawing.Size(75, 23);
|
||||
this.cmdBrowseTarget.TabIndex = 4;
|
||||
this.cmdBrowseTarget.Text = "&Browse...";
|
||||
this.cmdBrowseTarget.UseVisualStyleBackColor = true;
|
||||
this.cmdBrowseTarget.Click += new System.EventHandler(this.cmdBrowseTarget_Click);
|
||||
//
|
||||
// txtStartIn
|
||||
//
|
||||
this.txtStartIn.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtStartIn.Location = new System.Drawing.Point(94, 104);
|
||||
this.txtStartIn.Name = "txtStartIn";
|
||||
this.txtStartIn.Size = new System.Drawing.Size(383, 20);
|
||||
this.txtStartIn.TabIndex = 2;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.label3.Location = new System.Drawing.Point(18, 107);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(43, 13);
|
||||
this.label3.TabIndex = 3;
|
||||
this.label3.Text = "Start in:";
|
||||
//
|
||||
// txtShortcutKey
|
||||
//
|
||||
this.txtShortcutKey.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtShortcutKey.Location = new System.Drawing.Point(94, 130);
|
||||
this.txtShortcutKey.Name = "txtShortcutKey";
|
||||
this.txtShortcutKey.Size = new System.Drawing.Size(383, 20);
|
||||
this.txtShortcutKey.TabIndex = 2;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.label4.Location = new System.Drawing.Point(18, 133);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(70, 13);
|
||||
this.label4.TabIndex = 3;
|
||||
this.label4.Text = "Shortcut key:";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.label5.Location = new System.Drawing.Point(18, 159);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(70, 13);
|
||||
this.label5.TabIndex = 0;
|
||||
this.label5.Text = "Window size:";
|
||||
//
|
||||
// cboWindowSize
|
||||
//
|
||||
this.cboWindowSize.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cboWindowSize.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.cboWindowSize.FormattingEnabled = true;
|
||||
this.cboWindowSize.Location = new System.Drawing.Point(94, 156);
|
||||
this.cboWindowSize.Name = "cboWindowSize";
|
||||
this.cboWindowSize.Size = new System.Drawing.Size(383, 21);
|
||||
this.cboWindowSize.TabIndex = 1;
|
||||
//
|
||||
// txtComment
|
||||
//
|
||||
this.txtComment.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtComment.Location = new System.Drawing.Point(94, 183);
|
||||
this.txtComment.Name = "txtComment";
|
||||
this.txtComment.Size = new System.Drawing.Size(383, 20);
|
||||
this.txtComment.TabIndex = 2;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.label6.Location = new System.Drawing.Point(18, 186);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(54, 13);
|
||||
this.label6.TabIndex = 3;
|
||||
this.label6.Text = "Comment:";
|
||||
//
|
||||
// fraShortcutInformation
|
||||
//
|
||||
this.fraShortcutInformation.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.fraShortcutInformation.Controls.Add(this.label1);
|
||||
this.fraShortcutInformation.Controls.Add(this.cmdBrowseTarget);
|
||||
this.fraShortcutInformation.Controls.Add(this.cboTargetType);
|
||||
this.fraShortcutInformation.Controls.Add(this.label4);
|
||||
this.fraShortcutInformation.Controls.Add(this.label5);
|
||||
this.fraShortcutInformation.Controls.Add(this.label3);
|
||||
this.fraShortcutInformation.Controls.Add(this.cboWindowSize);
|
||||
this.fraShortcutInformation.Controls.Add(this.label6);
|
||||
this.fraShortcutInformation.Controls.Add(this.txtTarget);
|
||||
this.fraShortcutInformation.Controls.Add(this.label2);
|
||||
this.fraShortcutInformation.Controls.Add(this.txtComment);
|
||||
this.fraShortcutInformation.Controls.Add(this.txtShortcutKey);
|
||||
this.fraShortcutInformation.Controls.Add(this.txtStartIn);
|
||||
this.fraShortcutInformation.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.fraShortcutInformation.Location = new System.Drawing.Point(3, 3);
|
||||
this.fraShortcutInformation.Name = "fraShortcutInformation";
|
||||
this.fraShortcutInformation.Size = new System.Drawing.Size(483, 224);
|
||||
this.fraShortcutInformation.TabIndex = 5;
|
||||
this.fraShortcutInformation.TabStop = false;
|
||||
this.fraShortcutInformation.Text = "Shortcut information";
|
||||
//
|
||||
// fraAdvancedOptions
|
||||
//
|
||||
this.fraAdvancedOptions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.fraAdvancedOptions.Controls.Add(this.chkRunInSeparateMemorySpace);
|
||||
this.fraAdvancedOptions.Controls.Add(this.chkRunWithDifferentCredentials);
|
||||
this.fraAdvancedOptions.Location = new System.Drawing.Point(3, 233);
|
||||
this.fraAdvancedOptions.Name = "fraAdvancedOptions";
|
||||
this.fraAdvancedOptions.Size = new System.Drawing.Size(483, 43);
|
||||
this.fraAdvancedOptions.TabIndex = 6;
|
||||
this.fraAdvancedOptions.TabStop = false;
|
||||
this.fraAdvancedOptions.Text = "Advanced options";
|
||||
//
|
||||
// chkRunInSeparateMemorySpace
|
||||
//
|
||||
this.chkRunInSeparateMemorySpace.AutoSize = true;
|
||||
this.chkRunInSeparateMemorySpace.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.chkRunInSeparateMemorySpace.Location = new System.Drawing.Point(196, 19);
|
||||
this.chkRunInSeparateMemorySpace.Name = "chkRunInSeparateMemorySpace";
|
||||
this.chkRunInSeparateMemorySpace.Size = new System.Drawing.Size(178, 18);
|
||||
this.chkRunInSeparateMemorySpace.TabIndex = 0;
|
||||
this.chkRunInSeparateMemorySpace.Text = "Run in separate memory space";
|
||||
this.chkRunInSeparateMemorySpace.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkRunWithDifferentCredentials
|
||||
//
|
||||
this.chkRunWithDifferentCredentials.AutoSize = true;
|
||||
this.chkRunWithDifferentCredentials.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.chkRunWithDifferentCredentials.Location = new System.Drawing.Point(21, 19);
|
||||
this.chkRunWithDifferentCredentials.Name = "chkRunWithDifferentCredentials";
|
||||
this.chkRunWithDifferentCredentials.Size = new System.Drawing.Size(169, 18);
|
||||
this.chkRunWithDifferentCredentials.TabIndex = 0;
|
||||
this.chkRunWithDifferentCredentials.Text = "Run with different credentials";
|
||||
this.chkRunWithDifferentCredentials.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// fraIcon
|
||||
//
|
||||
this.fraIcon.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.fraIcon.Controls.Add(this.lvIcons);
|
||||
this.fraIcon.Controls.Add(this.txtIconFileName);
|
||||
this.fraIcon.Controls.Add(this.button1);
|
||||
this.fraIcon.Controls.Add(this.label7);
|
||||
this.fraIcon.Location = new System.Drawing.Point(3, 282);
|
||||
this.fraIcon.Name = "fraIcon";
|
||||
this.fraIcon.Size = new System.Drawing.Size(483, 114);
|
||||
this.fraIcon.TabIndex = 7;
|
||||
this.fraIcon.TabStop = false;
|
||||
this.fraIcon.Text = "Icon";
|
||||
//
|
||||
// lvIcons
|
||||
//
|
||||
this.lvIcons.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lvIcons.Location = new System.Drawing.Point(94, 47);
|
||||
this.lvIcons.Name = "lvIcons";
|
||||
this.lvIcons.Size = new System.Drawing.Size(383, 61);
|
||||
this.lvIcons.TabIndex = 5;
|
||||
this.lvIcons.UseCompatibleStateImageBehavior = false;
|
||||
//
|
||||
// txtIconFileName
|
||||
//
|
||||
this.txtIconFileName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtIconFileName.Location = new System.Drawing.Point(94, 21);
|
||||
this.txtIconFileName.Name = "txtIconFileName";
|
||||
this.txtIconFileName.ReadOnly = true;
|
||||
this.txtIconFileName.Size = new System.Drawing.Size(302, 20);
|
||||
this.txtIconFileName.TabIndex = 0;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button1.Location = new System.Drawing.Point(402, 19);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 4;
|
||||
this.button1.Text = "&Browse...";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.label7.Location = new System.Drawing.Point(18, 24);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(55, 13);
|
||||
this.label7.TabIndex = 3;
|
||||
this.label7.Text = "File name:";
|
||||
//
|
||||
// WindowsShortcutEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.fraIcon);
|
||||
this.Controls.Add(this.fraAdvancedOptions);
|
||||
this.Controls.Add(this.fraShortcutInformation);
|
||||
this.Name = "WindowsShortcutEditor";
|
||||
this.Size = new System.Drawing.Size(489, 399);
|
||||
this.fraShortcutInformation.ResumeLayout(false);
|
||||
this.fraShortcutInformation.PerformLayout();
|
||||
this.fraAdvancedOptions.ResumeLayout(false);
|
||||
this.fraAdvancedOptions.PerformLayout();
|
||||
this.fraIcon.ResumeLayout(false);
|
||||
this.fraIcon.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox cboTargetType;
|
||||
private System.Windows.Forms.TextBox txtTarget;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button cmdBrowseTarget;
|
||||
private System.Windows.Forms.TextBox txtStartIn;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox txtShortcutKey;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.ComboBox cboWindowSize;
|
||||
private System.Windows.Forms.TextBox txtComment;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.GroupBox fraShortcutInformation;
|
||||
private System.Windows.Forms.GroupBox fraAdvancedOptions;
|
||||
private System.Windows.Forms.CheckBox chkRunWithDifferentCredentials;
|
||||
private System.Windows.Forms.CheckBox chkRunInSeparateMemorySpace;
|
||||
private System.Windows.Forms.GroupBox fraIcon;
|
||||
private System.Windows.Forms.ListView lvIcons;
|
||||
private System.Windows.Forms.TextBox txtIconFileName;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Label label7;
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using UniversalEditor.UserInterface.WindowsForms;
|
||||
|
||||
namespace UniversalEditor.Editors
|
||||
{
|
||||
public partial class ShortcutEditor : Editor
|
||||
{
|
||||
public ShortcutEditor()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
base.SupportedObjectModels.Add(typeof(ShortcutObjectModel));
|
||||
cboTargetType.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private void cboTargetType_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
txtTarget.ReadOnly = (cboTargetType.SelectedIndex == 1);
|
||||
}
|
||||
|
||||
protected override void OnObjectModelChanged(EventArgs e)
|
||||
{
|
||||
base.OnObjectModelChanged(e);
|
||||
|
||||
ShortcutObjectModel doc = (base.ObjectModel as ShortcutObjectModel);
|
||||
if (doc == null) return;
|
||||
|
||||
if (doc.Type == ShortcutType.Normal)
|
||||
{
|
||||
cboTargetType.SelectedIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
cboTargetType.SelectedIndex = 1;
|
||||
switch (doc.Type)
|
||||
{
|
||||
case ShortcutType.Computer:
|
||||
txtTarget.Text = "My Computer";
|
||||
break;
|
||||
case ShortcutType.Documents:
|
||||
txtTarget.Text = "My Documents";
|
||||
break;
|
||||
case ShortcutType.Network:
|
||||
txtTarget.Text = "My Network Places";
|
||||
break;
|
||||
case ShortcutType.Trash:
|
||||
txtTarget.Text = "Recycle Bin";
|
||||
break;
|
||||
case ShortcutType.Unknown:
|
||||
txtTarget.Text = Common.Methods.ArrayToString<byte>(doc.ShellTarget);
|
||||
break;
|
||||
case ShortcutType.Normal:
|
||||
txtTarget.Text = doc.Target;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (doc.IconFileName != "")
|
||||
{
|
||||
txtIconFileName.Text = doc.IconFileName;
|
||||
|
||||
// Read the icons from the file, through Resource Viewer
|
||||
}
|
||||
}
|
||||
|
||||
private void cmdBrowseTarget_Click(object sender, EventArgs e)
|
||||
{
|
||||
switch (cboTargetType.SelectedIndex)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@ -105,6 +105,12 @@
|
||||
<Compile Include="Editors\PlainTextEditor.Designer.cs">
|
||||
<DependentUpon>PlainTextEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Editors\ShortcutEditor.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Editors\ShortcutEditor.Designer.cs">
|
||||
<DependentUpon>ShortcutEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="IconMethods.cs" />
|
||||
<Compile Include="OptionPanel.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
@ -181,6 +187,9 @@
|
||||
<EmbeddedResource Include="Editors\PlainTextEditor.resx">
|
||||
<DependentUpon>PlainTextEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Editors\ShortcutEditor.resx">
|
||||
<DependentUpon>ShortcutEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
|
||||
@ -23,96 +23,96 @@ namespace UniversalEditor.Editors.Multimedia.Audio.Synthesized
|
||||
InitializeComponent();
|
||||
base.SupportedObjectModels.Add(typeof(SynthesizedAudioObjectModel));
|
||||
|
||||
#region Menu Bar
|
||||
#region View
|
||||
ActionMenuItem mnuView = base.MenuBar.Items.Add("mnuView", "&View");
|
||||
mnuView.Items.Add("mnuViewTrackOverlay", "Track &Overlay", mnuViewTrackOverlay_Click, 3);
|
||||
mnuView.Items.AddSeparator(4);
|
||||
#endregion
|
||||
#region Job
|
||||
ActionMenuItem mnuJob = base.MenuBar.Items.Add("mnuJob", "&Job", 4);
|
||||
mnuJob.Items.Add("mnuJobNormalizeNotes", "&Normalize Overlapping Notes...", mnuJobNormalizeNotes_Click);
|
||||
mnuJob.Items.AddSeparator();
|
||||
mnuJob.Items.Add("mnuJobInsertBars", "&Insert Measures...", mnuJobInsertBars_Click);
|
||||
mnuJob.Items.Add("mnuJobDeleteBars", "&Delete Measures...", mnuJobDeleteBars_Click);
|
||||
mnuJob.Items.AddSeparator();
|
||||
mnuJob.Items.Add("mnuJobRandomize", "Insert &Random Notes...", mnuJobRandomize_Click);
|
||||
mnuJob.Items.Add("mnuJobConnect", "&Connect Notes...", mnuJobConnect_Click);
|
||||
mnuJob.Items.AddSeparator();
|
||||
mnuJob.Items.Add("mnuJobInsertLyrics", "Insert &Lyrics...", mnuJobInsertLyrics_Click);
|
||||
#endregion
|
||||
#region Track
|
||||
ActionMenuItem mnuTrack = base.MenuBar.Items.Add("mnuTrack", "Trac&k", 5);
|
||||
mnuTrack.Items.Add("mnuTrackEnable", "Enable Trac&k", mnuTrackEnable_Click);
|
||||
mnuTrack.Items.AddSeparator();
|
||||
mnuTrack.Items.Add("mnuTrackAdd", "&Add Track", mnuTrackAdd_Click);
|
||||
mnuTrack.Items.Add("mnuTrackDuplicate", "Dupli&cate Track", mnuTrackDuplicate_Click);
|
||||
mnuTrack.Items.Add("mnuTrackRename", "&Rename Track", mnuTrackRename_Click);
|
||||
mnuTrack.Items.Add("mnuTrackDelete", "&Delete Track", mnuTrackDelete_Click);
|
||||
mnuTrack.Items.AddSeparator();
|
||||
mnuTrack.Items.Add("mnuTrackRenderCurrent", "Render Current &Track", mnuTrackRenderCurrent_Click);
|
||||
mnuTrack.Items.Add("mnuTrackRenderAll", "Render All Track&s", mnuTrackRenderAll_Click);
|
||||
#endregion
|
||||
ActionMenuItem mnuPart = base.MenuBar.Items.Add("mnuPart", "Pa&rt", 6);
|
||||
#region Menu Bar
|
||||
#region View
|
||||
ActionMenuItem mnuView = base.MenuBar.Items.Add("mnuView", "&View");
|
||||
mnuView.Items.Add("mnuViewTrackOverlay", "Track &Overlay", mnuViewTrackOverlay_Click, 3);
|
||||
mnuView.Items.AddSeparator(4);
|
||||
#endregion
|
||||
#region Job
|
||||
ActionMenuItem mnuJob = base.MenuBar.Items.Add("mnuJob", "&Job", 4);
|
||||
mnuJob.Items.Add("mnuJobNormalizeNotes", "&Normalize Overlapping Notes...", mnuJobNormalizeNotes_Click);
|
||||
mnuJob.Items.AddSeparator();
|
||||
mnuJob.Items.Add("mnuJobInsertBars", "&Insert Measures...", mnuJobInsertBars_Click);
|
||||
mnuJob.Items.Add("mnuJobDeleteBars", "&Delete Measures...", mnuJobDeleteBars_Click);
|
||||
mnuJob.Items.AddSeparator();
|
||||
mnuJob.Items.Add("mnuJobRandomize", "Insert &Random Notes...", mnuJobRandomize_Click);
|
||||
mnuJob.Items.Add("mnuJobConnect", "&Connect Notes...", mnuJobConnect_Click);
|
||||
mnuJob.Items.AddSeparator();
|
||||
mnuJob.Items.Add("mnuJobInsertLyrics", "Insert &Lyrics...", mnuJobInsertLyrics_Click);
|
||||
#endregion
|
||||
#region Track
|
||||
ActionMenuItem mnuTrack = base.MenuBar.Items.Add("mnuTrack", "Trac&k", 5);
|
||||
mnuTrack.Items.Add("mnuTrackEnable", "Enable Trac&k", mnuTrackEnable_Click);
|
||||
mnuTrack.Items.AddSeparator();
|
||||
mnuTrack.Items.Add("mnuTrackAdd", "&Add Track", mnuTrackAdd_Click);
|
||||
mnuTrack.Items.Add("mnuTrackDuplicate", "Dupli&cate Track", mnuTrackDuplicate_Click);
|
||||
mnuTrack.Items.Add("mnuTrackRename", "&Rename Track", mnuTrackRename_Click);
|
||||
mnuTrack.Items.Add("mnuTrackDelete", "&Delete Track", mnuTrackDelete_Click);
|
||||
mnuTrack.Items.AddSeparator();
|
||||
mnuTrack.Items.Add("mnuTrackRenderCurrent", "Render Current &Track", mnuTrackRenderCurrent_Click);
|
||||
mnuTrack.Items.Add("mnuTrackRenderAll", "Render All Track&s", mnuTrackRenderAll_Click);
|
||||
#endregion
|
||||
ActionMenuItem mnuPart = base.MenuBar.Items.Add("mnuPart", "Pa&rt", 6);
|
||||
ActionMenuItem mnuLyrics = base.MenuBar.Items.Add("mnuLyrics", "&Lyrics", 7);
|
||||
ActionMenuItem mnuTransport = base.MenuBar.Items.Add("mnuTransport", "Tra&nsport", 8);
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
#region Event Handlers
|
||||
#region Menu Bar
|
||||
#region View
|
||||
private void mnuViewTrackOverlay_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
#region Job
|
||||
private void mnuJobNormalizeNotes_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobInsertBars_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobDeleteBars_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobRandomize_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobConnect_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobInsertLyrics_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
#region Track
|
||||
private void mnuTrackEnable_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackDuplicate_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackRename_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackDelete_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackRenderCurrent_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackRenderAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
#endregion
|
||||
#region Event Handlers
|
||||
#region Menu Bar
|
||||
#region View
|
||||
private void mnuViewTrackOverlay_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
#region Job
|
||||
private void mnuJobNormalizeNotes_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobInsertBars_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobDeleteBars_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobRandomize_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobConnect_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuJobInsertLyrics_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
#region Track
|
||||
private void mnuTrackEnable_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackDuplicate_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackRename_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackDelete_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackRenderCurrent_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void mnuTrackRenderAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
protected override void OnObjectModelChanged(EventArgs e)
|
||||
protected override void OnObjectModelChanged(EventArgs e)
|
||||
{
|
||||
base.OnObjectModelChanged(e);
|
||||
}
|
||||
|
||||
@ -0,0 +1,152 @@
|
||||
// one line to give the program's name and an idea of what it does.
|
||||
// Copyright (C) yyyy name of author
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; either version 2
|
||||
// of the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using UniversalEditor.ObjectModels.Multimedia.Audio.Voicebank;
|
||||
using UniversalEditor.UserInterface;
|
||||
using UniversalEditor.UserInterface.WindowsForms;
|
||||
|
||||
namespace UniversalEditor.Editors.Multimedia.Audio.Voicebank
|
||||
{
|
||||
// TODO: Create a file-format-independent explorer listview.
|
||||
|
||||
// The VoiceDatabaseEditor uses an Explorer listview interface. This means that
|
||||
// PhonemeGroups are represented as folders, and Phonemes within those PhonemeGroups
|
||||
// are represented as files. This makes it easy for a user to add/delete these kinds
|
||||
// of items without having to learn complex interfaces.
|
||||
|
||||
// Where practical, I'd like to implement this interface in editors. If there is more
|
||||
// than one editor that can be used to edit a particular type of file (for example,
|
||||
// VoiceDatabaseProgrammerEditor and VoiceDatabaseExplorerEditor), the different
|
||||
// editors will be listed when GetAvailableEditors (...) is called.
|
||||
|
||||
// For our test case (EDSEdit), these editors will be listed as tabs near the bottom
|
||||
// of the screen. The upside to this model of course is that there will be a common
|
||||
// editor for these types of files.
|
||||
|
||||
// The ExplorerEditorBase will expose a Folders collection and a Files collection.
|
||||
// The ExplorerEditorBase will also have a built-in search box (which can be hidden
|
||||
// if developing an app that has its own search methods) and a built-in search
|
||||
// function Search(string text) (which can be used when developing aformentioned app)
|
||||
|
||||
// When user clicks on a folder (or a file), the ExplorerView will fire an ItemClick
|
||||
// event (or for double-clicks, an ItemDoubleClick event) that the author of the Editor
|
||||
// will handle by overriding the OnItemClick (or OnItemDoubleClick) event. The item
|
||||
// that had been clicked will automatically go into the navigation stack (so a Back/Up
|
||||
// button can be implemented without too much difficulty) and the author will be
|
||||
// responsible for populating the next set of items in the hierarchy.
|
||||
|
||||
// Of course, the entire idea behind this is that EDS will become a drop-in replacement
|
||||
// for any explorer on any system, and will be able to read and edit any files without
|
||||
// difficulty.
|
||||
|
||||
/// <summary>
|
||||
/// Description of VoiceDatabaseEditor.
|
||||
/// </summary>
|
||||
public partial class VoicebankEditor : Editor
|
||||
{
|
||||
public VoicebankEditor()
|
||||
{
|
||||
//
|
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
//
|
||||
InitializeComponent();
|
||||
|
||||
//
|
||||
// TODO: Add constructor code after the InitializeComponent() call.
|
||||
//
|
||||
base.SupportedObjectModels.Add(typeof(VoicebankObjectModel));
|
||||
|
||||
// Select "Explorer" view by default, it looks nice~
|
||||
tabControl1.SelectedIndex = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
public override bool NavigateImaginaryPath(string path)
|
||||
{
|
||||
if (base.ObjectModel is VoicebankObjectModel)
|
||||
{
|
||||
VoicebankObjectModel ddi = (base.ObjectModel as VoicebankObjectModel);
|
||||
PhonemeGroup pg = ddi.PhonemeGroups[path];
|
||||
if (pg != null)
|
||||
{
|
||||
lvGroups.Items[ddi.PhonemeGroups.IndexOf(pg)].Selected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Phoneme group " + path + " does not exist in this file!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
protected override void OnObjectModelChanged(EventArgs e)
|
||||
{
|
||||
base.OnObjectModelChanged(e);
|
||||
|
||||
if (base.ObjectModel is VoicebankObjectModel)
|
||||
{
|
||||
VoicebankObjectModel ddi = (base.ObjectModel as VoicebankObjectModel);
|
||||
lvGroups.Items.Clear();
|
||||
lvPhonemes.Items.Clear();
|
||||
|
||||
foreach(PhonemeGroup pg in ddi.PhonemeGroups)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem();
|
||||
lvi.Text = pg.Title;
|
||||
lvi.SubItems.Add(pg.Phonemes.Count.ToString());
|
||||
// lvi.SubItems.Add(pg.Data1.ToString());
|
||||
// lvi.SubItems.Add(pg.Data2.ToString());
|
||||
lvGroups.Items.Add(lvi);
|
||||
|
||||
ListViewItem lvie = new ListViewItem();
|
||||
lvie.Text = pg.Title;
|
||||
lvie.SubItems.Add(pg.Phonemes.Count.ToString());
|
||||
// lvie.SubItems.Add(pg.Data1.ToString());
|
||||
// lvie.SubItems.Add(pg.Data2.ToString());
|
||||
lvie.ImageKey = "folder_closed";
|
||||
lvExplorer.Items.Add(lvie);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void lvGroups_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (base.ObjectModel is VoicebankObjectModel)
|
||||
{
|
||||
VoicebankObjectModel ddi = (base.ObjectModel as VoicebankObjectModel);
|
||||
lvPhonemes.Items.Clear();
|
||||
if (lvGroups.SelectedIndices.Count == 1)
|
||||
{
|
||||
foreach (Phoneme p in ddi.PhonemeGroups[lvGroups.SelectedIndices[0]].Phonemes)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem();
|
||||
lvi.Text = p.Title;
|
||||
// lvi.SubItems.Add(p.Data.ToString());
|
||||
lvPhonemes.Items.Add(lvi);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,286 @@
|
||||
// one line to give the program's name and an idea of what it does.
|
||||
// Copyright (C) yyyy name of author
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; either version 2
|
||||
// of the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
namespace UniversalEditor.Editors.Multimedia.Audio.Voicebank
|
||||
{
|
||||
partial class VoicebankEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Designer variable used to keep track of non-visual components.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Disposes resources used by the control.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing) {
|
||||
if (components != null) {
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VoiceDatabaseEditor));
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.lvPhonemes = new System.Windows.Forms.ListView();
|
||||
this.chPhonemeName = new System.Windows.Forms.ColumnHeader();
|
||||
this.chPhonemeData = new System.Windows.Forms.ColumnHeader();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.lvGroups = new System.Windows.Forms.ListView();
|
||||
this.chPhonemeGroupName = new System.Windows.Forms.ColumnHeader();
|
||||
this.chPhonemeGroupPhonemeCount = new System.Windows.Forms.ColumnHeader();
|
||||
this.chPhonemeGroupData1 = new System.Windows.Forms.ColumnHeader();
|
||||
this.chPhonemeGroupData2 = new System.Windows.Forms.ColumnHeader();
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.lvExplorer = new System.Windows.Forms.ListView();
|
||||
this.imlExplorerLargeIcons = new System.Windows.Forms.ImageList(this.components);
|
||||
this.imlExplorerSmallIcons = new System.Windows.Forms.ImageList(this.components);
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.tabPage2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox1.Controls.Add(this.button2);
|
||||
this.groupBox1.Controls.Add(this.lvPhonemes);
|
||||
this.groupBox1.Location = new System.Drawing.Point(3, 123);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(400, 175);
|
||||
this.groupBox1.TabIndex = 1;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Phoneme List";
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(6, 19);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||
this.button2.TabIndex = 0;
|
||||
this.button2.Text = "button1";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lvPhonemes
|
||||
//
|
||||
this.lvPhonemes.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lvPhonemes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.chPhonemeName,
|
||||
this.chPhonemeData});
|
||||
this.lvPhonemes.FullRowSelect = true;
|
||||
this.lvPhonemes.GridLines = true;
|
||||
this.lvPhonemes.HideSelection = false;
|
||||
this.lvPhonemes.Location = new System.Drawing.Point(6, 48);
|
||||
this.lvPhonemes.Name = "lvPhonemes";
|
||||
this.lvPhonemes.Size = new System.Drawing.Size(388, 121);
|
||||
this.lvPhonemes.TabIndex = 1;
|
||||
this.lvPhonemes.UseCompatibleStateImageBehavior = false;
|
||||
this.lvPhonemes.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// chPhonemeName
|
||||
//
|
||||
this.chPhonemeName.Text = "Name";
|
||||
this.chPhonemeName.Width = 285;
|
||||
//
|
||||
// chPhonemeData
|
||||
//
|
||||
this.chPhonemeData.Text = "Data";
|
||||
this.chPhonemeData.Width = 94;
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox2.Controls.Add(this.button1);
|
||||
this.groupBox2.Controls.Add(this.lvGroups);
|
||||
this.groupBox2.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(397, 114);
|
||||
this.groupBox2.TabIndex = 0;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "Phoneme Groups";
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(6, 19);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 0;
|
||||
this.button1.Text = "button1";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lvGroups
|
||||
//
|
||||
this.lvGroups.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lvGroups.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.chPhonemeGroupName,
|
||||
this.chPhonemeGroupPhonemeCount,
|
||||
this.chPhonemeGroupData1,
|
||||
this.chPhonemeGroupData2});
|
||||
this.lvGroups.FullRowSelect = true;
|
||||
this.lvGroups.GridLines = true;
|
||||
this.lvGroups.HideSelection = false;
|
||||
this.lvGroups.Location = new System.Drawing.Point(6, 48);
|
||||
this.lvGroups.Name = "lvGroups";
|
||||
this.lvGroups.Size = new System.Drawing.Size(385, 60);
|
||||
this.lvGroups.TabIndex = 1;
|
||||
this.lvGroups.UseCompatibleStateImageBehavior = false;
|
||||
this.lvGroups.View = System.Windows.Forms.View.Details;
|
||||
this.lvGroups.SelectedIndexChanged += new System.EventHandler(this.lvGroups_SelectedIndexChanged);
|
||||
//
|
||||
// chPhonemeGroupName
|
||||
//
|
||||
this.chPhonemeGroupName.Text = "Name";
|
||||
this.chPhonemeGroupName.Width = 190;
|
||||
//
|
||||
// chPhonemeGroupPhonemeCount
|
||||
//
|
||||
this.chPhonemeGroupPhonemeCount.Text = "Phonemes";
|
||||
this.chPhonemeGroupPhonemeCount.Width = 82;
|
||||
//
|
||||
// chPhonemeGroupData1
|
||||
//
|
||||
this.chPhonemeGroupData1.Text = "Data 1";
|
||||
//
|
||||
// chPhonemeGroupData2
|
||||
//
|
||||
this.chPhonemeGroupData2.Text = "Data 2";
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabControl1.Controls.Add(this.tabPage1);
|
||||
this.tabControl1.Controls.Add(this.tabPage2);
|
||||
this.tabControl1.Location = new System.Drawing.Point(3, 3);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(414, 327);
|
||||
this.tabControl1.TabIndex = 3;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Controls.Add(this.groupBox2);
|
||||
this.tabPage1.Controls.Add(this.groupBox1);
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage1.Size = new System.Drawing.Size(406, 301);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "Programmer";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Controls.Add(this.lvExplorer);
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(406, 301);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "Explorer";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lvExplorer
|
||||
//
|
||||
this.lvExplorer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lvExplorer.FullRowSelect = true;
|
||||
this.lvExplorer.GridLines = true;
|
||||
this.lvExplorer.HideSelection = false;
|
||||
this.lvExplorer.LargeImageList = this.imlExplorerLargeIcons;
|
||||
this.lvExplorer.Location = new System.Drawing.Point(3, 3);
|
||||
this.lvExplorer.Name = "lvExplorer";
|
||||
this.lvExplorer.Size = new System.Drawing.Size(400, 295);
|
||||
this.lvExplorer.SmallImageList = this.imlExplorerSmallIcons;
|
||||
this.lvExplorer.TabIndex = 1;
|
||||
this.lvExplorer.UseCompatibleStateImageBehavior = false;
|
||||
//
|
||||
// imlExplorerLargeIcons
|
||||
//
|
||||
this.imlExplorerLargeIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imlExplorerLargeIcons.ImageStream")));
|
||||
this.imlExplorerLargeIcons.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imlExplorerLargeIcons.Images.SetKeyName(0, "folder_closed");
|
||||
this.imlExplorerLargeIcons.Images.SetKeyName(1, "folder_open");
|
||||
//
|
||||
// imlExplorerSmallIcons
|
||||
//
|
||||
this.imlExplorerSmallIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imlExplorerSmallIcons.ImageStream")));
|
||||
this.imlExplorerSmallIcons.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imlExplorerSmallIcons.Images.SetKeyName(0, "folder_closed");
|
||||
this.imlExplorerSmallIcons.Images.SetKeyName(1, "folder_open");
|
||||
//
|
||||
// VoiceDatabaseEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.tabControl1);
|
||||
this.Name = "VoiceDatabaseEditor";
|
||||
this.Size = new System.Drawing.Size(420, 333);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.tabPage2.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
}
|
||||
private System.Windows.Forms.ImageList imlExplorerSmallIcons;
|
||||
private System.Windows.Forms.ImageList imlExplorerLargeIcons;
|
||||
private System.Windows.Forms.ListView lvExplorer;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.ColumnHeader chPhonemeGroupData2;
|
||||
private System.Windows.Forms.ColumnHeader chPhonemeGroupData1;
|
||||
private System.Windows.Forms.ListView lvPhonemes;
|
||||
private System.Windows.Forms.ColumnHeader chPhonemeGroupPhonemeCount;
|
||||
private System.Windows.Forms.ColumnHeader chPhonemeGroupName;
|
||||
private System.Windows.Forms.ColumnHeader chPhonemeData;
|
||||
private System.Windows.Forms.ColumnHeader chPhonemeName;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.ListView lvGroups;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,273 @@
|
||||
<?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>
|
||||
<metadata name="imlExplorerLargeIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>9, 8</value>
|
||||
</metadata>
|
||||
<data name="imlExplorerLargeIcons.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACC
|
||||
GAAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
|
||||
AwABIAMAAQEBAAEgBgABQP8A/wD/AP8A/wD/AKgAAwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMB
|
||||
Af8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMB
|
||||
Af8DAQH/AwEB/wMBAf8DAQH//wAJAAMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMB
|
||||
Af8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMB
|
||||
Af8DAQH/AwEB/wMBAf8DAQH/AwEB/xAAA4EB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEB
|
||||
AoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEB
|
||||
AoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEB
|
||||
AoEB/wEBAoEB/wMBAf//AAEAA4EB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEB
|
||||
AoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEB
|
||||
AoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEBAoEB/wEB
|
||||
AoEB/wEBAoEB/wEBAoEB/wEBAoEB/wMBAf8MAAOBAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBAoEB/wMBAf//AAEAA4EF/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQKBAf8DAQH/DAADgQH/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8BAQKBAf8DAQH//wABAAOBBf8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/AQECgQH/AwEB/wgAA4EB/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wMBAf8DAQH//wABAAOBBf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQECgQH/AwEB/wgA
|
||||
A4EB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/A8AB/wMBAf8DAQH/
|
||||
/wABAAOBBf8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
AQECgQH/AwEB/wgAA4EB/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A4EB/wMBAf8DAQH//wABAAOBBf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQECgQH/AwEB/wgAA4EB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/A4EB/wMBAf8DAQH//wABAAOBBf8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/AQECgQH/AwEB/wQAA4EB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wMBAf8BAQKBAf8DAQH//wABAAOBBf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQECgQH/AwEB/wQAA4EB/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wMBAf8BAQKBAf8DAQH/
|
||||
/wABAAOBBf8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
AQECgQH/AwEB/wQAA4EB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
A4EB/wMBAf8BAQKBAf8DAQH//wABAAOBBf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQECgQH/AwEB/wQAA4EB/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A4EB/wMBAf8BAQKBAf8DAQH//wABAAOBBf8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/AQECgQH/AwEB/wOBAf8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8DAQH/A4EB/wEBAoEB/wMBAf//AAEA
|
||||
A4EF/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQKB
|
||||
Af8DAQH/A4EB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wMB
|
||||
Af8DgQH/AQECgQH/AwEB//8AAQADgQX/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wEBAoEB/wMBAf8DgQH/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DgQH/AwEB/wEBA/8BAQKBAf8DAQH//wABAAOBBf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQECgQH/AwEB/wOBAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wOBAf8DAQH/A8AB/wEBAoEB/wMBAf//AAEA
|
||||
A4EF/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8BAQKB
|
||||
Af8DAQH/A4Fp/wMBAf8DgQH/AQED/wEBAoEB/wMBAf//AAEAA4EF/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQKBAf8DAQH/BAADgQH/A4EB/wPAAf8DwAH/
|
||||
A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/
|
||||
A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8BAQP/A8AB/wEBAoEB/wMBAf//AAEAA4EF/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8BAQKBAf8DAQH/
|
||||
DAADgQX/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wEBAoEB/wMBAf//AAEA
|
||||
A4EF/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQKB
|
||||
Af8DAQH/DAADgQX/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBAoEB/wMB
|
||||
Af//AAEAA4EF/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8BAQKBAf8DAQH/DAADgQX/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wEB
|
||||
AoEB/wMBAf//AAEAA4EF/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQKBAf8DAQH/DAADgQX/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/
|
||||
AQED/wPAAf8BAQP/A8AB/wEBL/8DAQH//wAFAAOBdf8BAQKBAf8DAQH/DAADgQX/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8DgQH/A4EB/wOBAf8DgQH/
|
||||
A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB//8ACQADgQH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/
|
||||
A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/
|
||||
A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DAQH/FAADgQX/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/A4EB//8AOQADgQX/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/A4EB/1QAA4EF/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8DgQH//wBBAAOBBf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/A4EB/1wAA4El/wOBAf//AEkAA4El/wOBAf9kAAOBAf8DgQH/A4EB/wOBAf8DgQH/
|
||||
A4EB/wOBAf8DgQH/A4EB//8AUQADgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf//AP8A
|
||||
/wDPAAFCAU0BPgcAAT4DAAEoAwABgAMAASADAAEBAQABAQYAAQIWAAP/AQAI/wgACP8IAAj/CAAE/wHw
|
||||
AgABAQgAAYACAAEBAeAPAAHgDwAB4A8AAcAPAAHADwABwA8AAcAPAAGADwABgA8AAYAPAAGAXwABgA8A
|
||||
AeAPAAHgDwAB4A8AAeACAAEBDAAB4AIAAQMLAAEBAfABAAEfAf8IAAGAAQAC/wH4AQABPwH/CAABwAEB
|
||||
Av8B/AEAAX8B/wgAAeABAwL/Af4BAAL/CAAB8AEHBv8IAAj/CAAL
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="imlExplorerSmallIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>162, 10</value>
|
||||
</metadata>
|
||||
<data name="imlExplorerSmallIcons.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADI
|
||||
BQAAAk1TRnQBSQFMAgEBAgEAAQUBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABEAMAAQEBAAEgBgABEP8A/wAYAAMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMB
|
||||
Af8DAQH/AwEB/wMBAf8DAQH/EAADAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/
|
||||
AwEB/wMBAf8DAQH/gAADgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOB
|
||||
Af8DgQH/A4EB/wMBAf8MAAOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/
|
||||
A4EB/wMBAf8DAQH/gAADgQX/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEB
|
||||
A/8DgQH/AwEB/wwAA4EF/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wOBAf8DAQH/
|
||||
AwEB/4AAA4EF/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/A4EB/wMB
|
||||
Af8IAAOBBf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AwEB/wOBAf8DAQH/
|
||||
gAADgQX/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DgQH/AwEB/wgA
|
||||
A4EF/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wOBAf8DAQH/A4EB/wMBAf+AAAOB
|
||||
Bf8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wOBAf8DAQH/BAADgQX/
|
||||
A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wMBAf8DgQH/A4EB/wMBAf+AAAOB
|
||||
Bf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wOBAf8DAQH/BAADgSn/
|
||||
A4EB/wMBAf8DwAH/A4EB/wMBAf+AAAOBBf8DwAH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wOBAf8DAQH/BAADgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/
|
||||
A4EB/wOBAf8DgQH/AQED/wOBAf8DAQH/gAADgQX/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPA
|
||||
Af8BAQP/A8AB/wEBA/8DgQH/AwEB/wgAA4EF/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AB/wEBA/8DwAH/A4EB/wMBAf+AAAOBMf8DgQH/AwEB/wgAA4EF/wEBA/8DwAH/AQED/wPAAf8BAQP/
|
||||
A8AV/wOBAf8DAQH/gAADgQH/AQED/wPAAf8BAQP/A8AB/wEBA/8DwAH/AQED/wOBAf8DgQH/A4EB/wOB
|
||||
Af8DgQH/A4EB/wwAA4EF/wPAAf8BAQP/A8AB/wEBA/8DwAX/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/
|
||||
iAADgQH/AQED/wPAAf8BAQP/A8AB/wEBA/8DgQH/KAADgRX/A4EB/6QAA4EB/wOBAf8DgQH/A4EB/wOB
|
||||
Af8wAAOBAf8DgQH/A4EB/wOBAf8DgQH//wChAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUA
|
||||
AYAXAAP/AQAE/wQABP8EAAGAAQEB4AYAAQEBwAYAAQEBwAYAAQEBgAYAAQEBgAYAAQEHAAEBBwABAQcA
|
||||
AQEBgAYAAQEBgAYAAQMBgAEBBAABgAH/AcABfwQAAcEB/wHgAf8EAAT/BAAL
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>37</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@ -100,6 +100,12 @@
|
||||
<Compile Include="Editors\Multimedia\Audio\Synthesized\SynthesizedAudioEditor.Designer.cs">
|
||||
<DependentUpon>SynthesizedAudioEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Editors\Multimedia\Audio\Voicebank\VoicebankEditor.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Editors\Multimedia\Audio\Voicebank\VoicebankEditor.designer.cs">
|
||||
<DependentUpon>VoicebankEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Editors\Multimedia\Audio\Waveform\WaveformAudioEditor.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
@ -166,6 +172,9 @@
|
||||
<EmbeddedResource Include="Editors\Multimedia\Audio\Synthesized\SynthesizedAudioEditor.resx">
|
||||
<DependentUpon>SynthesizedAudioEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Editors\Multimedia\Audio\Voicebank\VoicebankEditor.resx">
|
||||
<DependentUpon>VoicebankEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Editors\Multimedia\Audio\Waveform\WaveformAudioEditor.resx">
|
||||
<DependentUpon>WaveformAudioEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.DataFormats.Shortcut.FreeDesktop
|
||||
{
|
||||
public class DesktopShortcutAction
|
||||
{
|
||||
public class DesktopShortcutActionCollection
|
||||
: System.Collections.ObjectModel.Collection<DesktopShortcutAction>
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private string mvarName = String.Empty;
|
||||
public string Name { get { return mvarName; } set { mvarName = value; } }
|
||||
|
||||
private string mvarTitle = String.Empty;
|
||||
/// <summary>
|
||||
/// Label that will be shown to the user. Since actions are always shown in the context of
|
||||
/// a specific application (that is, as a submenu of a launcher), this only needs to be
|
||||
/// unambiguous within one application and should not include the application name.
|
||||
/// </summary>
|
||||
public string Title { get { return mvarTitle; } set { mvarTitle = value; } }
|
||||
|
||||
private string mvarIconFileName = String.Empty;
|
||||
/// <summary>
|
||||
/// Icon to be shown togheter with the action. If the name is an absolute path, the given
|
||||
/// file will be used. If the name is not an absolute path, the algorithm described in the
|
||||
/// Icon Theme Specification will be used to locate the icon. Implementations may choose
|
||||
/// to ignore it.
|
||||
/// </summary>
|
||||
public string IconFileName { get { return mvarIconFileName; } set { mvarIconFileName = value; } }
|
||||
|
||||
private string mvarExecutableFileName = String.Empty;
|
||||
/// <summary>
|
||||
/// Program to execute for this action. See the Exec key for details on how this key
|
||||
/// works. The Exec key is required if DBusActivatable is not set to true in the main
|
||||
/// desktop entry group. Even if DBusActivatable is true, Exec should be specified for
|
||||
/// compatibility with implementations that do not understand DBusActivatable.
|
||||
/// </summary>
|
||||
public string ExecutableFileName { get { return mvarExecutableFileName; } set { mvarExecutableFileName = value; } }
|
||||
|
||||
private System.Collections.Specialized.StringCollection mvarExecutableArguments = new System.Collections.Specialized.StringCollection();
|
||||
/// <summary>
|
||||
/// Arguments passed into the associated program when it is executed.
|
||||
/// </summary>
|
||||
public System.Collections.Specialized.StringCollection ExecutableArguments { get { return mvarExecutableArguments; } }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,418 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using UniversalEditor.ObjectModels.PropertyList;
|
||||
using UniversalEditor.DataFormats.PropertyList;
|
||||
using UniversalEditor.ObjectModels.Shortcut;
|
||||
|
||||
namespace UniversalEditor.DataFormats.Shortcut.FreeDesktop
|
||||
{
|
||||
public class DesktopShortcutDataFormat : WindowsConfigurationDataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = new DataFormatReference(GetType());
|
||||
_dfr.Capabilities.Add(typeof(ShortcutObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.ExportOptions.Add(new CustomOptionText("ApplicationTitle", "&Application title: "));
|
||||
_dfr.ExportOptions.Add(new CustomOptionText("GenericTitle", "&Generic title: "));
|
||||
_dfr.ExportOptions.Add(new CustomOptionBoolean("HideFromMenus", "&Do not display this entry in menus"));
|
||||
_dfr.ExportOptions.Add(new CustomOptionBoolean("Deleted", "&Mark this shortcut as being deleted by the user"));
|
||||
_dfr.ExportOptions.Add(new CustomOptionBoolean("DBusActivatable", "&Enable DBus activation"));
|
||||
_dfr.Sources.Add("http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html");
|
||||
_dfr.Filters.Add("FreeDesktop.org desktop/directory shortcut entry", new string[] { "*.desktop", "*.directory" });
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
private string mvarApplicationTitle = String.Empty;
|
||||
/// <summary>
|
||||
/// Specific name of the application, for example "Mozilla".
|
||||
/// </summary>
|
||||
public string ApplicationTitle { get { return mvarApplicationTitle; } set { mvarApplicationTitle = value; } }
|
||||
|
||||
private string mvarGenericTitle = String.Empty;
|
||||
/// <summary>
|
||||
/// Generic name of the application, for example "Web Browser".
|
||||
/// </summary>
|
||||
public string GenericTitle { get { return mvarGenericTitle; } set { mvarGenericTitle = value; } }
|
||||
|
||||
private DesktopShortcutType mvarType = DesktopShortcutType.Application;
|
||||
public DesktopShortcutType Type { get { return mvarType; } set { mvarType = value; } }
|
||||
|
||||
private bool mvarHideFromMenus = false;
|
||||
/// <summary>
|
||||
/// NoDisplay means "this application exists, but don't display it in the menus". This
|
||||
/// can be useful to e.g. associate this application with MIME types, so that it gets
|
||||
/// launched from a file manager (or other apps), without having a menu entry for it
|
||||
/// (there are tons of good reasons for this, including e.g. the netscape -remote, or
|
||||
/// kfmclient openURL kind of stuff).
|
||||
/// </summary>
|
||||
public bool HideFromMenus { get { return mvarHideFromMenus; } set { mvarHideFromMenus = value; } }
|
||||
|
||||
private bool mvarDeleted = false;
|
||||
/// <summary>
|
||||
/// Hidden should have been called Deleted. It means the user deleted (at his level)
|
||||
/// something that was present (at an upper level, e.g. in the system dirs). It's strictly
|
||||
/// equivalent to the .desktop file not existing at all, as far as that user is concerned.
|
||||
/// This can also be used to "uninstall" existing files (e.g. due to a renaming) - by
|
||||
/// letting make install install a file with Hidden=true in it.
|
||||
/// </summary>
|
||||
public bool Deleted { get { return mvarDeleted; } set { mvarDeleted = value; } }
|
||||
|
||||
private System.Collections.Specialized.StringCollection mvarRestrictedEnvironments = new System.Collections.Specialized.StringCollection();
|
||||
/// <summary>
|
||||
/// <para>
|
||||
/// A list of strings identifying the desktop environments that should display/not
|
||||
/// display a given desktop entry.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// By default, a desktop file should be shown, unless an
|
||||
/// OnlyShowIn key is present, in which case, the default is for the file not to be
|
||||
/// shown.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// If $XDG_CURRENT_DIRECTORY is set then it contains a colon-separated list of strings.
|
||||
/// In order, each string is considered. If a matching entry is found in OnlyShowIn then
|
||||
/// the desktop file is shown. If an entry is found in NotShowIn then the desktop file is
|
||||
/// not shown. If none of the strings match then the default action is taken (as above).
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// The same desktop name may not appear in both OnlyShowIn and NotShowIn of a group.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public System.Collections.Specialized.StringCollection RestrictedEnvironments { get { return mvarRestrictedEnvironments; } }
|
||||
|
||||
private System.Collections.Specialized.StringCollection mvarExcludedEnvironments = new System.Collections.Specialized.StringCollection();
|
||||
/// <summary>
|
||||
/// <para>
|
||||
/// A list of strings identifying the desktop environments that should display/not
|
||||
/// display a given desktop entry.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// By default, a desktop file should be shown, unless an
|
||||
/// OnlyShowIn key is present, in which case, the default is for the file not to be
|
||||
/// shown.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// If $XDG_CURRENT_DIRECTORY is set then it contains a colon-separated list of strings.
|
||||
/// In order, each string is considered. If a matching entry is found in OnlyShowIn then
|
||||
/// the desktop file is shown. If an entry is found in NotShowIn then the desktop file is
|
||||
/// not shown. If none of the strings match then the default action is taken (as above).
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// The same desktop name may not appear in both OnlyShowIn and NotShowIn of a group.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public System.Collections.Specialized.StringCollection ExcludedEnvironments { get { return mvarExcludedEnvironments; } }
|
||||
|
||||
private bool mvarDBusActivatable = false;
|
||||
/// <summary>
|
||||
/// A boolean value specifying if D-Bus activation is supported for this application. If
|
||||
/// this key is missing, the default value is false. If the value is true then
|
||||
/// implementations should ignore the Exec key and send a D-Bus message to launch the
|
||||
/// application. See D-Bus Activation for more information on how this works.
|
||||
/// Applications should still include Exec= lines in their desktop files for
|
||||
/// compatibility with implementations that do not understand the DBusActivatable key.
|
||||
/// </summary>
|
||||
public bool DBusActivatable { get { return mvarDBusActivatable; } set { mvarDBusActivatable = value; } }
|
||||
|
||||
private string mvarTryExec = String.Empty;
|
||||
/// <summary>
|
||||
/// Path to an executable file on disk used to determine if the program is actually
|
||||
/// installed. If the path is not an absolute path, the file is looked up in the $PATH
|
||||
/// environment variable. If the file is not present or if it is not executable, the entry
|
||||
/// may be ignored (not be used in menus, for example).
|
||||
/// </summary>
|
||||
public string TryExec { get { return mvarTryExec; } set { mvarTryExec = value; } }
|
||||
|
||||
private DesktopShortcutAction.DesktopShortcutActionCollection mvarActions = new DesktopShortcutAction.DesktopShortcutActionCollection();
|
||||
/// <summary>
|
||||
/// Identifiers for application actions. This can be used to tell the application to make
|
||||
/// a specific action, different from the default behavior. The Application actions
|
||||
/// section describes how actions work.
|
||||
/// </summary>
|
||||
public DesktopShortcutAction.DesktopShortcutActionCollection Actions { get { return mvarActions; } }
|
||||
|
||||
private System.Collections.Specialized.StringCollection mvarSupportedMimeTypes = new System.Collections.Specialized.StringCollection();
|
||||
/// <summary>
|
||||
/// The MIME type(s) supported by this application.
|
||||
/// </summary>
|
||||
public System.Collections.Specialized.StringCollection SupportedMimeTypes { get { return mvarSupportedMimeTypes; } }
|
||||
|
||||
private System.Collections.Specialized.StringCollection mvarCategories = new System.Collections.Specialized.StringCollection();
|
||||
/// <summary>
|
||||
/// Categories in which the entry should be shown in a menu (for possible values see the Desktop Menu Specification).
|
||||
/// </summary>
|
||||
public System.Collections.Specialized.StringCollection Categories { get { return mvarCategories; } }
|
||||
|
||||
private System.Collections.Specialized.StringCollection mvarKeywords = new System.Collections.Specialized.StringCollection();
|
||||
/// <summary>
|
||||
/// A list of strings which may be used in addition to other metadata to describe this
|
||||
/// entry. This can be useful e.g. to facilitate searching through entries. The values
|
||||
/// are not meant for display, and should not be redundant with the values of Name or
|
||||
/// GenericName.
|
||||
/// </summary>
|
||||
public System.Collections.Specialized.StringCollection Keywords { get { return mvarKeywords; } }
|
||||
|
||||
private DesktopShortcutStartupNotifyBehavior mvarStartupNotify = DesktopShortcutStartupNotifyBehavior.Disabled;
|
||||
/// <summary>
|
||||
/// If set to <see cref="DesktopShortcutStartupNotifyBehavior.Supported" />, it is KNOWN
|
||||
/// that the application will send a "remove" message when started with the
|
||||
/// DESKTOP_STARTUP_ID environment variable set. If set to
|
||||
/// <see cref="DesktopShortcutStartupNotifyBehavior.Unsupported" />, it is KNOWN that the
|
||||
/// application does not work with startup notification at all (does not shown any window,
|
||||
/// breaks even when using StartupWMClass, etc.). If set to
|
||||
/// <see cref="DesktopShortcutStartupNotifyBehavior.Disabled" />, a reasonable handling is
|
||||
/// up to implementations (assuming false, using StartupWMClass, etc.). (See the Startup
|
||||
/// Notification Protocol Specification for more details).
|
||||
/// </summary>
|
||||
public DesktopShortcutStartupNotifyBehavior StartupNotify { get { return mvarStartupNotify; } set { mvarStartupNotify = value; } }
|
||||
|
||||
private string mvarStartupWindowClass = String.Empty;
|
||||
/// <summary>
|
||||
/// If specified, it is known that the application will map at least one window with the
|
||||
/// given string as its WM class or WM name hint (see the Startup Notification Protocol
|
||||
/// Specification for more details).
|
||||
/// </summary>
|
||||
public string StartupWindowClass { get { return mvarStartupWindowClass; } set { mvarStartupWindowClass = value; } }
|
||||
|
||||
protected override void BeforeLoadInternal(Stack<ObjectModel> objectModels)
|
||||
{
|
||||
base.BeforeLoadInternal(objectModels);
|
||||
objectModels.Push(new PropertyListObjectModel());
|
||||
}
|
||||
protected override void AfterLoadInternal(Stack<ObjectModel> objectModels)
|
||||
{
|
||||
base.AfterLoadInternal(objectModels);
|
||||
|
||||
PropertyListObjectModel plom = (objectModels.Pop() as PropertyListObjectModel);
|
||||
ShortcutObjectModel shortcut = (objectModels.Pop() as ShortcutObjectModel);
|
||||
|
||||
|
||||
}
|
||||
protected override void BeforeSaveInternal(Stack<ObjectModel> objectModels)
|
||||
{
|
||||
base.BeforeSaveInternal(objectModels);
|
||||
ShortcutObjectModel shortcut = (objectModels.Pop() as ShortcutObjectModel);
|
||||
PropertyListObjectModel plom = new PropertyListObjectModel();
|
||||
|
||||
#region Desktop Entry
|
||||
{
|
||||
Group group = new Group("Desktop Entry");
|
||||
|
||||
// Version of the Desktop Entry Specification that the desktop entry conforms
|
||||
// with. Entries that confirm with this version of the specification should use
|
||||
// 1.0. Note that the version field is not required to be present.
|
||||
group.Properties.Add("Version", "1.0");
|
||||
|
||||
if (!String.IsNullOrEmpty(mvarApplicationTitle))
|
||||
{
|
||||
group.Properties.Add("Name", mvarApplicationTitle);
|
||||
}
|
||||
if (!String.IsNullOrEmpty(mvarGenericTitle))
|
||||
{
|
||||
group.Properties.Add("GenericName", mvarGenericTitle);
|
||||
}
|
||||
if (mvarHideFromMenus)
|
||||
{
|
||||
group.Properties.Add("NoDisplay", "true");
|
||||
}
|
||||
if (!String.IsNullOrEmpty(shortcut.Comment))
|
||||
{
|
||||
group.Properties.Add("Comment", shortcut.Comment);
|
||||
}
|
||||
if (!String.IsNullOrEmpty(shortcut.IconFileName))
|
||||
{
|
||||
// Icon to display in file manager, menus, etc. If the name is an absolute
|
||||
// path, the given file will be used. If the name is not an absolute path, the
|
||||
// algorithm described in the Icon Theme Specification will be used to locate
|
||||
// the icon.
|
||||
group.Properties.Add("Icon", shortcut.IconFileName);
|
||||
}
|
||||
if (mvarDeleted)
|
||||
{
|
||||
group.Properties.Add("Hidden", true);
|
||||
}
|
||||
if (mvarRestrictedEnvironments.Count > 0)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (string s in mvarRestrictedEnvironments)
|
||||
{
|
||||
sb.Append(s);
|
||||
if (mvarRestrictedEnvironments.IndexOf(s) < mvarRestrictedEnvironments.Count - 1)
|
||||
{
|
||||
sb.Append(":");
|
||||
}
|
||||
}
|
||||
group.Properties.Add("OnlyShowIn", sb.ToString());
|
||||
}
|
||||
if (mvarExcludedEnvironments.Count > 0)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (string s in mvarExcludedEnvironments)
|
||||
{
|
||||
sb.Append(s);
|
||||
if (mvarExcludedEnvironments.IndexOf(s) < mvarExcludedEnvironments.Count - 1)
|
||||
{
|
||||
sb.Append(":");
|
||||
}
|
||||
}
|
||||
group.Properties.Add("NotShowIn", sb.ToString());
|
||||
}
|
||||
|
||||
if (mvarDBusActivatable)
|
||||
{
|
||||
group.Properties.Add("DBusActivatable", true);
|
||||
}
|
||||
|
||||
if (!String.IsNullOrEmpty(mvarTryExec))
|
||||
{
|
||||
group.Properties.Add("TryExec", mvarTryExec);
|
||||
}
|
||||
if (!String.IsNullOrEmpty(shortcut.ExecutableFileName))
|
||||
{
|
||||
// Program to execute, possibly with arguments. See the Exec key for details
|
||||
// on how this key works. The Exec key is required if DBusActivatable is not
|
||||
// set to true. Even if DBusActivatable is true, Exec should be specified for
|
||||
// compatibility with implementations that do not understand DBusActivatable.
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append(shortcut.ExecutableFileName);
|
||||
foreach (string arg in shortcut.ExecutableArguments)
|
||||
{
|
||||
sb.Append(" ");
|
||||
sb.Append(arg);
|
||||
}
|
||||
group.Properties.Add("Exec", sb.ToString());
|
||||
}
|
||||
if (!String.IsNullOrEmpty(shortcut.WorkingDirectory))
|
||||
{
|
||||
// If entry is of type Application, the working directory in which to run the
|
||||
// program.
|
||||
group.Properties.Add("Path", shortcut.WorkingDirectory);
|
||||
}
|
||||
if (shortcut.RunInTerminal)
|
||||
{
|
||||
// Whether the program runs in a terminal window.
|
||||
group.Properties.Add("Terminal", true);
|
||||
}
|
||||
#region Desktop Actions
|
||||
{
|
||||
// Identifiers for application actions. This can be used to tell the
|
||||
// application to make a specific action, different from the default
|
||||
// behavior. The Application actions section describes how actions work.
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (DesktopShortcutAction action in mvarActions)
|
||||
{
|
||||
sb.Append(action.Name);
|
||||
sb.Append(";");
|
||||
}
|
||||
group.Properties.Add("Actions", sb.ToString());
|
||||
}
|
||||
#endregion
|
||||
|
||||
if (mvarSupportedMimeTypes.Count > 0)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (string s in mvarSupportedMimeTypes)
|
||||
{
|
||||
sb.Append(s);
|
||||
sb.Append(";");
|
||||
}
|
||||
group.Properties.Add("MimeType", sb.ToString());
|
||||
}
|
||||
if (mvarCategories.Count > 0)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (string s in mvarCategories)
|
||||
{
|
||||
sb.Append(s);
|
||||
sb.Append(";");
|
||||
}
|
||||
group.Properties.Add("Categories", sb.ToString());
|
||||
}
|
||||
if (mvarKeywords.Count > 0)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (string s in mvarKeywords)
|
||||
{
|
||||
sb.Append(s);
|
||||
sb.Append(";");
|
||||
}
|
||||
group.Properties.Add("Keywords", sb.ToString());
|
||||
}
|
||||
|
||||
switch (mvarStartupNotify)
|
||||
{
|
||||
case DesktopShortcutStartupNotifyBehavior.Disabled:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case DesktopShortcutStartupNotifyBehavior.Supported:
|
||||
{
|
||||
group.Properties.Add("StartupNotify", true);
|
||||
break;
|
||||
}
|
||||
case DesktopShortcutStartupNotifyBehavior.Unsupported:
|
||||
{
|
||||
group.Properties.Add("StartupNotify", false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!String.IsNullOrEmpty(mvarStartupWindowClass))
|
||||
{
|
||||
group.Properties.Add("StartupWMClass", mvarStartupWindowClass);
|
||||
}
|
||||
|
||||
if (mvarType == DesktopShortcutType.InternetLink)
|
||||
{
|
||||
group.Properties.Add("URL", shortcut.ExecutableFileName);
|
||||
}
|
||||
|
||||
|
||||
// This specification defines 3 types of desktop entries: Application (type 1),
|
||||
// Link (type 2) and Directory (type 3). To allow the addition of new types in the
|
||||
// future, implementations should ignore desktop entries with an unknown type.
|
||||
// group.Properties.Add("Type");
|
||||
|
||||
plom.Groups.Add(group);
|
||||
|
||||
|
||||
#region Desktop Actions
|
||||
{
|
||||
// Identifiers for application actions. This can be used to tell the
|
||||
// application to make a specific action, different from the default
|
||||
// behavior. The Application actions section describes how actions work.
|
||||
foreach (DesktopShortcutAction action in mvarActions)
|
||||
{
|
||||
Group group1 = new Group("Desktop Action " + action.Name);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append(action.ExecutableFileName);
|
||||
foreach (string s in action.ExecutableArguments)
|
||||
{
|
||||
sb.Append(" ");
|
||||
sb.Append(s);
|
||||
}
|
||||
group1.Properties.Add("Exec", sb.ToString());
|
||||
|
||||
group1.Properties.Add("Name", action.Title);
|
||||
group1.Properties.Add("Icon", action.IconFileName);
|
||||
|
||||
plom.Groups.Add(group1);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
|
||||
objectModels.Push(plom);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.DataFormats.Shortcut.FreeDesktop
|
||||
{
|
||||
public enum DesktopShortcutStartupNotifyBehavior
|
||||
{
|
||||
Disabled = 0,
|
||||
Supported = 1,
|
||||
Unsupported = 2
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.DataFormats.Shortcut.FreeDesktop
|
||||
{
|
||||
public enum DesktopShortcutType
|
||||
{
|
||||
InternetLink
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Shortcut
|
||||
{
|
||||
public class ShortcutObjectModel : ObjectModel
|
||||
{
|
||||
private static ObjectModelReference _omr = null;
|
||||
public override ObjectModelReference MakeReference()
|
||||
{
|
||||
if (_omr == null)
|
||||
{
|
||||
_omr = base.MakeReference();
|
||||
_omr.Title = "Shortcut";
|
||||
}
|
||||
return _omr;
|
||||
}
|
||||
|
||||
public override void Clear()
|
||||
{
|
||||
}
|
||||
|
||||
public override void CopyTo(ObjectModel where)
|
||||
{
|
||||
}
|
||||
|
||||
private string mvarComment = String.Empty;
|
||||
/// <summary>
|
||||
/// Tooltip for the entry, for example "View sites on the Internet". The value should not
|
||||
/// be redundant with the shortcut title.
|
||||
/// </summary>
|
||||
public string Comment { get { return mvarComment; } set { mvarComment = value; } }
|
||||
|
||||
private string mvarIconFileName = String.Empty;
|
||||
/// <summary>
|
||||
/// File name or known icon name of the icon to display in the file manager, menus, etc.
|
||||
/// </summary>
|
||||
public string IconFileName { get { return mvarIconFileName; } set { mvarIconFileName = value; } }
|
||||
|
||||
private string mvarExecutableFileName = String.Empty;
|
||||
public string ExecutableFileName { get { return mvarExecutableFileName; } set { mvarExecutableFileName = value; } }
|
||||
|
||||
private System.Collections.Specialized.StringCollection mvarExecutableArguments = new System.Collections.Specialized.StringCollection();
|
||||
public System.Collections.Specialized.StringCollection ExecutableArguments { get { return mvarExecutableArguments; } }
|
||||
|
||||
private string mvarWorkingDirectory = String.Empty;
|
||||
/// <summary>
|
||||
/// The directory in which to run the program, if different than the program's location.
|
||||
/// </summary>
|
||||
public string WorkingDirectory { get { return mvarWorkingDirectory; } set { mvarWorkingDirectory = value; } }
|
||||
|
||||
private bool mvarRunInTerminal = false;
|
||||
/// <summary>
|
||||
/// Whether the program runs in a terminal window.
|
||||
/// </summary>
|
||||
public bool RunInTerminal { get { return mvarRunInTerminal; } set { mvarRunInTerminal = value; } }
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
@ -55,6 +55,10 @@
|
||||
<Compile Include="DataFormats\PropertyList\UniversalPropertyList\VariantType.cs" />
|
||||
<Compile Include="DataFormats\PropertyList\WindowsConfigurationDataFormat.cs" />
|
||||
<Compile Include="DataFormats\PropertyList\XML\XMLPropertyListDataFormat.cs" />
|
||||
<Compile Include="DataFormats\Shortcut\FreeDesktop\DesktopShortcutAction.cs" />
|
||||
<Compile Include="DataFormats\Shortcut\FreeDesktop\DesktopShortcutDataFormat.cs" />
|
||||
<Compile Include="DataFormats\Shortcut\FreeDesktop\DesktopShortcutStartupNotifyBehavior.cs" />
|
||||
<Compile Include="DataFormats\Shortcut\FreeDesktop\DesktopShortcutType.cs" />
|
||||
<Compile Include="ObjectModels\Chunked\ChunkedObjectModel.cs" />
|
||||
<Compile Include="ObjectModels\Chunked\RIFFChunk.cs" />
|
||||
<Compile Include="ObjectModels\Chunked\RIFFDataChunk.cs" />
|
||||
@ -85,6 +89,7 @@
|
||||
<Compile Include="ObjectModels\Project\ProjectFileSystem.cs" />
|
||||
<Compile Include="ObjectModels\Project\ProjectFolder.cs" />
|
||||
<Compile Include="ObjectModels\Project\Reference.cs" />
|
||||
<Compile Include="ObjectModels\Shortcut\ShortcutObjectModel.cs" />
|
||||
<Compile Include="ObjectModels\Solution\SolutionObjectModel.cs" />
|
||||
<Compile Include="ObjectModels\Text\Plain\PlainTextObjectModel.cs" />
|
||||
<Compile Include="ProjectType.cs" />
|
||||
|
||||
@ -1,6 +1,24 @@
|
||||
// Universal Editor DataFormat for loading SPC700 synthesized audio files
|
||||
// Copyright (C) 2014 Mike Becker's Software
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; either version 2
|
||||
// of the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
using System;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.Multimedia.Audio.Synthesized;
|
||||
|
||||
namespace UniversalEditor.DataFormats.Multimedia.Audio.Synthesized.SPC
|
||||
{
|
||||
public class SPC700DataFormat : DataFormat
|
||||
@ -10,12 +28,12 @@ namespace UniversalEditor.DataFormats.Multimedia.Audio.Synthesized.SPC
|
||||
DataFormatReference dfr = base.MakeReference();
|
||||
dfr.Filters.Add("SNES-SPC700 sound file", new byte?[][] { new byte?[] { (byte)'S', (byte)'N', (byte)'E', (byte)'S', (byte)'-', (byte)'S', (byte)'P', (byte)'C', (byte)'7', (byte)'0', (byte)'0', (byte)' ', (byte)'S', (byte)'o', (byte)'u', (byte)'n', (byte)'d', (byte)' ', (byte)'F', (byte)'i', (byte)'l', (byte)'e', (byte)' ', (byte)'D', (byte)'a', (byte)'t', (byte)'a' } }, new string[] { "*.spc" });
|
||||
dfr.Capabilities.Add(typeof(SynthesizedAudioObjectModel), DataFormatCapabilities.All);
|
||||
|
||||
dfr.ExportOptions.Add(new CustomOptionChoice("Generator", "&Generator:", true,
|
||||
new CustomOptionFieldChoice("Unknown", SPC700Emulator.Unknown, true),
|
||||
new CustomOptionFieldChoice("ZSNES", SPC700Emulator.ZSNES),
|
||||
new CustomOptionFieldChoice("Snes9x", SPC700Emulator.Snes9x)
|
||||
));
|
||||
|
||||
dfr.ExportOptions.Add(new CustomOptionChoice("Generator", "&Generator:", true,
|
||||
new CustomOptionFieldChoice("Unknown", SPC700Emulator.Unknown, true),
|
||||
new CustomOptionFieldChoice("ZSNES", SPC700Emulator.ZSNES),
|
||||
new CustomOptionFieldChoice("Snes9x", SPC700Emulator.Snes9x)
|
||||
));
|
||||
|
||||
return dfr;
|
||||
}
|
||||
@ -25,19 +43,19 @@ namespace UniversalEditor.DataFormats.Multimedia.Audio.Synthesized.SPC
|
||||
private byte mvarID666DefaultChannelDisables = 0;
|
||||
public byte ID666DefaultChannelDisables { get { return mvarID666DefaultChannelDisables; } set { mvarID666DefaultChannelDisables = value; } }
|
||||
|
||||
private SPC700Emulator mvarGenerator = SPC700Emulator.Unknown;
|
||||
/// <summary>
|
||||
/// The emulator that generated this file.
|
||||
/// </summary>
|
||||
public SPC700Emulator Generator { get { return mvarGenerator; } set { mvarGenerator = value; } }
|
||||
private SPC700Emulator mvarGenerator = SPC700Emulator.Unknown;
|
||||
/// <summary>
|
||||
/// The emulator that generated this file.
|
||||
/// </summary>
|
||||
public SPC700Emulator Generator { get { return mvarGenerator; } set { mvarGenerator = value; } }
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
SynthesizedAudioObjectModel au = (objectModel as SynthesizedAudioObjectModel);
|
||||
|
||||
Reader br = base.Accessor.Reader;
|
||||
Reader br = base.Accessor.Reader;
|
||||
string fileHeader = br.ReadFixedLengthString(33);
|
||||
if (!fileHeader.StartsWith("SNES-SPC700 Sound File Data")) throw new InvalidDataFormatException("File does not begin with \"SNES-SPC700 Sound File Data\"");
|
||||
if (!fileHeader.StartsWith("SNES-SPC700 Sound File Data")) throw new InvalidDataFormatException("File does not begin with \"SNES-SPC700 Sound File Data\"");
|
||||
|
||||
byte[] flags = br.ReadBytes(2u);
|
||||
byte hasID666Value = br.ReadByte();
|
||||
@ -62,7 +80,7 @@ namespace UniversalEditor.DataFormats.Multimedia.Audio.Synthesized.SPC
|
||||
au.Information.FadeOutLength = int.Parse(br.ReadNullTerminatedString(5));
|
||||
au.Information.SongArtist = br.ReadNullTerminatedString(32);
|
||||
this.mvarID666DefaultChannelDisables = br.ReadByte();
|
||||
mvarGenerator = (SPC700Emulator)br.ReadByte();
|
||||
mvarGenerator = (SPC700Emulator)br.ReadByte();
|
||||
byte[] id666Reserved = br.ReadBytes(45u);
|
||||
this.mvarID666Reserved = id666Reserved;
|
||||
}
|
||||
@ -118,7 +136,7 @@ namespace UniversalEditor.DataFormats.Multimedia.Audio.Synthesized.SPC
|
||||
arg_17A_0.WriteFixedLengthString(num.ToString(), 5);
|
||||
bw.WriteFixedLengthString(au.Information.SongArtist, 32);
|
||||
bw.WriteByte(mvarID666DefaultChannelDisables);
|
||||
bw.WriteByte((byte)mvarGenerator);
|
||||
bw.WriteByte((byte)mvarGenerator);
|
||||
|
||||
bw.WriteFixedLengthBytes(this.mvarID666Reserved, 45);
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// one line to give the program's name and an idea of what it does.
|
||||
// Copyright (C) yyyy name of author
|
||||
// Universal Editor DataFormat for loading SPC700 synthesized audio files
|
||||
// Copyright (C) 2014 Mike Becker's Software
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// one line to give the program's name and an idea of what it does.
|
||||
// Copyright (C) 2010 Mike Becker
|
||||
// Universal Editor DataFormat for loading SPC700 synthesized audio files
|
||||
// Copyright (C) 2014 Mike Becker's Software
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// one line to give the program's name and an idea of what it does.
|
||||
// Copyright (C) yyyy name of author
|
||||
// Universal Editor DataFormat for loading SPC700 synthesized audio files
|
||||
// Copyright (C) 2014 Mike Becker's Software
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// one line to give the program's name and an idea of what it does.
|
||||
// Copyright (C) yyyy name of author
|
||||
// Universal Editor DataFormat for loading SPC700 synthesized audio files
|
||||
// Copyright (C) 2014 Mike Becker's Software
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// one line to give the program's name and an idea of what it does.
|
||||
// Copyright (C) yyyy name of author
|
||||
// Universal Editor DataFormat for loading SPC700 synthesized audio files
|
||||
// Copyright (C) 2014 Mike Becker's Software
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
|
||||
@ -0,0 +1,143 @@
|
||||
// Universal Editor DataFormat for loading SPC2 synthesized audio files
|
||||
// Copyright (C) 2014 Mike Becker's Software
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; either version 2
|
||||
// of the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.DataFormats.Multimedia.Audio.Synthesized.SPC;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
using UniversalEditor.ObjectModels.Multimedia.AudioCollection.Synthesized;
|
||||
|
||||
namespace UniversalEditor.DataFormats.Multimedia.AudioCollection.Synthesized.SPC2
|
||||
{
|
||||
public class SPC2DataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(SynthesizedAudioCollectionObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.ImportOptions.Add(new CustomOptionBoolean("UseID666TagInformationIfAvailable", "Use &ID666 tag information if available"));
|
||||
_dfr.ExportOptions.Add(new CustomOptionBoolean("IncludeID666TagInformation", "Include &ID666 tag information in output file"));
|
||||
_dfr.Filters.Add("K.Horton's KSPC/SPC2 audio file", new byte?[][] { new byte?[] { (byte)'K', (byte)'S', (byte)'P', (byte)'C', (byte)0x1A } }, new string[] { "*.kspc" });
|
||||
_dfr.Sources.Add("http://blog.kevtris.org/blogfiles/spc2_file_specification_v1.txt");
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
private bool mvarUseID666TagInformationIfAvailable = false;
|
||||
public bool UseID666TagInformationIfAvailable { get { return mvarUseID666TagInformationIfAvailable; } set { mvarUseID666TagInformationIfAvailable = value; } }
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
SynthesizedAudioCollectionObjectModel coll = (objectModel as SynthesizedAudioCollectionObjectModel);
|
||||
if (coll == null) throw new ObjectModelNotSupportedException();
|
||||
|
||||
Reader reader = base.Accessor.Reader;
|
||||
string signature = reader.ReadFixedLengthString(4);
|
||||
byte x1A = reader.ReadByte();
|
||||
if (signature != "KSPC" || x1A != 0x1A) throw new InvalidDataFormatException("File does not begin with 'KSPC', 0x1A");
|
||||
|
||||
byte versionMajor = reader.ReadByte();
|
||||
byte versionMinor = reader.ReadByte();
|
||||
|
||||
ushort fileCount = reader.ReadUInt16();
|
||||
byte[] expansion = reader.ReadBytes(7);
|
||||
|
||||
for (ushort i = 0; i < fileCount; i++)
|
||||
{
|
||||
// Each SPC data block has this format
|
||||
for (int j = 0; j < 256; j++)
|
||||
{
|
||||
// Offsets for all 256, 256 byte blocks of data in RAM
|
||||
ushort dataBlockRAMOffset = reader.ReadUInt16();
|
||||
}
|
||||
|
||||
// DSP register data (as-is from .SPC)
|
||||
byte[] dspRegisterData = reader.ReadBytes(128);
|
||||
|
||||
// IPL ROM (as-is from .SPC)
|
||||
byte[] iplROM = reader.ReadBytes(64);
|
||||
|
||||
// PCL, PCH, A, X, Y, PSW, SP (as-is from .SPC)
|
||||
byte registerPCL = reader.ReadByte();
|
||||
byte registerPCH = reader.ReadByte();
|
||||
byte registerA = reader.ReadByte();
|
||||
byte registerX = reader.ReadByte();
|
||||
byte registerY = reader.ReadByte();
|
||||
byte registerPSW = reader.ReadByte();
|
||||
byte registerSP = reader.ReadByte();
|
||||
|
||||
// channel enable bits, 1 per chan (0 = en, 1 = dis) (as-is)
|
||||
byte channelEnableBits = reader.ReadByte();
|
||||
|
||||
// stored as four bytes, in mm/dd/yyyy as BCD, like so:
|
||||
// 01h, 12h, 20h, 00h would be 01/12/2000
|
||||
// 07h, 30h, 19h, 95h would be 07/30/1995
|
||||
byte[] dateParts = reader.ReadBytes(4);
|
||||
DateTime date = new DateTime
|
||||
(
|
||||
Int32.Parse(dateParts[2].ToString("X").PadLeft(2, '0') + dateParts[3].ToString("X").PadLeft(2, '0')),
|
||||
Int32.Parse(dateParts[0].ToString("X").PadLeft(2, '0')),
|
||||
Int32.Parse(dateParts[1].ToString("X").PadLeft(2, '0'))
|
||||
);
|
||||
|
||||
// 1/64000th's to play before fadeout
|
||||
uint fadeoutDelay = reader.ReadUInt32();
|
||||
// 1/64000th's to fade to silence
|
||||
uint fadeoutLength = reader.ReadUInt32();
|
||||
|
||||
// amplification value (10000h == 1.00)
|
||||
uint iAmplificationValue = reader.ReadUInt32();
|
||||
double amplificationValue = (double)iAmplificationValue * 0.00001;
|
||||
|
||||
SPC700Emulator emulator = (SPC700Emulator)reader.ReadByte();
|
||||
|
||||
byte ostDisk = reader.ReadByte();
|
||||
byte ostTrackNumber = reader.ReadByte();
|
||||
|
||||
ushort copyrightYear = reader.ReadUInt16();
|
||||
|
||||
byte[] unused = reader.ReadBytes(34);
|
||||
|
||||
SynthesizedAudioCollectionTrack track = new SynthesizedAudioCollectionTrack();
|
||||
track.SongTitle = reader.ReadFixedLengthString(32).TrimNull().Trim();
|
||||
track.GameTitle = reader.ReadFixedLengthString(32).TrimNull().Trim();
|
||||
track.ArtistName = reader.ReadFixedLengthString(32).TrimNull().Trim();
|
||||
track.DumperName = reader.ReadFixedLengthString(32).TrimNull().Trim();
|
||||
track.Comments = reader.ReadFixedLengthString(32).TrimNull().Trim();
|
||||
track.AlbumTitle = reader.ReadFixedLengthString(32).TrimNull().Trim();
|
||||
track.PublisherName = reader.ReadFixedLengthString(32).TrimNull().Trim();
|
||||
track.OriginalFileName = reader.ReadFixedLengthString(28).TrimNull().Trim();
|
||||
|
||||
uint extendedDataBlockOffset = reader.ReadUInt32();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
SynthesizedAudioCollectionObjectModel coll = (objectModel as SynthesizedAudioCollectionObjectModel);
|
||||
if (coll == null) throw new ObjectModelNotSupportedException();
|
||||
|
||||
Writer writer = base.Accessor.Writer;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Multimedia.Audio.Voicebank
|
||||
{
|
||||
public class Phoneme
|
||||
{
|
||||
public class PhonemeCollection
|
||||
: System.Collections.ObjectModel.Collection<Phoneme>
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private string mvarTitle = String.Empty;
|
||||
public string Title { get { return mvarTitle; } set { mvarTitle = value; } }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Multimedia.Audio.Voicebank
|
||||
{
|
||||
public class PhonemeGroup
|
||||
{
|
||||
public class PhonemeGroupCollection
|
||||
: System.Collections.ObjectModel.Collection<PhonemeGroup>
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private string mvarTitle = String.Empty;
|
||||
public string Title { get { return mvarTitle; } set { mvarTitle = value; } }
|
||||
|
||||
private Phoneme.PhonemeCollection mvarPhonemes = new Phoneme.PhonemeCollection();
|
||||
public Phoneme.PhonemeCollection Phonemes { get { return mvarPhonemes; } }
|
||||
}
|
||||
}
|
||||
@ -14,20 +14,20 @@ namespace UniversalEditor.ObjectModels.Multimedia.Audio.Voicebank
|
||||
{
|
||||
ObjectModelReference omr = base.MakeReference();
|
||||
omr.Title = "Synthesized audio voice bank";
|
||||
omr.Path = new string[] { "Multimedia", "Audio", "Voicebank" };
|
||||
return omr;
|
||||
omr.Path = new string[] { "Multimedia", "Audio", "Voicebank" };
|
||||
return omr;
|
||||
}
|
||||
|
||||
public override void Clear()
|
||||
{
|
||||
mvarBankSelect = 0;
|
||||
mvarCreatorVersion = new Version(1, 0);
|
||||
mvarID = String.Empty;
|
||||
mvarInstallationPath = String.Empty;
|
||||
mvarProgramChange = 0;
|
||||
mvarSamples.Clear();
|
||||
mvarSynthesisParameters.Clear();
|
||||
}
|
||||
public override void Clear()
|
||||
{
|
||||
mvarBankSelect = 0;
|
||||
mvarCreatorVersion = new Version(1, 0);
|
||||
mvarID = String.Empty;
|
||||
mvarInstallationPath = String.Empty;
|
||||
mvarProgramChange = 0;
|
||||
mvarSamples.Clear();
|
||||
mvarSynthesisParameters.Clear();
|
||||
}
|
||||
|
||||
private int mvarBankSelect = 0;
|
||||
public int BankSelect { get { return mvarBankSelect; } set { mvarBankSelect = value; } }
|
||||
@ -38,6 +38,9 @@ namespace UniversalEditor.ObjectModels.Multimedia.Audio.Voicebank
|
||||
private string mvarID = string.Empty;
|
||||
public string ID { get { return mvarID; } set { mvarID = value; } }
|
||||
|
||||
private PhonemeGroup.PhonemeGroupCollection mvarPhonemeGroups = new PhonemeGroup.PhonemeGroupCollection();
|
||||
public PhonemeGroup.PhonemeGroupCollection PhonemeGroups { get { return mvarPhonemeGroups; } }
|
||||
|
||||
private VoicebankSynthesisParameters mvarSynthesisParameters = new VoicebankSynthesisParameters();
|
||||
public VoicebankSynthesisParameters SynthesisParameters { get { return mvarSynthesisParameters; } }
|
||||
|
||||
@ -56,7 +59,7 @@ namespace UniversalEditor.ObjectModels.Multimedia.Audio.Voicebank
|
||||
public override void CopyTo(ObjectModel destination)
|
||||
{
|
||||
VoicebankObjectModel clone = (destination as VoicebankObjectModel);
|
||||
if (clone == null) return;
|
||||
if (clone == null) return;
|
||||
|
||||
foreach (VoicebankSample phoneme in this.mvarSamples)
|
||||
{
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.Multimedia.Audio.Synthesized;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Multimedia.AudioCollection.Synthesized
|
||||
{
|
||||
public class SynthesizedAudioCollectionObjectModel : ObjectModel
|
||||
{
|
||||
private static ObjectModelReference _omr = null;
|
||||
public override ObjectModelReference MakeReference()
|
||||
{
|
||||
if (_omr == null)
|
||||
{
|
||||
_omr = base.MakeReference();
|
||||
_omr.Title = "Synthesized audio collection";
|
||||
}
|
||||
return _omr;
|
||||
}
|
||||
|
||||
private SynthesizedAudioCollectionTrack.SynthesizedAudioCollectionTrackCollection mvarTracks = new SynthesizedAudioCollectionTrack.SynthesizedAudioCollectionTrackCollection();
|
||||
public SynthesizedAudioCollectionTrack.SynthesizedAudioCollectionTrackCollection Tracks { get { return mvarTracks; } }
|
||||
|
||||
public override void Clear()
|
||||
{
|
||||
mvarTracks.Clear();
|
||||
}
|
||||
|
||||
public override void CopyTo(ObjectModel where)
|
||||
{
|
||||
SynthesizedAudioCollectionObjectModel clone = (where as SynthesizedAudioCollectionObjectModel);
|
||||
foreach (SynthesizedAudioCollectionTrack track in mvarTracks)
|
||||
{
|
||||
clone.Tracks.Add(track.Clone() as SynthesizedAudioCollectionTrack);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.Multimedia.Audio.Synthesized;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Multimedia.AudioCollection.Synthesized
|
||||
{
|
||||
public class SynthesizedAudioCollectionTrack : ICloneable
|
||||
{
|
||||
public class SynthesizedAudioCollectionTrackCollection
|
||||
: System.Collections.ObjectModel.Collection<SynthesizedAudioCollectionTrack>
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private string mvarSongTitle = String.Empty;
|
||||
public string SongTitle { get { return mvarSongTitle; } set { mvarSongTitle = value; } }
|
||||
|
||||
private string mvarGameTitle = String.Empty;
|
||||
public string GameTitle { get { return mvarGameTitle; } set { mvarGameTitle = value; } }
|
||||
|
||||
private string mvarArtistName = String.Empty;
|
||||
public string ArtistName { get { return mvarArtistName; } set { mvarArtistName = value; } }
|
||||
|
||||
private string mvarDumperName = String.Empty;
|
||||
public string DumperName { get { return mvarDumperName; } set { mvarDumperName = value; } }
|
||||
|
||||
private string mvarComments = String.Empty;
|
||||
public string Comments { get { return mvarComments; } set { mvarComments = value; } }
|
||||
|
||||
private string mvarAlbumTitle = String.Empty;
|
||||
public string AlbumTitle { get { return mvarAlbumTitle; } set { mvarAlbumTitle = value; } }
|
||||
|
||||
private string mvarPublisherName = String.Empty;
|
||||
public string PublisherName { get { return mvarPublisherName; } set { mvarPublisherName = value; } }
|
||||
|
||||
private string mvarOriginalFileName = String.Empty;
|
||||
public string OriginalFileName { get { return mvarOriginalFileName; } set { mvarOriginalFileName = value; } }
|
||||
|
||||
private SynthesizedAudioObjectModel mvarObjectModel = null;
|
||||
public SynthesizedAudioObjectModel ObjectModel { get { return mvarObjectModel; } }
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}</ProjectGuid>
|
||||
@ -70,6 +70,7 @@
|
||||
<Compile Include="DataFormats\Multimedia\Audio\Synthesized\ExtendedMIDI\XMIDataFormat.cs" />
|
||||
<Compile Include="DataFormats\Multimedia\Audio\Synthesized\PSF\PSFDataFormat.cs" />
|
||||
<Compile Include="DataFormats\Multimedia\Audio\Synthesized\PSF\PSFPlatform.cs" />
|
||||
<Compile Include="DataFormats\Multimedia\AudioCollection\Synthesized\SPC2\SPC2DataFormat.cs" />
|
||||
<Compile Include="DataFormats\Multimedia\Audio\Synthesized\SPC\SPC700Emulator.cs" />
|
||||
<Compile Include="DataFormats\Multimedia\Audio\Synthesized\SPC\SPC700ExtendedID666Tag.cs" />
|
||||
<Compile Include="DataFormats\Multimedia\Audio\Synthesized\SPC\SPC700ID666Tag.cs" />
|
||||
@ -137,6 +138,8 @@
|
||||
<Compile Include="DataFormats\Multimedia\Video\UVS\UVSFlags.cs" />
|
||||
<Compile Include="DataFormats\Multimedia\Video\UVS\UVSLayoutID.cs" />
|
||||
<Compile Include="ExtensionMethods.cs" />
|
||||
<Compile Include="ObjectModels\Multimedia\AudioCollection\Synthesized\SynthesizedAudioCollectionObjectModel.cs" />
|
||||
<Compile Include="ObjectModels\Multimedia\AudioCollection\Synthesized\SynthesizedAudioCollectionTrack.cs" />
|
||||
<Compile Include="ObjectModels\Multimedia\Audio\AudioObjectModel.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
@ -184,6 +187,8 @@
|
||||
<Compile Include="ObjectModels\Multimedia\Audio\VoicebankPhonemeDictionary\Phoneme.cs" />
|
||||
<Compile Include="ObjectModels\Multimedia\Audio\VoicebankPhonemeDictionary\PhonemeDictionaryObjectModel.cs" />
|
||||
<Compile Include="ObjectModels\Multimedia\Audio\VoicebankPhonemeDictionary\PhonemeList.cs" />
|
||||
<Compile Include="ObjectModels\Multimedia\Audio\Voicebank\Phoneme.cs" />
|
||||
<Compile Include="ObjectModels\Multimedia\Audio\Voicebank\PhonemeGroup.cs" />
|
||||
<Compile Include="ObjectModels\Multimedia\Audio\Voicebank\VoicebankObjectModel.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user