Started working on Tag Explorer plugin
|
@ -283,6 +283,10 @@
|
|||
<param name="Name" value="UDMF Controls plugin">
|
||||
<param name="Local" value="gz_plug_udmfcontrols.html">
|
||||
</OBJECT>
|
||||
<LI> <OBJECT type="text/sitemap">
|
||||
<param name="Name" value="Tag Explorer plugin">
|
||||
<param name="Local" value="gz_plug_tagexplorer.html">
|
||||
</OBJECT>
|
||||
</UL>
|
||||
<LI> <OBJECT type="text/sitemap">
|
||||
<param name="Name" value="Frequently asked questions">
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
<li>PNG image format support.</li>
|
||||
<li><a href="gz_plug_colorpicker.html">Color Picker plugin.</a></li>
|
||||
<li><a href="gz_plug_udmfcontrols.html">UDMF Controls plugin.</a></li>
|
||||
<li><a href="gz_plug_tagexplorer.html">Tag Explorer plugin.</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
|
|
25
Help/gz_plug_tagexplorer.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
|
||||
<title>GZDoom Builder features</title>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
|
||||
<link rel="stylesheet" type="text/css" href="default.css" media="screen" title="Default" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||||
<param name="keyword" value="Template">
|
||||
</object>
|
||||
|
||||
<div id="gz_title"><h1>Tag Explorer plugin</h1></div>
|
||||
|
||||
<div id="contents">
|
||||
<p><img style="float:left; margin-right:10px" src="gz_colorpicker.jpg"/>Tag Explorer plugin lets you view all things, sectors and linedefs, which have tags and/or actions/effects set. If current map is in UDMF map format, it also allows you to edit things, sectors and linedefs comments and search an item by a comment.<br /><br />
|
||||
<strong>Usage:</strong><br />
|
||||
Right-click an item to open appropriate Edit menu.<br />
|
||||
Double-click an item to edit comment (UDMF-only). Remove comment text to clear comment.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
|
@ -21,6 +21,7 @@
|
|||
</br>
|
||||
<a href="gz_plug_colorpicker.html">Color Picker plugin.</a></br>
|
||||
<a href="gz_plug_udmfcontrols.html">UDMF Controls plugin.</a></br>
|
||||
<a href="gz_plug_tagexplorer.html">Tag Explorer plugin.</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -7,6 +7,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuilderModes", "..\Plugins\
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GZDoomEditing", "..\Plugins\GZDoomEditing\GZDoomEditing.csproj", "{760A9BC7-CB73-4C36-858B-994C14996FCD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommentsPanel", "..\Plugins\CommentsPanel\CommentsPanel.csproj", "{58BD8A5B-1B48-435D-8473-A92F27D06C49}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagExplorer", "..\Plugins\TagExplorer\TagExplorer.csproj", "{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
@ -47,6 +51,26 @@ Global
|
|||
{760A9BC7-CB73-4C36-858B-994C14996FCD}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{760A9BC7-CB73-4C36-858B-994C14996FCD}.Release|x86.ActiveCfg = Release|x86
|
||||
{760A9BC7-CB73-4C36-858B-994C14996FCD}.Release|x86.Build.0 = Release|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Debug|x86.Build.0 = Debug|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Release|x86.ActiveCfg = Release|x86
|
||||
{58BD8A5B-1B48-435D-8473-A92F27D06C49}.Release|x86.Build.0 = Release|x86
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
@ -30,7 +30,7 @@ namespace CodeImp.DoomBuilder.GZBuilder
|
|||
public static bool UDMF;
|
||||
|
||||
//version
|
||||
public const float Version = 1.09f;
|
||||
public const float Version = 1.10f;
|
||||
|
||||
//debug console
|
||||
#if DEBUG
|
||||
|
|
|
@ -85,5 +85,8 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
void RenderText(TextLabel text);
|
||||
void RenderGeometry(FlatVertex[] vertices, ImageData texture, bool transformcoords);
|
||||
void RedrawSurface();
|
||||
|
||||
//mxd. Center camera on given coordinates
|
||||
void PositionView(float x, float y);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,6 +77,7 @@
|
|||
<ProjectReference Include="..\..\Core\Builder.csproj">
|
||||
<Project>{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}</Project>
|
||||
<Name>Builder</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
93
Source/Plugins/TagExplorer/BuilderPlug.cs
Normal file
|
@ -0,0 +1,93 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
using CodeImp.DoomBuilder.Config;
|
||||
using CodeImp.DoomBuilder.Controls;
|
||||
using CodeImp.DoomBuilder.Editing;
|
||||
using CodeImp.DoomBuilder.Plugins;
|
||||
|
||||
namespace CodeImp.DoomBuilder.TagExplorer
|
||||
{
|
||||
public class BuilderPlug : Plug
|
||||
{
|
||||
private static BuilderPlug me;
|
||||
|
||||
// Docker
|
||||
private TagExplorer tagExplorer;
|
||||
private Docker docker;
|
||||
|
||||
// Static property to access the BuilderPlug
|
||||
public static BuilderPlug Me { get { return me; } }
|
||||
|
||||
// This event is called when the plugin is initialized
|
||||
public override void OnInitialize() {
|
||||
if (GZBuilder.GZGeneral.Version < 1.10f) {
|
||||
General.ErrorLogger.Add(ErrorType.Error, "Tag Explorer plugin: GZDoom Builder 1.10 or later required!");
|
||||
return;
|
||||
}
|
||||
|
||||
base.OnInitialize();
|
||||
|
||||
// Keep a static reference
|
||||
me = this;
|
||||
}
|
||||
|
||||
// When a map is created
|
||||
public override void OnMapNewEnd() {
|
||||
OnMapOpenEnd();
|
||||
}
|
||||
|
||||
// This is called after a map has been successfully opened
|
||||
public override void OnMapOpenEnd() {
|
||||
// If we just opened a UDMF format map, we want to create the Tag Explorer panel
|
||||
if (General.Map.Config.FormatInterface == "UniversalMapSetIO") {
|
||||
tagExplorer = new TagExplorer();
|
||||
docker = new Docker("tagexplorerdockerpanel", "Tag Explorer", tagExplorer);
|
||||
General.Interface.AddDocker(docker);
|
||||
tagExplorer.Setup();
|
||||
}
|
||||
}
|
||||
|
||||
// This is called after a map has been closed
|
||||
public override void OnMapCloseEnd() {
|
||||
// If we have a Comments panel, remove it
|
||||
if (tagExplorer != null) {
|
||||
General.Interface.RemoveDocker(docker);
|
||||
docker = null;
|
||||
tagExplorer.Dispose();
|
||||
tagExplorer = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Geometry pasted
|
||||
public override void OnPasteEnd(PasteOptions options) {
|
||||
if (tagExplorer != null) {
|
||||
tagExplorer.UpdateTree();
|
||||
}
|
||||
}
|
||||
|
||||
// Undo performed
|
||||
public override void OnUndoEnd() {
|
||||
if (tagExplorer != null) {
|
||||
tagExplorer.UpdateTree();
|
||||
}
|
||||
}
|
||||
|
||||
// Redo performed
|
||||
public override void OnRedoEnd() {
|
||||
if (tagExplorer != null) {
|
||||
tagExplorer.UpdateTree();
|
||||
}
|
||||
}
|
||||
|
||||
// Mode changes
|
||||
/*public override bool OnModeChange(EditMode oldmode, EditMode newmode) {
|
||||
if (tagExplorer != null) {
|
||||
tagExplorer.UpdateTree();
|
||||
}
|
||||
|
||||
return base.OnModeChange(oldmode, newmode);
|
||||
}*/
|
||||
}
|
||||
}
|
198
Source/Plugins/TagExplorer/Controls/TagExplorer.Designer.cs
generated
Normal file
|
@ -0,0 +1,198 @@
|
|||
namespace CodeImp.DoomBuilder.TagExplorer
|
||||
{
|
||||
partial class TagExplorer
|
||||
{
|
||||
/// <summary>
|
||||
/// Требуется переменная конструктора.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Код, автоматически созданный конструктором компонентов
|
||||
|
||||
/// <summary>
|
||||
/// Обязательный метод для поддержки конструктора - не изменяйте
|
||||
/// содержимое данного метода при помощи редактора кода.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TagExplorer));
|
||||
this.treeView = new System.Windows.Forms.TreeView();
|
||||
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
|
||||
this.cbDisplayMode = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.cbSortMode = new System.Windows.Forms.ComboBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.cbCenterOnSelected = new System.Windows.Forms.CheckBox();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.btnClearSearch = new System.Windows.Forms.Button();
|
||||
this.tbSearch = new System.Windows.Forms.TextBox();
|
||||
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// treeView
|
||||
//
|
||||
this.treeView.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.treeView.ImageIndex = 0;
|
||||
this.treeView.ImageList = this.imageList1;
|
||||
this.treeView.Location = new System.Drawing.Point(3, 125);
|
||||
this.treeView.Name = "treeView";
|
||||
this.treeView.SelectedImageIndex = 0;
|
||||
this.treeView.Size = new System.Drawing.Size(266, 415);
|
||||
this.treeView.TabIndex = 0;
|
||||
this.toolTip1.SetToolTip(this.treeView, "Double-click item to edit item\'s comment\r\nRight-click item to open item\'s Propert" +
|
||||
"ies");
|
||||
this.treeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView_NodeMouseDoubleClick);
|
||||
this.treeView.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.treeView_AfterLabelEdit);
|
||||
this.treeView.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView_NodeMouseClick);
|
||||
//
|
||||
// imageList1
|
||||
//
|
||||
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
|
||||
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imageList1.Images.SetKeyName(0, "ThingsGroup.png");
|
||||
this.imageList1.Images.SetKeyName(1, "Things.png");
|
||||
this.imageList1.Images.SetKeyName(2, "SectorsGroup.png");
|
||||
this.imageList1.Images.SetKeyName(3, "Sectors.png");
|
||||
this.imageList1.Images.SetKeyName(4, "LinesGroup.png");
|
||||
this.imageList1.Images.SetKeyName(5, "Lines.png");
|
||||
//
|
||||
// cbDisplayMode
|
||||
//
|
||||
this.cbDisplayMode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cbDisplayMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbDisplayMode.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.cbDisplayMode.Location = new System.Drawing.Point(88, 13);
|
||||
this.cbDisplayMode.Name = "cbDisplayMode";
|
||||
this.cbDisplayMode.Size = new System.Drawing.Size(172, 22);
|
||||
this.cbDisplayMode.TabIndex = 2;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label1.Location = new System.Drawing.Point(43, 16);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(39, 14);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "Show:";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// cbSortMode
|
||||
//
|
||||
this.cbSortMode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cbSortMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbSortMode.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.cbSortMode.Location = new System.Drawing.Point(88, 40);
|
||||
this.cbSortMode.Name = "cbSortMode";
|
||||
this.cbSortMode.Size = new System.Drawing.Size(172, 22);
|
||||
this.cbSortMode.TabIndex = 4;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label2.Location = new System.Drawing.Point(52, 43);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(30, 14);
|
||||
this.label2.TabIndex = 5;
|
||||
this.label2.Text = "Sort:";
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// cbCenterOnSelected
|
||||
//
|
||||
this.cbCenterOnSelected.AutoSize = true;
|
||||
this.cbCenterOnSelected.Location = new System.Drawing.Point(12, 94);
|
||||
this.cbCenterOnSelected.Name = "cbCenterOnSelected";
|
||||
this.cbCenterOnSelected.Size = new System.Drawing.Size(203, 17);
|
||||
this.cbCenterOnSelected.TabIndex = 6;
|
||||
this.cbCenterOnSelected.Text = "Center view on selected map element";
|
||||
this.cbCenterOnSelected.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox1.Controls.Add(this.label3);
|
||||
this.groupBox1.Controls.Add(this.btnClearSearch);
|
||||
this.groupBox1.Controls.Add(this.tbSearch);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
this.groupBox1.Controls.Add(this.cbCenterOnSelected);
|
||||
this.groupBox1.Controls.Add(this.cbDisplayMode);
|
||||
this.groupBox1.Controls.Add(this.label2);
|
||||
this.groupBox1.Controls.Add(this.cbSortMode);
|
||||
this.groupBox1.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(266, 116);
|
||||
this.groupBox1.TabIndex = 7;
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label3.Location = new System.Drawing.Point(9, 71);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(76, 14);
|
||||
this.label3.TabIndex = 9;
|
||||
this.label3.Text = "Find comment:";
|
||||
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// btnClearSearch
|
||||
//
|
||||
this.btnClearSearch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnClearSearch.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.btnClearSearch.Image = global::CodeImp.DoomBuilder.TagExplorer.Properties.Resources.SearchClear;
|
||||
this.btnClearSearch.Location = new System.Drawing.Point(236, 66);
|
||||
this.btnClearSearch.Name = "btnClearSearch";
|
||||
this.btnClearSearch.Size = new System.Drawing.Size(24, 24);
|
||||
this.btnClearSearch.TabIndex = 8;
|
||||
this.toolTip1.SetToolTip(this.btnClearSearch, "Clear Search");
|
||||
this.btnClearSearch.UseVisualStyleBackColor = true;
|
||||
this.btnClearSearch.Click += new System.EventHandler(this.btnClearSearch_Click);
|
||||
//
|
||||
// tbSearch
|
||||
//
|
||||
this.tbSearch.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbSearch.Location = new System.Drawing.Point(88, 68);
|
||||
this.tbSearch.Name = "tbSearch";
|
||||
this.tbSearch.Size = new System.Drawing.Size(144, 20);
|
||||
this.tbSearch.TabIndex = 7;
|
||||
this.tbSearch.TextChanged += new System.EventHandler(this.tbSearch_TextChanged);
|
||||
//
|
||||
// TagExplorer
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.treeView);
|
||||
this.Name = "TagExplorer";
|
||||
this.Size = new System.Drawing.Size(272, 543);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TreeView treeView;
|
||||
private System.Windows.Forms.ComboBox cbDisplayMode;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox cbSortMode;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ImageList imageList1;
|
||||
private System.Windows.Forms.CheckBox cbCenterOnSelected;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.ToolTip toolTip1;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Button btnClearSearch;
|
||||
private System.Windows.Forms.TextBox tbSearch;
|
||||
}
|
||||
}
|
486
Source/Plugins/TagExplorer/Controls/TagExplorer.cs
Normal file
|
@ -0,0 +1,486 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using CodeImp.DoomBuilder.Map;
|
||||
using CodeImp.DoomBuilder.Types;
|
||||
|
||||
namespace CodeImp.DoomBuilder.TagExplorer
|
||||
{
|
||||
public partial class TagExplorer : UserControl
|
||||
{
|
||||
private const string DISPLAY_TAGS_AND_ACTIONS = "Tags and Actions";
|
||||
private const string DISPLAY_TAGS = "Tags";
|
||||
private const string DISPLAY_ACTIONS = "Actions";
|
||||
private object[] DISPLAY_MODES = new object[] { DISPLAY_TAGS_AND_ACTIONS, DISPLAY_TAGS, DISPLAY_ACTIONS };
|
||||
|
||||
private const string SORT_BY_INDEX = "By Index";
|
||||
private const string SORT_BY_TAG = "By Tag";
|
||||
private const string SORT_BY_ACTION = "By Action";
|
||||
private object[] SORT_MODES = new object[] { SORT_BY_INDEX, SORT_BY_TAG, SORT_BY_ACTION };
|
||||
|
||||
private const string CAT_THINGS = "Things:";
|
||||
private const string CAT_SECTORS = "Sectors:";
|
||||
private const string CAT_LINEDEFS = "Linedefs:";
|
||||
private object[] CATEGORIES = new object[] { CAT_THINGS, CAT_SECTORS, CAT_LINEDEFS };
|
||||
|
||||
private const string defaultThingName = "Thing";
|
||||
private const string defaultSectorName = "Sector";
|
||||
private const string defaultLinedefName = "Linedef";
|
||||
|
||||
private Color commentColor = Color.DarkMagenta;
|
||||
|
||||
public TagExplorer() {
|
||||
InitializeComponent();
|
||||
|
||||
treeView.LabelEdit = true;
|
||||
|
||||
cbDisplayMode.Items.AddRange(DISPLAY_MODES);
|
||||
cbDisplayMode.SelectedIndex = General.Settings.ReadPluginSetting("displaymode", 0);
|
||||
cbDisplayMode.SelectedIndexChanged += new EventHandler(cbDisplayMode_SelectedIndexChanged);
|
||||
|
||||
cbSortMode.Items.AddRange(SORT_MODES);
|
||||
cbSortMode.SelectedIndex = General.Settings.ReadPluginSetting("sortmode", 0);
|
||||
cbSortMode.SelectedIndexChanged += new EventHandler(cbSortMode_SelectedIndexChanged);
|
||||
|
||||
cbCenterOnSelected.Checked = General.Settings.ReadPluginSetting("centeronselected", false);
|
||||
}
|
||||
|
||||
// Disposer
|
||||
protected override void Dispose(bool disposing) {
|
||||
General.Settings.WritePluginSetting("sortmode", cbSortMode.SelectedIndex);
|
||||
General.Settings.WritePluginSetting("displaymode", cbDisplayMode.SelectedIndex);
|
||||
General.Settings.WritePluginSetting("centeronselected", cbCenterOnSelected.Checked);
|
||||
|
||||
if (disposing && (components != null))
|
||||
components.Dispose();
|
||||
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
public void Setup() {
|
||||
if (this.ParentForm != null)
|
||||
this.ParentForm.Activated += ParentForm_Activated;
|
||||
|
||||
UpdateTree();
|
||||
}
|
||||
|
||||
public void UpdateTree() {
|
||||
treeView.Nodes.Clear();
|
||||
|
||||
bool showTags = (cbDisplayMode.SelectedItem.ToString() == DISPLAY_TAGS || cbDisplayMode.SelectedItem.ToString() == DISPLAY_TAGS_AND_ACTIONS);
|
||||
bool showActions = (cbDisplayMode.SelectedItem.ToString() == DISPLAY_ACTIONS || cbDisplayMode.SelectedItem.ToString() == DISPLAY_TAGS_AND_ACTIONS);
|
||||
bool hasComment = false;
|
||||
string comment = "";
|
||||
string serachStr = tbSearch.Text.ToLowerInvariant();
|
||||
|
||||
//add things
|
||||
List<TreeNode> nodes = new List<TreeNode>();
|
||||
|
||||
ICollection<Thing> things = General.Map.Map.Things;
|
||||
foreach (Thing t in things) {
|
||||
if ((t.Tag > 0 && showTags) || (t.Action > 0 && showActions)) {
|
||||
TreeNode node = new TreeNode(getThingName(t, ref hasComment, ref comment), 1, 1);
|
||||
|
||||
if (serachStr.Length == 0 || (hasComment && comment.ToLowerInvariant().IndexOf(serachStr) != -1)) {
|
||||
node.Tag = new NodeInfo(t.Index, t.Action, t.Tag);
|
||||
if (hasComment) node.ForeColor = commentColor;
|
||||
nodes.Add(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//sort nodes
|
||||
sort(ref nodes, cbSortMode.SelectedItem.ToString());
|
||||
|
||||
//add category
|
||||
if (nodes.Count > 0) {
|
||||
treeView.Nodes.Add(new TreeNode(CAT_THINGS, 0, 0, nodes.ToArray()));
|
||||
}
|
||||
|
||||
//add sectors
|
||||
nodes = new List<TreeNode>();
|
||||
ICollection<Sector> sectors = General.Map.Map.Sectors;
|
||||
foreach (Sector s in sectors) {
|
||||
if ((s.Tag > 0 && showTags) || (s.Effect > 0 && showActions)) {
|
||||
TreeNode node = new TreeNode(getSectorName(s, ref hasComment, ref comment), 3, 3);
|
||||
|
||||
if (serachStr.Length == 0 || (hasComment && comment.ToLowerInvariant().IndexOf(serachStr) != -1)) {
|
||||
node.Tag = new NodeInfo(s.FixedIndex, s.Effect, s.Tag);
|
||||
if (hasComment) node.ForeColor = commentColor;
|
||||
nodes.Add(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//sort nodes
|
||||
sort(ref nodes, cbSortMode.SelectedItem.ToString());
|
||||
|
||||
//add category
|
||||
if (nodes.Count > 0)
|
||||
treeView.Nodes.Add(new TreeNode(CAT_SECTORS, 2, 2, nodes.ToArray()));
|
||||
|
||||
//add linedefs
|
||||
nodes = new List<TreeNode>();
|
||||
ICollection<Linedef> linedefs = General.Map.Map.Linedefs;
|
||||
foreach (Linedef l in linedefs) {
|
||||
if ((l.Tag > 0 && showTags) || (l.Action > 0 && showActions)) {
|
||||
TreeNode node = new TreeNode(getLinedefName(l, ref hasComment, ref comment), 5, 5);
|
||||
|
||||
if (serachStr.Length == 0 || (hasComment && comment.ToLowerInvariant().IndexOf(serachStr) != -1)) {
|
||||
node.Tag = new NodeInfo(l.Index, l.Action, l.Tag);
|
||||
if (hasComment) node.ForeColor = commentColor;
|
||||
nodes.Add(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//sort nodes
|
||||
sort(ref nodes, cbSortMode.SelectedItem.ToString());
|
||||
|
||||
//add category
|
||||
if (nodes.Count > 0)
|
||||
treeView.Nodes.Add(new TreeNode(CAT_LINEDEFS, 4, 4, nodes.ToArray()));
|
||||
|
||||
treeView.ExpandAll();
|
||||
}
|
||||
|
||||
//sorting
|
||||
private void sort(ref List<TreeNode> nodes, string sortMode) {
|
||||
switch (sortMode) {
|
||||
case SORT_BY_ACTION:
|
||||
nodes.Sort(sortByAction);
|
||||
break;
|
||||
|
||||
case SORT_BY_INDEX:
|
||||
nodes.Sort(sortByIndex);
|
||||
break;
|
||||
|
||||
case SORT_BY_TAG:
|
||||
nodes.Sort(sortByTag);
|
||||
break;
|
||||
|
||||
default://dbg
|
||||
GZBuilder.GZGeneral.Trace("Got unknown sort mode: " + cbSortMode.SelectedItem.ToString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private int sortByAction(TreeNode t1, TreeNode t2) {
|
||||
NodeInfo i1 = t1.Tag as NodeInfo;
|
||||
NodeInfo i2 = t2.Tag as NodeInfo;
|
||||
|
||||
if (i1.Action > i2.Action) return 1;
|
||||
else if (i1.Action == i2.Action) return 0;
|
||||
else if (i1.Action == 0) return 1; //push items with no action to the end of the list
|
||||
else return -1;
|
||||
}
|
||||
|
||||
private int sortByTag(TreeNode t1, TreeNode t2) {
|
||||
NodeInfo i1 = t1.Tag as NodeInfo;
|
||||
NodeInfo i2 = t2.Tag as NodeInfo;
|
||||
|
||||
if (i1.Tag > i2.Tag) return 1;
|
||||
else if (i1.Tag == i2.Tag) return 0;
|
||||
else if (i1.Tag == 0) return 1; //push items with no tag to the end of the list
|
||||
else return -1;
|
||||
}
|
||||
|
||||
private int sortByIndex(TreeNode t1, TreeNode t2) {
|
||||
NodeInfo i1 = t1.Tag as NodeInfo;
|
||||
NodeInfo i2 = t2.Tag as NodeInfo;
|
||||
|
||||
if (i1.Index > i2.Index) return 1;
|
||||
else if (i1.Index == i2.Index) return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
//naming
|
||||
private string getThingName(Thing t, ref bool hasComment, ref string comment) {
|
||||
if(GZBuilder.GZGeneral.UDMF && t.Fields.ContainsKey("comment")){
|
||||
comment = t.Fields["comment"].Value.ToString();
|
||||
hasComment = true;
|
||||
}else{
|
||||
comment = defaultThingName;
|
||||
hasComment = false;
|
||||
}
|
||||
|
||||
return combineName(comment, t.Tag, t.Action, t.Index, cbSortMode.SelectedItem.ToString(), false, !hasComment);
|
||||
}
|
||||
|
||||
private string getSectorName(Sector s, ref bool hasComment, ref string comment) {
|
||||
if(GZBuilder.GZGeneral.UDMF && s.Fields.ContainsKey("comment")){
|
||||
comment = s.Fields["comment"].Value.ToString();
|
||||
hasComment = true;
|
||||
}else{
|
||||
comment = defaultSectorName;
|
||||
hasComment = false;
|
||||
}
|
||||
return combineName(comment, s.Tag, s.Effect, s.FixedIndex, cbSortMode.SelectedItem.ToString(), true, !hasComment);
|
||||
}
|
||||
|
||||
private string getLinedefName(Linedef l, ref bool hasComment, ref string comment) {
|
||||
if(GZBuilder.GZGeneral.UDMF && l.Fields.ContainsKey("comment")){
|
||||
comment = l.Fields["comment"].Value.ToString();
|
||||
hasComment = true;
|
||||
}else{
|
||||
comment = defaultLinedefName;
|
||||
hasComment = false;
|
||||
}
|
||||
return combineName(comment, l.Tag, l.Action, l.Index, cbSortMode.SelectedItem.ToString(), false, !hasComment);
|
||||
}
|
||||
|
||||
private string combineName(string name, int tag, int action, int index, string sortMode, bool isSector, bool isDefaultName) {
|
||||
string combinedName = "";
|
||||
switch(sortMode){
|
||||
case SORT_BY_ACTION:
|
||||
combinedName = (action > 0 ? (isSector ? "Effect:" : "Action:") + action + "; " : "") + (tag > 0 ? "Tag:" + tag + "; " : "") + name + (isDefaultName ? " " + index : "");
|
||||
break;
|
||||
|
||||
case SORT_BY_INDEX:
|
||||
combinedName = index + (tag > 0 ? ": Tag:" + tag + "; " : ": ") + (action > 0 ? (isSector ? "Effect:" : "Action:") + action + "; " : "") + name;
|
||||
break;
|
||||
|
||||
case SORT_BY_TAG:
|
||||
combinedName = (tag > 0 ? "Tag:" + tag + "; " : "") + (action > 0 ? (isSector ? "Effect:" : "Action:") + action + "; " : "") + name + (isDefaultName ? " " + index : "");
|
||||
break;
|
||||
|
||||
default:
|
||||
combinedName = name;
|
||||
break;
|
||||
}
|
||||
return combinedName;
|
||||
}
|
||||
|
||||
private void setComment(UniFields fields, string comment) {
|
||||
if (!fields.ContainsKey("comment"))
|
||||
fields.Add("comment", new UniValue((int)UniversalType.String, comment));
|
||||
else
|
||||
fields["comment"].Value = comment;
|
||||
}
|
||||
|
||||
private string getComment(UniFields fields) {
|
||||
if (!fields.ContainsKey("comment"))
|
||||
return "";
|
||||
else
|
||||
return fields["comment"].Value.ToString();
|
||||
}
|
||||
|
||||
//EVENTS
|
||||
private void cbDisplayMode_SelectedIndexChanged(object sender, EventArgs e) {
|
||||
UpdateTree();
|
||||
}
|
||||
|
||||
private void cbSortMode_SelectedIndexChanged(object sender, EventArgs e) {
|
||||
UpdateTree();
|
||||
}
|
||||
|
||||
private void treeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
|
||||
if (e.Node.Parent == null) return;
|
||||
|
||||
NodeInfo info = e.Node.Tag as NodeInfo;
|
||||
|
||||
if (e.Button == MouseButtons.Right) { //open element properties
|
||||
switch (e.Node.Parent.Text) {
|
||||
case CAT_THINGS:
|
||||
Thing t = General.Map.Map.GetThingByIndex(info.Index);
|
||||
if (t != null) General.Interface.ShowEditThings(new List<Thing>() { t });
|
||||
break;
|
||||
|
||||
case CAT_SECTORS:
|
||||
Sector s = General.Map.Map.GetSectorByIndex(info.Index);
|
||||
if (s != null) General.Interface.ShowEditSectors(new List<Sector>() { s });
|
||||
break;
|
||||
|
||||
case CAT_LINEDEFS:
|
||||
Linedef l = General.Map.Map.GetLinedefByIndex(info.Index);
|
||||
if (l != null) General.Interface.ShowEditLinedefs(new List<Linedef>() { l });
|
||||
break;
|
||||
|
||||
default:
|
||||
GZBuilder.GZGeneral.Trace("Got unknown category: " + e.Node.Parent.Text);
|
||||
break;
|
||||
}
|
||||
|
||||
General.Map.Map.Update();
|
||||
UpdateTree();
|
||||
|
||||
} else { //focus on element
|
||||
if (!cbCenterOnSelected.Checked) return;
|
||||
|
||||
switch (e.Node.Parent.Text) {
|
||||
case CAT_THINGS:
|
||||
Thing t = General.Map.Map.GetThingByIndex(info.Index);
|
||||
if (t != null) General.Map.Renderer2D.PositionView(t.Position.x, t.Position.y);
|
||||
break;
|
||||
|
||||
case CAT_SECTORS:
|
||||
Sector s = General.Map.Map.GetSectorByIndex(info.Index);
|
||||
if (s != null) General.Map.Renderer2D.PositionView(s.BBox.Location.X + s.BBox.Width / 2, s.BBox.Location.Y + s.BBox.Height / 2);
|
||||
break;
|
||||
|
||||
case CAT_LINEDEFS:
|
||||
Linedef l = General.Map.Map.GetLinedefByIndex(info.Index);
|
||||
if (l != null) General.Map.Renderer2D.PositionView(l.Rect.Location.X + l.Rect.Width / 2, l.Rect.Location.Y + l.Rect.Height / 2);
|
||||
break;
|
||||
|
||||
default:
|
||||
GZBuilder.GZGeneral.Trace("Got unknown category: " + e.Node.Parent.Text);
|
||||
break;
|
||||
}
|
||||
//update view
|
||||
General.Interface.RedrawDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
private void treeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
|
||||
if (e.Node.Parent == null) return;
|
||||
|
||||
//edit comment
|
||||
if (GZBuilder.GZGeneral.UDMF) {
|
||||
//store current label...
|
||||
NodeInfo info = e.Node.Tag as NodeInfo;
|
||||
info.Label = e.Node.Text;
|
||||
|
||||
//if we don't have comment - clear text
|
||||
switch (e.Node.Parent.Text) {
|
||||
case CAT_THINGS:
|
||||
Thing t = General.Map.Map.GetThingByIndex(info.Index);
|
||||
if (t != null) e.Node.Text = getComment(t.Fields);
|
||||
break;
|
||||
|
||||
case CAT_SECTORS:
|
||||
Sector s = General.Map.Map.GetSectorByIndex(info.Index);
|
||||
if (s != null) e.Node.Text = getComment(s.Fields);
|
||||
break;
|
||||
|
||||
case CAT_LINEDEFS:
|
||||
Linedef l = General.Map.Map.GetLinedefByIndex(info.Index);
|
||||
if (l != null) e.Node.Text = getComment(l.Fields);
|
||||
break;
|
||||
|
||||
default:
|
||||
GZBuilder.GZGeneral.Trace("Got unknown category: " + e.Node.Parent.Text);
|
||||
break;
|
||||
}
|
||||
|
||||
//begin editing
|
||||
e.Node.BeginEdit();
|
||||
}
|
||||
}
|
||||
|
||||
//map should be in UDMF format, or we wouldn't be here
|
||||
private void treeView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) {
|
||||
NodeInfo info = e.Node.Tag as NodeInfo;
|
||||
string comment = "";
|
||||
|
||||
e.CancelEdit = true;
|
||||
e.Node.EndEdit(true);
|
||||
|
||||
//to set comment manually we actually have to cancel edit...
|
||||
if (e.Label != null && e.Label.Length > 1) {
|
||||
bool hasComment = false;
|
||||
|
||||
//apply comment
|
||||
switch (e.Node.Parent.Text) {
|
||||
case CAT_THINGS:
|
||||
Thing t = General.Map.Map.GetThingByIndex(info.Index);
|
||||
if (t != null) {
|
||||
setComment(t.Fields, e.Label);
|
||||
e.Node.Text = getThingName(t, ref hasComment, ref comment);
|
||||
e.Node.ForeColor = hasComment ? commentColor : Color.Black;
|
||||
}
|
||||
break;
|
||||
|
||||
case CAT_SECTORS:
|
||||
Sector s = General.Map.Map.GetSectorByIndex(info.Index);
|
||||
if (s != null) {
|
||||
setComment(s.Fields, e.Label);
|
||||
e.Node.Text = getSectorName(s, ref hasComment, ref comment);
|
||||
e.Node.ForeColor = hasComment ? commentColor : Color.Black;
|
||||
}
|
||||
break;
|
||||
|
||||
case CAT_LINEDEFS:
|
||||
Linedef l = General.Map.Map.GetLinedefByIndex(info.Index);
|
||||
if (l != null) {
|
||||
setComment(l.Fields, e.Label);
|
||||
e.Node.Text = getLinedefName(l, ref hasComment, ref comment);
|
||||
e.Node.ForeColor = hasComment ? commentColor : Color.Black;
|
||||
}
|
||||
break;
|
||||
|
||||
default://dbg
|
||||
GZBuilder.GZGeneral.Trace("Got unknown category: " + e.Node.Parent.Text);
|
||||
break;
|
||||
}
|
||||
} else { //Edit cancelled. Remove comment
|
||||
switch (e.Node.Parent.Text) {
|
||||
case CAT_THINGS:
|
||||
Thing t = General.Map.Map.GetThingByIndex(info.Index);
|
||||
if (t != null) {
|
||||
e.Node.Text = defaultThingName;
|
||||
e.Node.ForeColor = Color.Black;
|
||||
if (t.Fields.ContainsKey("comment")) t.Fields.Remove("comment");
|
||||
}
|
||||
break;
|
||||
|
||||
case CAT_SECTORS:
|
||||
Sector s = General.Map.Map.GetSectorByIndex(info.Index);
|
||||
if (s != null) {
|
||||
e.Node.Text = defaultSectorName;
|
||||
e.Node.ForeColor = Color.Black;
|
||||
if (s.Fields.ContainsKey("comment")) s.Fields.Remove("comment");
|
||||
}
|
||||
break;
|
||||
|
||||
case CAT_LINEDEFS:
|
||||
Linedef l = General.Map.Map.GetLinedefByIndex(info.Index);
|
||||
if (l != null) {
|
||||
e.Node.Text = defaultLinedefName;
|
||||
e.Node.ForeColor = Color.Black;
|
||||
if (l.Fields.ContainsKey("comment")) l.Fields.Remove("comment");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//it is called every time a dialog window closes.
|
||||
private void ParentForm_Activated(object sender, EventArgs e){
|
||||
UpdateTree();
|
||||
}
|
||||
|
||||
private void btnClearSearch_Click(object sender, EventArgs e) {
|
||||
if (tbSearch.Text != "") {
|
||||
tbSearch.Clear();
|
||||
UpdateTree();
|
||||
}
|
||||
}
|
||||
|
||||
private void tbSearch_TextChanged(object sender, EventArgs e) {
|
||||
if(tbSearch.Text.Length > 2) UpdateTree();
|
||||
}
|
||||
}
|
||||
|
||||
internal class NodeInfo
|
||||
{
|
||||
private int index;
|
||||
private int action;
|
||||
private int tag;
|
||||
|
||||
public int Index { get { return index; } }
|
||||
public int Tag { get { return tag; } }
|
||||
public int Action { get { return action; } }
|
||||
public string Label; //holds TreeNode text while it's edited
|
||||
|
||||
public NodeInfo(int index, int action, int tag) {
|
||||
this.index = index;
|
||||
this.action = action;
|
||||
this.tag = tag;
|
||||
}
|
||||
}
|
||||
}
|
233
Source/Plugins/TagExplorer/Controls/TagExplorer.resx
Normal file
|
@ -0,0 +1,233 @@
|
|||
<?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>
|
||||
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABo
|
||||
FwAAAk1TRnQBSQFMAgEBBgEAARgBAAEYAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABIAMAAQEBAAEgBgABIBYAAxQBGQMUARkDFAEZNAADFAEZAxQBGQMUARmwAAMxAUwBBwFGAecB/wEH
|
||||
ATIBoQH/AzEBTAMUARksAAMxAUwBswF0ASoB/wF+AU4BIAH/AzEBTAMUARmsAAEjAWMC/wEbAV0C/wEH
|
||||
AT8BzgH/AQcBMgGhAf8DFAEZLAAB4AGHATIB/wHZAYYBMQH/AZ4BaAEnAf8BfgFOASAB/wMUARmsAAF3
|
||||
AZsC/wHoAe8C/wEbAV0C/wEHAUYB5wH/AxQBGSwAAf4BtAFvAv8B/QHlAf8B2QGGATEB/wGzAXQBKgH/
|
||||
AxQBGawAAzEBTAF3AZsC/wEjAWMC/wOJAf8DSwH/AyQBMygAAzEBTAH+AbQBbwH/AeABhwEyAf8BowGJ
|
||||
AXQB/wNLAf8DJAEzsAADJAEzA7wB/wOBAf8DSwH/AyQBMwgAAyQBMwMkATMDJAEzGAADJAEzA7wB/wOB
|
||||
Af8DSwH/AyQBMwgAAyQBMwMkATMDJAEznAADJAEzA80B/wOUAf8DSwH/AyQBMwMxAUwDSwH/A5QB/wMk
|
||||
ATMcAAMkATMDzQH/A5QB/wNLAf8DJAEzAzEBTANLAf8DlAH/AyQBM6AAAyQBMwPNAf8DlAH/A0sB/wNL
|
||||
Af8DlAH/AyQBMyQAAyQBMwPNAf8DlAH/A0sB/wNLAf8DlAH/AyQBM6gAAyQBMwO4Af8DlAH/A4EB/wMk
|
||||
ATMsAAMkATMDuAH/A5QB/wOBAf8DJAEzsAADJAEzA88B/wOUAf8DSwH/AyQBMywAAyQBMwPPAf8DlAH/
|
||||
A0sB/wMkATOwAAMkATMDwwH/A5QB/wNLAf8DJAEzLAADJAEzA8MB/wOUAf8DSwH/AyQBM7AAAyQBMwO8
|
||||
Af8DlAH/A0sB/wMUARkDFAEZAxQBGSQAAyQBMwO8Af8DlAH/A0sB/wMUARkDFAEZAxQBGagAAyQBMwPZ
|
||||
Af8DtwH/AQcBRgHnAf8BBwEyAaEB/wMxAUwDFAEZJAADJAEzA9kB/wHRAbcBnQH/AbMBdAEqAf8BfgFO
|
||||
ASAB/wMxAUwDFAEZqAADJAEzASMBYwL/ARsBXQL/AQcBPwHOAf8BBwEyAaEB/wMUARkoAAMkATMB4AGH
|
||||
ATIB/wHZAYYBMQH/AZ4BaAEnAf8BfgFOASAB/wMUARmsAAF3AZsC/wHoAe8C/wEbAV0C/wEHAUYB5wH/
|
||||
AxQBGSwAAf4BtAFvAv8B/QHlAf8B2QGGATEB/wGzAXQBKgH/AxQBGawAAzEBTAF3AZsC/wEjAWMC/wMx
|
||||
AUwwAAMxAUwB/gG0AW8B/wHgAYcBMgH/AzEBTJgAAwoBCwMhAS0DKAE7AygBOwMoATsDHwErAxMBGAMT
|
||||
ARggAAMKAQsDIQEtAygBOwMoATsDKAE7Ax8BKwMTARgDEwEYEAADFAEZAxQBGQMUARkgAAMUARkDFAEZ
|
||||
AxQBGQgAAxQBGQMUARkDFAEZIAADFAEZAxQBGQMUARkUAAM5AVwCYAFqAegBKQExAYEB/wEjASoBdwH/
|
||||
ASIBKQF0Af8BIQEoAW0B/wFcAV0BYAHkAzkBXAMoATsDEwEYGAADOQFcAW4BZwFgAegBgQFcASkB/wF3
|
||||
AVQBIwH/AXQBUgEiAf8BbQFNASEB/wFiAV4BXAHkAzkBXAMoATsDEwEYCAADMQFMASsBOgGyAf8BIQEu
|
||||
AX0B/wMxAUwDFAEZAxQBGQMUARkDFAEZAxQBGQMUARkDFAEZAzEBTAErAToBsgH/ASEBLgF9Af8DMQFM
|
||||
AxQBGQMxAUwBsgF0ASsB/wF9AU4BIQH/AzEBTAMUARkDFAEZAxQBGQMUARkDFAEZAxQBGQMUARkDMQFM
|
||||
AbIBdAErAf8BfQFOASEB/wMxAUwDFAEZDAACXAFeAcUBOQFFAbsB/wE3AUMBvAH/ATYBQgG6Af8BNQFB
|
||||
AbcB/wEzAT0BtAH/ATEBPAGsAf8BLAE0AZQB/wEiASoBdwH/A1sBvQMoATsDEwEYEAACXgFcAcUBuwGD
|
||||
ATkB/wG8AYIBNwH/AboBgQE2Af8BtwGBATUB/wG0AYEBMwH/AawBegExAf8BlAFsASwB/wF3AVMBIgH/
|
||||
A1sBvQMoATsDEwEYBAABNAFMAd8B/wEyAUYB2AH/AScBMwGdAf8BIQEuAX0B/wNEAf8DRAH/A0QB/wNE
|
||||
Af8DRAH/A0QB/wNEAf8BNAFMAd8B/wEyAUYB2AH/AScBMwGdAf8BIQEuAX0B/wMUARkB3wGHATQB/wHY
|
||||
AYYBMgH/AZ0BaAEnAf8BfQFOASEB/wNEAf8DRAH/A0QB/wNEAf8DRAH/A0QB/wNEAf8B3wGHATQB/wHY
|
||||
AYYBMgH/AZ0BaAEnAf8BfQFOASEB/wMUARkIAANcAb4BPgFLAdMB/wFDAVIB6AH/AUcBVQHzAf8BRgFV
|
||||
AfAB/wFFAVUB7wH/AUUBVQHvAf8BRAFSAe0B/wFBAVAB4gH/ATcBQwG7Af8BJwEuAYEB/wNbAb0DKAE7
|
||||
AxMBGAgAAlwBWgG+AdMBkwE+Af8B6AGhAUMB/wHzAaoBRwH/AfABpwFGAf8B7wGlAUUB/wHvAaUBRQH/
|
||||
Ae0BpQFEAf8B4gGcAUEB/wG7AYIBNwH/AYEBXgEnAf8DWwG9AygBOwMTARgBcAGBAf0B/wHsAeUC/wEy
|
||||
AUYB2AH/ASsBOgGyAf8DuAH/A7gB/wO4Af8DuAH/A7gB/wOmAf8DmAH/AXABgQH9Af8B7AHlAv8BMgFG
|
||||
AdgB/wErAToBsgH/AxQBGQH9AbQBcAL/Af0B5QH/AdgBhgEyAf8BsgF0ASsB/wO4Af8DuAH/A7gB/wO4
|
||||
Af8DuAH/A6YB/wOYAf8B/QG0AXAC/wH9AeUB/wHYAYYBMgH/AbIBdAErAf8DFAEZBAADOQFcAUcBVQHj
|
||||
Af8BRgFUAfEB/wE2AUEBswH/ATQBPwGrAf8BRAFSAeoB/wFJAVkB+gH/AUgBVwH2Af8BRgFUAfEB/wFG
|
||||
AVUB8AH/AUMBUQHqAf8BNgFBAb4B/wEmASwBgQH/AzkBXAMTARgEAAM5AVwB4wGgAUcB/wHxAagBRgH/
|
||||
AbMBgQE2Af8BqwF7ATQB/wHqAaMBRAH/AfoBrgFJAf8B9gGsAUgB/wHxAagBRgH/AfABpwFGAf8B6gGj
|
||||
AUMB/wG+AYQBNgH/AYEBXQEmAf8DOQFcAxMBGAMxAUwBcAGBAf0B/wE0AUwB3wH/AzEBTAwAA7gB/wNP
|
||||
AZkIAAMxAUwBcAGBAf0B/wE0AUwB3wH/AzEBTAQAAzEBTAH9AbQBcAH/Ad8BhwE0Af8DMQFMDAADuAH/
|
||||
A08BmQgAAzEBTAH9AbQBcAH/Ad8BhwE0Af8DMQFMCAACYQFoAdsBVgFkAfYB/wFQAV8C/wE2AUEBsQH/
|
||||
AwcB/wEPAREBKwH/ASQBKwF3Af8BOwFGAcIB/wFGAVYB8QH/AUkBWQH6Af8BRwFXAfQB/wFAAU4B5AH/
|
||||
ATEBPAGsAf8CXQFlAecDHwErBAABagFmAWEB2wH2AbEBVgL/AbQBUAH/AbEBfwE2Af8DBwH/ASsBIAEP
|
||||
Af8BdwFUASQB/wHCAYgBOwH/AfEBpwFGAf8B+gGuAUkB/wH0AakBRwH/AeQBngFAAf8BrAF6ATEB/wFl
|
||||
AWIBXQHnAx8BKwQAA5gB/wNLAf8DFAEZDAADpQH/A08BmQwAA5gB/wNEAf8DFAEZCAADmAH/A0sB/wMU
|
||||
ARkMAAOlAf8DTwGZDAADmAH/A0QB/wMUARkIAAFTAWEC/wFrAXkC/wFaAWcB+wH/AUwBWgHoAf8BDwEQ
|
||||
ASEB/wMHAf8DBwH/AwcB/wETARYBOgH/ASkBMQGEAf8BPQFJAc4B/wFFAVQB7wH/ATsBRwHMAf8BKgEz
|
||||
AYoB/wMoATsEAAH/AbYBUwL/Ab4BawH/AfsBtwFaAf8B6AGlAUwB/wEhARoBDwH/AwcB/wMHAf8DBwH/
|
||||
AToBKgETAf8BhAFgASkB/wHOAZABPQH/Ae8BpgFFAf8BzAGOATsB/wGKAWQBKgH/AygBOwQAA6YB/wNL
|
||||
Af8DFAEZIAADpgH/A0QB/wMUARkIAAOmAf8DSwH/AxQBGSAAA6YB/wNEAf8DFAEZBAADJAEzAWYBcwL/
|
||||
AXwBhAL/AWQBcAH5Af8BVgFlAfwB/wEnAS8BfAH/AwcB/wMHAf8DBwH/AQ0BDgEUAf8BIAEnAWYB/wEw
|
||||
ATkBnQH/AUMBUAHkAf8BQAFPAeEB/wEtATYBnAH/AygBOwMkATMB/wG9AWYC/wHGAXwB/wH5AboBZAH/
|
||||
AfwBtAFWAf8BfAFYAScB/wMHAf8DBwH/AwcB/wEUAREBDQH/AWYBSAEgAf8BnQFyATAB/wHkAaABQwH/
|
||||
AeEBmwFAAf8BnAFwAS0B/wMoATsEAAOwAf8DSwH/A08BmQNPAZkUAANPAZkDTwGZA7AB/wNEAf8DFAEZ
|
||||
CAADsAH/A0sB/wNPAZkDTwGZFAADTwGZA08BmQOwAf8DRAH/AxQBGQQAAyQBMwFwAX0C/wGBAYwC/wFl
|
||||
AXMB+AH/AVQBZAH7Af8BPAFIAcsB/wIIAQoB/wMHAf8DBwH/ARkBHQFMAf8BSQFYAfkB/wFJAVkB+gH/
|
||||
AUYBVQHwAf8BQAFOAeMB/wEuATgBogH/AygBOwMkATMB/wHBAXAC/wHKAYEB/wH4AbgBZQH/AfsBsgFU
|
||||
Af8BywGOATwB/wEKAQkBCAH/AwcB/wMHAf8BTAE3ARkB/wH5Aa4BSQH/AfoBrgFJAf8B8AGnAUYB/wHj
|
||||
AZ0BQAH/AaIBdAEuAf8DKAE7BAADuAH/A7gB/wO4Af8DpQH/FAADpQH/A7gB/wO4Af8DRAH/AxQBGQgA
|
||||
A7gB/wO4Af8DuAH/A6UB/xQAA6UB/wO4Af8DuAH/A0QB/wMUARkIAAFuAX0C/wGOAZcC/wFtAXgB/gH/
|
||||
AVYBZQH1Af8BTAFaAfgB/wEYAR0BTAH/AQoBCQELAf8BJQEtAXsB/wMHAf8BHAEiAVsB/wFGAVUB8AH/
|
||||
AUcBVQHzAf8BPgFMAdoB/wEwATkBnwH/AyMBMQQAAf8BvwFuAv8B0AGOAf8B/gHBAW0B/wH1AbABVgH/
|
||||
AfgBrwFMAf8BTAE2ARgB/wILAQkB/wF7AVYBJQH/AwcB/wFbAUABHAH/AfABpwFGAf8B8wGqAUcB/wHa
|
||||
AZcBPgH/AZ8BdAEwAf8DIwExBAADuAH/A0sB/wMUARkgAAO4Af8DRAH/AxQBGQgAA7gB/wNLAf8DFAEZ
|
||||
IAADuAH/A0QB/wMUARkIAAJmAWkB2wGWAaAC/wGGAZAC/wFuAXsB+QH/AVkBZwH+Af8BMQE7AZ0B/wEX
|
||||
ARwBSAH/AUsBWwL/AS8BOAGYAf8DBwH/ARwBIgFbAf8BRQFUAe0B/wE+AUsB1QH/Al0BbwHqAw0BEAQA
|
||||
AWoBZgFhAdsB/wHSAZYC/wHMAYYB/wH5AbwBbgH/Af4BuAFZAf8BnQFyATEB/wFIATMBFwL/AbIBSwH/
|
||||
AZgBbwEvAf8DBwH/AVsBQAEcAf8B7QGlAUUB/wHVAZQBPgH/AXABZwFbAeoDDQEQBAADuAH/A0sB/wMU
|
||||
ARkgAAO4Af8DRAH/AxQBGQgAA7gB/wNLAf8DFAEZIAADuAH/A0QB/wMUARkIAAM5AVwBmAGiAv8BngGn
|
||||
Av8BdwGBAv8BYwFwAfkB/wFOAVkB5AH/AT8BSgG+Af8BTwFfAfgB/wFRAV8B/QH/ATgBQAGcAf8DBwH/
|
||||
ATUBPwGxAf8BQQFOAd4B/wM5AVwIAAM5AVwB/wHTAZgC/wHWAZ4C/wHFAXcB/wH5AbkBYwH/AeQBpQFO
|
||||
Af8BvgGHAT8B/wH4Aa4BTwH/Af0BtAFRAf8BnAF1ATgB/wMHAf8BsQGAATUB/wHeAZsBQQH/AzkBXAgA
|
||||
A7gB/wNLAf8DFAEZDAADpQH/A08BmQwAA7gB/wNEAf8DFAEZCAADuAH/A0sB/wMUARkMAAOlAf8DTwGZ
|
||||
DAADuAH/A0QB/wMUARkMAANYAbIBqAGxAv8BiQGTAv8BfQGDAv8BdAGAAfwB/wFpAXUB9gH/AWMBbwH2
|
||||
Af8BYgFuAfUB/wFeAWsB+wH/AUEBSwHCAf8BQgFQAeAB/wJcAV8BxhAAA1gBsgH/AdkBqAL/Ac4BiQL/
|
||||
AcgBfQH/AfwBwQF0Af8B9gG5AWkB/wH2AbcBYwH/AfUBtgFiAf8B+wG4AV4B/wHCAYsBQQH/AeABnAFC
|
||||
Af8CXwFcAcYIAAMxAUwBKwE6AbIB/wEhAS4BfQH/AzEBTAMUARkDFAEZAxQBGQO4Af8DTwGZAxQBGQMU
|
||||
ARkDMQFMASsBOgGyAf8BIQEuAX0B/wMxAUwDFAEZAzEBTAGyAXQBKwH/AX0BTgEhAf8DMQFMAxQBGQMU
|
||||
ARkDFAEZA7gB/wNPAZkDFAEZAxQBGQMxAUwBsgF0ASsB/wF9AU4BIQH/AzEBTAMUARkMAANZAbEBnwGp
|
||||
Av8BlwGiAv8BiwGVAv8BeAGCAv8BZgF1Af0B/wFcAWkB+QH/AVABXwH3Af8BSQFZAfoB/wFdAVsBXQG9
|
||||
GAADWQGxAf8B1QGfAv8B0QGXAv8BzwGLAv8BwwF4Af8B/QG6AWYB/wH5AbYBXAH/AfcBrwFQAf8B+gGt
|
||||
AUkB/wJdAVsBvQwAATQBTAHfAf8BMgFGAdgB/wEnATMBnQH/ASEBLgF9Af8DSwH/A0sB/wNLAf8DuAH/
|
||||
A0sB/wNLAf8DSwH/ATQBTAHfAf8BMgFGAdgB/wEnATMBnQH/ASEBLgF9Af8DFAEZAd8BhwE0Af8B2AGG
|
||||
ATIB/wGdAWgBJwH/AX0BTgEhAf8DSwH/A0sB/wNLAf8DuAH/A0sB/wNLAf8DSwH/Ad8BhwE0Af8B2AGG
|
||||
ATIB/wGdAWgBJwH/AX0BTgEhAf8DFAEZEAADOQFcA2UB2AF/AYcC/wGDAY0C/wF4AYMC/wFjAXEC/wJg
|
||||
AWUB2AM5AVwgAAM5AVwBZwFlAWMB2AH/AccBfwL/AcwBgwL/AcIBeAL/AbwBYwH/AmUBYAHYAzkBXBAA
|
||||
AXABgQH9Af8B7AHlAv8BMgFGAdgB/wErAToBsgH/A7gB/wO4Af8DuAH/A7gB/wO4Af8DpgH/A5gB/wFw
|
||||
AYEB/QH/AewB5QL/ATIBRgHYAf8BKwE6AbIB/wMUARkB/QG0AXAC/wH9AeUB/wHYAYYBMgH/AbIBdAEr
|
||||
Af8DuAH/A7gB/wO4Af8DuAH/A7gB/wOmAf8DmAH/Af0BtAFwAv8B/QHlAf8B2AGGATIB/wGyAXQBKwH/
|
||||
AxQBGRwAAyQBMwMkATM4AAMkATMDJAEzHAADMQFMAXABgQH9Af8BNAFMAd8B/wMxAUwcAAMxAUwBcAGB
|
||||
Af0B/wE0AUwB3wH/AzEBTAQAAzEBTAH9AbQBcAH/Ad8BhwE0Af8DMQFMHAADMQFMAf0BtAFwAf8B3wGH
|
||||
ATQB/wMxAUwEAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/AQABjwH/AY8B/wQA
|
||||
AQcB/wEHAf8EAAEHAf8BBwH/BAABBwH/AQcB/wQAAQMB/wEDAf8EAAHBAY8BwQGPBAAB4AEPAeABDwQA
|
||||
AfABHwHwAR8EAAH4AT8B+AE/BAAB/AEfAfwBHwQAAf4BDwH+AQ8EAAH/AQEB/wEBBAAB/wGAAf8BgAQA
|
||||
Af8BwAH/AcAEAAH/AeAB/wHgBAAB/wHhAf8B4QQAAfgBBwH4AQcBjwHxAY8B8QHwAQMB8AEDBAAB4AEB
|
||||
AeABAQQAAcABAAHABQABgAEAAYABAAEOAWEBDgFhAYABAAGAAQABjgFxAY4BcQGAAQABgAEAAY8B8QGP
|
||||
AfEEAAGHAcEBhwHBBAABhwHBAYcBwQGAAQABgAEAAY8B8QGPAfEBgAEAAYABAAGPAfEBjwHxAYABAQGA
|
||||
AQEBjgFxAY4BcQHAAQMBwAEDBAAB4AEHAeABBwQAAfABDwHwAQ8EAAH+AX8B/gF/AQ8B4QEPAeEL
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>122, 17</value>
|
||||
</metadata>
|
||||
</root>
|
36
Source/Plugins/TagExplorer/Properties/AssemblyInfo.cs
Normal file
|
@ -0,0 +1,36 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Управление общими сведениями о сборке осуществляется с помощью
|
||||
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
|
||||
// связанные со сборкой.
|
||||
[assembly: AssemblyTitle("TagExplorer")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("TagExplorer")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
|
||||
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
|
||||
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
|
||||
[assembly: Guid("053f5efd-fcd9-4fa4-9107-2383a7eef971")]
|
||||
|
||||
// Сведения о версии сборки состоят из следующих четырех значений:
|
||||
//
|
||||
// Основной номер версии
|
||||
// Дополнительный номер версии
|
||||
// Номер построения
|
||||
// Редакция
|
||||
//
|
||||
// Можно задать все значения или принять номер построения и номер редакции по умолчанию,
|
||||
// используя "*", как показано ниже:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
70
Source/Plugins/TagExplorer/Properties/Resources.Designer.cs
generated
Normal file
|
@ -0,0 +1,70 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Этот код создан программой.
|
||||
// Исполняемая версия:2.0.50727.3607
|
||||
//
|
||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
// повторной генерации кода.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace CodeImp.DoomBuilder.TagExplorer.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||
/// </summary>
|
||||
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
|
||||
// с помощью такого средства, как ResGen или Visual Studio.
|
||||
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
|
||||
// с параметром /str или перестройте свой проект VS.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CodeImp.DoomBuilder.TagExplorer.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap SearchClear {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("SearchClear", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
124
Source/Plugins/TagExplorer/Properties/Resources.resx
Normal file
|
@ -0,0 +1,124 @@
|
|||
<?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>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="SearchClear" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SearchClear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
BIN
Source/Plugins/TagExplorer/Resources/Lines.png
Normal file
After Width: | Height: | Size: 300 B |
BIN
Source/Plugins/TagExplorer/Resources/LinesGroup.png
Normal file
After Width: | Height: | Size: 413 B |
BIN
Source/Plugins/TagExplorer/Resources/SearchClear.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Source/Plugins/TagExplorer/Resources/Sectors.png
Normal file
After Width: | Height: | Size: 337 B |
BIN
Source/Plugins/TagExplorer/Resources/SectorsGroup.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
Source/Plugins/TagExplorer/Resources/Things.png
Normal file
After Width: | Height: | Size: 938 B |
BIN
Source/Plugins/TagExplorer/Resources/ThingsGroup.png
Normal file
After Width: | Height: | Size: 930 B |
89
Source/Plugins/TagExplorer/TagExplorer.csproj
Normal file
|
@ -0,0 +1,89 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CodeImp.DoomBuilder.TagExplorer</RootNamespace>
|
||||
<AssemblyName>TagExplorer</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\..\..\Build\Plugins\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\..\..\Build\Plugins\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="BuilderPlug.cs" />
|
||||
<Compile Include="Controls\TagExplorer.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\TagExplorer.Designer.cs">
|
||||
<DependentUpon>TagExplorer.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Core\Builder.csproj">
|
||||
<Project>{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}</Project>
|
||||
<Name>Builder</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Controls\TagExplorer.resx">
|
||||
<DependentUpon>TagExplorer.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Resources\Lines.png" />
|
||||
<Content Include="Resources\LinesGroup.png" />
|
||||
<None Include="Resources\SearchClear.png" />
|
||||
<Content Include="Resources\Sectors.png" />
|
||||
<Content Include="Resources\SectorsGroup.png" />
|
||||
<Content Include="Resources\Things.png" />
|
||||
<Content Include="Resources\ThingsGroup.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|