Script Editor: added a simple snippets system.

Updated documentation.
This commit is contained in:
MaxED 2014-05-13 09:43:58 +00:00
parent 076d0cfe4b
commit 3c6a9547fa
33 changed files with 380 additions and 163 deletions

View file

@ -19,6 +19,7 @@ functionclose = ")";
argumentdelimiter = ",";
terminator = ";";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";
snippetsdir = "acs";
keywords
{

View file

@ -19,6 +19,7 @@ functionclose = ")";
argumentdelimiter = ",";
terminator = ";";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";
snippetsdir = "acs";
keywords
{

View file

@ -19,6 +19,7 @@ functionclose = ")";
argumentdelimiter = ",";
terminator = ";";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";
snippetsdir = "acs";
keywords
{
@ -84,6 +85,8 @@ keywords
Ceiling_RaiseInstant = "Ceiling_RaiseInstant(tag, unused, height)";
Ceiling_RaiseToNearest = "Ceiling_RaiseToNearest(tag, speed)";
Ceiling_Waggle = "Ceiling_Waggle(tag, amp, freq, offset, time)";
ChangeActorAngle = "ChangeActorAngle(int tid, fixed angle, bool interpolate = false)";
ChangeActorPitch = "ChangeActorPitch(int tid, fixed pitch, bool interpolate = false)";
ChangeCamera = "ChangeCamera(tid, who, revert)";
ChangeCeiling = "ChangeCeiling(tag, flat)";
ChangeFloor = "ChangeFloor(tag, flat)";

View file

@ -0,0 +1,3 @@
do {
} until ($EP);

View file

@ -0,0 +1,3 @@
do {
} while ($EP);

View file

@ -0,0 +1,3 @@
for (int i = 0; i < $EP; i++) {
}

View file

@ -0,0 +1,3 @@
if ($EP) {
}

View file

@ -0,0 +1,5 @@
if ($EP) {
} else {
}

View file

@ -0,0 +1,5 @@
#include "zcommon.acs"
script 1 OPEN {
$EP
}

View file

@ -0,0 +1,3 @@
script $EP (void) {
}

View file

@ -0,0 +1,3 @@
until ($EP) {
}

View file

@ -0,0 +1,3 @@
while ($EP) {
}

View file

@ -10,7 +10,6 @@ IF NOT EXIST "Build\Refmanual.chm" GOTO FILEFAIL
ECHO.
ECHO. BUILD DONE !
ECHO.
PAUSE > NUL
GOTO LEAVE
:ERRORFAIL

View file

@ -235,10 +235,6 @@
<param name="Local" value="gzdb\features\features.html#general">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Enhanced scripting workflow">
<param name="Local" value="gzdb\features\general\acs.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Rendering toolbar">
<param name="Local" value="gzdb\features\general\rendering_toolbar.html">
@ -248,6 +244,20 @@
<param name="Local" value="gzdb\features\general\multi_engines.html">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Scripting">
<param name="Local" value="gzdb\features\features.html#scripting">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Enhanced scripting workflow">
<param name="Local" value="gzdb\features\scripting\acs.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Code Snippets">
<param name="Local" value="gzdb\features\scripting\snippets.html">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Classic and Visual modes">
<param name="Local" value="gzdb\features\features.html#allmodes">

View file

@ -14,9 +14,16 @@
color: #336600;
font-weight: bold;
}
.style5 {color: #990000; font-weight: bold; }
.style7 {color: #6600CC}
.style9 {color: #003300}
.style5 {
color: #990000;
font-weight: bold;
}
.style7 {
color: #6600CC
}
.style9 {
color: #003300
}
-->
</style>
</head>
@ -27,18 +34,11 @@
<div id="gz_title">
<h1>GZDoom Builder features</h1>
</div>
<div id="contents">
Jump to: <a href="#general">General interface</a> |
<a href="#allmodes">Classic and Visual modes</a> |
<a href="#classic">Classic modes</a>
| <a href="#sectors">Sectors mode</a> | <a href="#linedefs">Linedefs mode</a> | <a href="#things">Things mode</a> | <a href="#vertices">Vertices mode</a> | <a href="#visual">GZDB Visual mode</a> | <a href="#fields">Custom Fields</a> | <a href="#mapanalysis">Map Analysis mode</a> | <a href="#findreplace">Find and Replace mode</a>
| <a href="#misc">Misc.</a> | <a href="#formats">(G)ZDoom features support</a>
<div id="contents"> Jump to: <a href="#general">General interface</a> | <a href="#allmodes">Classic and Visual modes</a> | <a href="#classic">Classic modes</a> | <a href="#sectors">Sectors mode</a> | <a href="#linedefs">Linedefs mode</a> | <a href="#things">Things mode</a> | <a href="#vertices">Vertices mode</a> | <a href="#visual">GZDB Visual mode</a> | <a href="#fields">Custom Fields</a> | <a href="#mapanalysis">Map Analysis mode</a> | <a href="#findreplace">Find and Replace mode</a> | <a href="#misc">Misc.</a> | <a href="#formats">(G)ZDoom features support</a>
<ul style="list-style-type:none;">
<li>
<h3><a name="general" id="general"></a>General interface:</h3>
<ul>
<li><a href="general/acs.html">Enhanced scripting workflow</a>.</li>
<li><span class="style1"><strong>[new]</strong></span> <strong>Help</strong> side panel, which shows most of actions, available in current mode.</li>
<li><span class="style1"><strong>[new]</strong></span> Maps can now be loaded by dragging wad files on top of GZDB's main window.</li>
<li><span class="style1"><strong>[new]</strong></span> Open Map Options, Map Options and Game Configurations forms: resources can be added by dragging them on top of resources list.</li>
@ -61,11 +61,13 @@ Jump to: <a href="#general">General interface</a> |
</li>
<li><span class="style1"><strong>[new]</strong></span> Texture size is now shown in texture previews. You can disable this feature by unchecking &quot;<strong>Preferences -&gt; Interface -&gt; Show texture and flat sizes in browsers</strong>&quot; checkbox.
<input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"><img src="general/texturesize_preview.jpg" alt="" /></div></li>
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"><img src="general/texturesize_preview.jpg" alt="" /></div>
</li>
<li><a href="general/multi_engines.html">Several game engines can be used per game configuration</a>.</li>
<li>Size of vertex handles in 2D modes can be changed in <a href="../preferences.html">preferences</a>.</li>
<li><span class="style1"><strong>[new]</strong></span> <strong>Script editor</strong>: pressing &quot;F1&quot; opens keyword help instead of program manual.</li>
<li><span class="style1"><strong>[new]</strong></span> Side panel auto hiding can be now toggled much easier. <input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
<li><span class="style1"><strong>[new]</strong></span> Side panel auto hiding can be now toggled much easier.
<input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"><img src="general/pinsidepanel.jpg" alt="" /></div>
</li>
<li><span class="style1"><strong>[new]</strong></span> Things can be filtered in Thing Edit form.</li>
@ -78,6 +80,13 @@ Jump to: <a href="#general">General interface</a> |
<li>Added errors and warnings indicator to main window (bottom-right corner). You can click on it to open <strong>Errors and warnings</strong> window.</li>
</ul>
</li>
<li>
<h3><a name="scripting" id="allmodes"></a>Scripting</h3>
<ul>
<li><a href="scripting/acs.html">Enhanced scripting workflow</a>.</li>
<li><span class="style1"><strong>[new]</strong></span> <a href="scripting/snippets.html">Code snippets.</a></li>
</ul>
</li>
<li>
<h3><a name="allmodes" id="allmodes"></a>Classic and Visual modes:</h3>
<ul>
@ -91,8 +100,10 @@ Jump to: <a href="#general">General interface</a> |
<li>Camera position can be synchronized between Classic and Visual modes. <a href="all_modes/synch_camera.html">More info</a>.</li>
<li>You can use <a href="all_modes/colorpicker.html">Color Picker plugin </a> to edit dynamic light properties and sector's fog and tint colors in Classic and Visual modes.</li>
<li>You can use <a href="all_modes/tagexplorer.html">Tag Explorer plugin</a> to view all tags and actions used in current map.</li>
<li><span class="style1"><strong>[new]</strong></span> You can pick, which properties are pasted by &quot;Paste Properties&quot; action using &quot;Paste Properties Options&quot; window. <input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"> <img src="all_modes/paste_properties_options.jpg" alt="" /></div></li>
<li><span class="style1"><strong>[new]</strong></span> You can pick, which properties are pasted by &quot;Paste Properties&quot; action using &quot;Paste Properties Options&quot; window.
<input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"> <img src="all_modes/paste_properties_options.jpg" alt="" /></div>
</li>
<li><span class="style1"><strong>[new]</strong></span> You can apply <a href="all_modes/jitter.html">randomized transformations</a> to any map element.</li>
<li>Image browser shows directory structure of Folder, PK3 and PK7 resources and can filter images by texture type and size. <a href="all_modes/texture_browser.html">More info</a>.</li>
<li><span class="style1"><strong>[new]</strong></span> Most controls of Edit Sector/Linedef/Thing forms now work in realtime (e.g. you can immediately see texture offset/scale/rotation changes while you are changing appropriate values). Action and Tag changes are still applied only after you press &quot;OK&quot; button.</li>
@ -143,8 +154,8 @@ Jump to: <a href="#general">General interface</a> |
<li>Center of map is shown in Classic modes using Highlight color.</li>
</ul>
</li>
<li><h3><a name="sectors" id="sectors"></a>Sectors mode:</h3>
<li>
<h3><a name="sectors" id="sectors"></a>Sectors mode:</h3>
<ul>
<li><span class="style1"><strong>[new]</strong></span> Hold <strong>Alt</strong> while (de)selecting sectors to (de)select things inside of them.</li>
<li><span class="style1"><strong>[new]</strong></span> Sector Tag and Effect can now be shown on top of sectors. You can use &quot;<strong>View Tags and Effects</strong>&quot; button to toggle this overlay.
@ -155,12 +166,14 @@ Jump to: <a href="#general">General interface</a> |
<input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"><img src="sectors_mode/gradientmodes.jpg" alt="" /></div>
</li>
<li><span class="style1"><strong>[new]</strong></span><strong> </strong>Sector Info panel shows the number of sector's sidedefs as well as light and fade colors (UDMF only): <input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"><img src="sectors_mode/sector_info.jpg" alt="" /></div></li>
<li><span class="style1"><strong>[new]</strong></span><strong> </strong>Sector Info panel shows the number of sector's sidedefs as well as light and fade colors (UDMF only):
<input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"><img src="sectors_mode/sector_info.jpg" alt="" /></div>
</li>
</ul>
</li>
<li><h3><a name="linedefs" id="linedefs"></a>Linedefs mode:</h3>
<li>
<h3><a name="linedefs" id="linedefs"></a>Linedefs mode:</h3>
<ul>
<li><span class="style1"><strong>[new]</strong></span> <strong>[UDMF]</strong> New actions: &quot;<strong>Align Ceiling Texture to Back Side</strong>&quot;, &quot;<strong>Align Ceiling Texture to Front Side</strong>&quot;, &quot;<strong>Align Floor Texture to Back Side</strong>&quot; and &quot;<strong>Align Floor Texture to Front Side</strong>&quot; (available in <strong>Linedefs -&gt; Align Textures</strong> menu).</li>
<li><span class="style1"><strong>[new]</strong></span> <strong>[UDMF]</strong> &quot;<strong>Make brightness gradient</strong>&quot; command is available in Linedefs mode.</li>
@ -168,8 +181,8 @@ Jump to: <a href="#general">General interface</a> |
<li><span class="style1"><strong>[new]</strong></span> When a linedef is within Split Linedefs range, it is highlighted using Info line color</li>
</ul>
</li>
<li><h3><a name="things" id="things"></a>Things mode:</h3>
<li>
<h3><a name="things" id="things"></a>Things mode:</h3>
<ul>
<li><span class="style1"><strong>[new]</strong></span> Several thing types can now be selected at once in Thing Edit form. If you do so, a type randomly chosen from selected ones will be assigned to each selected thing. <a href="things_mode/multiple_thing_types.html">More info</a>.</li>
<li><span class="style1"><strong>[new]</strong></span> You can filter selected things by type using Filter Things form (<strong>Things -&gt; Filter Things...</strong>).
@ -184,13 +197,13 @@ Jump to: <a href="#general">General interface</a> |
<li>Thing's X and Y position can be edited in Edit Thing form.</li>
</ul>
</li>
<li><h3><a name="vertices" id="vertices"></a>Vertices mode:</h3>
<li>
<h3><a name="vertices" id="vertices"></a>Vertices mode:</h3>
<ul>
<li><strong>[UDMF]</strong> Vertical offsets of a vertex can be edited in Vertex Edit form and are shown in Vertex Info panel.</li>
<li> When a linedef is within Split Linedefs range, it is highlighted using Info line color.</li>
</ul></li>
</ul>
</li>
<li>
<h3><a name="visual" id="visual"></a>GZDB Visual mode:</h3>
<ul>

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View file

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,44 @@
<!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" />
<style type="text/css">
<!--
.style1 {
color: #990000;
font-weight: bold;
}
-->
</style>
</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>Code Snippets</h1>
</div>
<div id="contents">
<div style="float:right; padding-left:10px;"><br /><img src="snippets1.jpg"/></div>
<p>In the Script Editor you can use and create code snippets, which are small blocks of reusable code that you can insert where you need it in your code.</p>
<p><strong>Using code snippets:</strong><br />
To use a snippet, just pick it from the drop-down menu.</p>
<p><strong>Creating new code snippets:</strong><br />
Code snippets are plain text files stored in [GZDB]\Snippets\[category], so just create a new text file there and add the code you want into it. Currently the only supported &quot;special&quot; token is <strong>$EP</strong> (Entry Point) - that's the place where the cursor will be placed after inserting a snippet.<br />
<span class="style1">Warning:</span> snippet's file name should not contain spaces.</p>
<p><strong>Creating new code snippets for custom scripting configurations:</strong><br />
To add snippets to a scripting configuration, which doesn't already have existing snippets (&quot;Insert a Code Snippet&quot; drop-down is disabled in the Script Editor), you'll have to:</p>
<ol>
<li>Add a new folder inside of &quot;Snippets&quot; folder (for example, &quot;[GZDB]\Snippets\Decorate&quot;).</li>
<li>Add the &quot;<strong>snippetsdir</strong>&quot; parameter to a scripting configuration, in which you want to use snippets, and set it to the folder name you've just created (for example, <strong>snippetsdir = &quot;Decorate&quot;;</strong>).</li>
<li>Add the snippets to the folder you've created.</li>
</ol>
</div>
</body>

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View file

@ -995,6 +995,7 @@
<None Include="Resources\MCrash.png" />
<Content Include="Resources\Model.png" />
<Content Include="Resources\Model_selected.png" />
<None Include="Resources\PuzzlePiece.png" />
<None Include="Resources\Search.png" />
<None Include="Resources\SnapVerts.png" />
<EmbeddedResource Include="Resources\UDMF_UI.cfg" />

View file

@ -19,6 +19,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using CodeImp.DoomBuilder.IO;
#endregion
@ -33,33 +34,31 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Variables
// Original configuration
//private Configuration cfg;
// Compiler settings
private CompilerInfo compiler;
private string parameters;
private string resultlump;
private readonly CompilerInfo compiler;
private readonly string parameters;
private readonly string resultlump;
// Editor settings
private string description;
private int codepage;
private string[] extensions;
private bool casesensitive;
private int insertcase;
private int lexer;
private string keywordhelp;
private string functionopen;
private string functionclose;
private string argumentdelimiter;
private string terminator;
private string functionregex;
private readonly string description;
private readonly int codepage;
private readonly string[] extensions;
private readonly bool casesensitive;
private readonly int insertcase;
private readonly int lexer;
private readonly string keywordhelp;
private readonly string functionopen;
private readonly string functionclose;
private readonly string argumentdelimiter;
private readonly string terminator;
private readonly string functionregex;
// Collections
private Dictionary<string, string> keywords;
private Dictionary<string, string> lowerkeywords;
private List<string> constants;
private Dictionary<string, string> lowerconstants;
private readonly Dictionary<string, string> keywords;
private readonly Dictionary<string, string> lowerkeywords;
private readonly List<string> constants;
private readonly Dictionary<string, string> lowerconstants;
private readonly Dictionary<string, string[]> snippets; //mxd
#endregion
@ -83,6 +82,7 @@ namespace CodeImp.DoomBuilder.Config
public string ArgumentDelimiter { get { return argumentdelimiter; } }
public string Terminator { get { return terminator; } }
public string FunctionRegEx { get { return functionregex; } }
public Dictionary<string, string[]> Snippets { get { return snippets; } } //mxd
// Collections
public ICollection<string> Keywords { get { return keywords.Keys; } }
@ -117,6 +117,7 @@ namespace CodeImp.DoomBuilder.Config
functionregex = "";
description = "Plain text";
extensions = new[] { "txt" };
snippets = new Dictionary<string, string[]>(StringComparer.Ordinal); //mxd
}
// Constructor
@ -127,6 +128,7 @@ namespace CodeImp.DoomBuilder.Config
this.constants = new List<string>();
this.lowerkeywords = new Dictionary<string, string>(StringComparer.Ordinal);
this.lowerconstants = new Dictionary<string, string>(StringComparer.Ordinal);
this.snippets = new Dictionary<string, string[]>(StringComparer.Ordinal); //mxd
// Read settings
description = cfg.ReadSetting("description", "Untitled script");
@ -183,6 +185,29 @@ namespace CodeImp.DoomBuilder.Config
// No compiler found?
if(this.compiler == null) throw new Exception("No such compiler defined: '" + compilername + "'");
}
//mxd. Load Snippets
string snippetsdir = cfg.ReadSetting("snippetsdir", "");
if (!string.IsNullOrEmpty(snippetsdir)) {
string snippetspath = Path.Combine(General.SnippetsPath, snippetsdir);
if (Directory.Exists(snippetspath)) {
string[] files = Directory.GetFiles(snippetspath, "*.txt", SearchOption.TopDirectoryOnly);
foreach (string file in files) {
string name = Path.GetFileNameWithoutExtension(file);
if (name.Contains(" ")) {
General.ErrorLogger.Add(ErrorType.Warning, "Failed to load snippet '" + file + "' for '" + description + "' script configuration: snippet file name must not contain spaces!");
} else {
string[] lines = File.ReadAllLines(file);
if (lines.Length > 0) {
snippets.Add(name, lines);
} else {
General.ErrorLogger.Add(ErrorType.Warning, "Failed to load snippet '" + file + "' for '" + description + "' script configuration: file is empty!");
}
}
}
}
}
}
#endregion

View file

@ -307,7 +307,8 @@ namespace CodeImp.DoomBuilder.Controls
}
//mxd
protected void updateNavigator() {
protected void updateNavigator()
{
//mxd. known script type?
if (Array.IndexOf(ScriptTypes.TYPES, config.Description) != -1) {
updateNavigator(new MemoryStream(editor.GetText()), config.Description);
@ -319,7 +320,8 @@ namespace CodeImp.DoomBuilder.Controls
}
//mxd
private void updateNavigator(MemoryStream stream, string scriptType) {
private void updateNavigator(MemoryStream stream, string scriptType)
{
if (scriptType == ScriptTypes.TYPES[(int)ScriptType.ACS]) {
updateNavigatorAcs(stream);
} else if (scriptType == ScriptTypes.TYPES[(int)ScriptType.MODELDEF]) {
@ -330,7 +332,8 @@ namespace CodeImp.DoomBuilder.Controls
}
//mxd
private void updateNavigatorDecorate(MemoryStream stream) {
private void updateNavigatorDecorate(MemoryStream stream)
{
if (stream == null) return;
navigator.Items.Clear();
@ -344,7 +347,8 @@ namespace CodeImp.DoomBuilder.Controls
}
//mxd
private void updateNavigatorModeldef(MemoryStream stream) {
private void updateNavigatorModeldef(MemoryStream stream)
{
if (stream == null) return;
navigator.Items.Clear();
@ -358,7 +362,8 @@ namespace CodeImp.DoomBuilder.Controls
}
//mxd
private void updateNavigatorAcs(MemoryStream stream) {
private void updateNavigatorAcs(MemoryStream stream)
{
if (stream == null) return;
navigator.Items.Clear();
@ -375,7 +380,8 @@ namespace CodeImp.DoomBuilder.Controls
}
//mxd
internal ScriptType VerifyScriptType() {
internal ScriptType VerifyScriptType()
{
ScriptTypeParserSE parser = new ScriptTypeParserSE();
if (parser.Parse(new MemoryStream(editor.GetText()), config.Description)) {
if (parser.ScriptType != (int)ScriptType.UNKNOWN && config.Description != ScriptTypes.TYPES[(int)parser.ScriptType])
@ -384,6 +390,12 @@ namespace CodeImp.DoomBuilder.Controls
return ScriptType.UNKNOWN;
}
//mxd
internal void InsertSnippet(string[] lines)
{
editor.InsertSnippet(lines);
}
#endregion
#region ================== Events

View file

@ -244,19 +244,17 @@ namespace CodeImp.DoomBuilder.Controls
Stream lexersdata;
StreamReader lexersreader;
Configuration lexercfg = new Configuration();
SortedList<string, string> autocompletelist;
string[] resnames;
int imageindex;
// Make collections
stylelookup = new Dictionary<int, ScriptStyleType>();
autocompletelist = new SortedList<string, string>(StringComparer.Ordinal);
SortedList<string, string> autocompletelist = new SortedList<string, string>(StringComparer.Ordinal);
// Keep script configuration
if(scriptconfig != config) scriptconfig = config;
// Find a resource named Lexers.cfg
resnames = General.ThisAssembly.GetManifestResourceNames();
string[] resnames = General.ThisAssembly.GetManifestResourceNames();
foreach(string rn in resnames)
{
// Found one?
@ -440,7 +438,6 @@ namespace CodeImp.DoomBuilder.Controls
{
int bracketlevel = 0; // bracket level counting
int argindex = 0; // function argument counting
int limitpos; // lowest position we'll backtrack to
int pos = scriptedit.CurrentPos;
// Decode the text
@ -454,7 +451,7 @@ namespace CodeImp.DoomBuilder.Controls
curfunctionstartpos = 0;
// Determine lowest backtrack position
limitpos = scriptedit.CurrentPos - MAX_BACKTRACK_LENGTH;
int limitpos = scriptedit.CurrentPos - MAX_BACKTRACK_LENGTH;
if(limitpos < 0) limitpos = 0;
// We can only do this when we have function syntax information
@ -635,6 +632,34 @@ namespace CodeImp.DoomBuilder.Controls
scriptedit.SetText(text);
}
//mxd
public void InsertSnippet(string[] lines)
{
//insert the snippet
int curline = scriptedit.LineFromPosition(scriptedit.SelectionStart);
int numtabs = scriptedit.GetLineIndentation(curline);
string tabs = Environment.NewLine + new String(' ', numtabs);
string spaces = new String(' ', General.Settings.ScriptTabWidth);
for (int i = 0; i < lines.Length; i++) {
lines[i] = lines[i].Replace("\t", spaces);
}
string text = string.Join(tabs, lines);
scriptedit.InsertText(scriptedit.SelectionStart, text);
//check if we have the $EP marker
for(int i = 0; i < lines.Length; i++) {
int pos = lines[i].IndexOf("$EP");
if(pos != -1) {
MoveToLine(curline + i);
pos += scriptedit.PositionFromLine(curline + i);
scriptedit.SelectionStart = pos + numtabs;
scriptedit.SelectionEnd = pos + numtabs + 3;
ReplaceSelection("");
break;
}
}
}
#endregion
#region ================== Events

View file

@ -44,6 +44,8 @@ namespace CodeImp.DoomBuilder.Controls
this.buttoncopy = new System.Windows.Forms.ToolStripButton();
this.buttonpaste = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.buttonsnippets = new System.Windows.Forms.ToolStripDropDownButton();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.buttonscriptconfig = new System.Windows.Forms.ToolStripDropDownButton();
this.buttoncompile = new System.Windows.Forms.ToolStripButton();
this.buttonclose = new System.Windows.Forms.ToolStripButton();
@ -97,6 +99,8 @@ namespace CodeImp.DoomBuilder.Controls
this.buttoncopy,
this.buttonpaste,
this.toolStripSeparator3,
this.buttonsnippets,
this.toolStripSeparator4,
this.buttonscriptconfig,
this.buttoncompile,
this.buttonclose,
@ -220,6 +224,22 @@ namespace CodeImp.DoomBuilder.Controls
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25);
//
// buttonsnippets
//
this.buttonsnippets.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonsnippets.Enabled = false;
this.buttonsnippets.Image = global::CodeImp.DoomBuilder.Properties.Resources.PuzzlePiece;
this.buttonsnippets.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonsnippets.Name = "buttonsnippets";
this.buttonsnippets.Size = new System.Drawing.Size(29, 22);
this.buttonsnippets.Text = "Intert a Code Snippet";
//
// toolStripSeparator4
//
this.toolStripSeparator4.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(6, 25);
//
// buttonscriptconfig
//
this.buttonscriptconfig.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@ -414,5 +434,7 @@ namespace CodeImp.DoomBuilder.Controls
private System.Windows.Forms.ImageList errorimages;
private System.Windows.Forms.ToolStripButton buttonkeywordhelp;
private System.Windows.Forms.ToolStripButton buttonsearch;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
private System.Windows.Forms.ToolStripDropDownButton buttonsnippets;
}
}

View file

@ -475,6 +475,8 @@ namespace CodeImp.DoomBuilder.Controls
buttoncut.Enabled = (t != null);
buttonpaste.Enabled = (t != null);
buttonclose.Enabled = (t != null) && t.IsClosable;
buttonsnippets.DropDownItems.Clear(); //mxd
buttonsnippets.Enabled = (t != null) && t.Config.Snippets.Count > 0; //mxd
if(t != null)
{
@ -485,6 +487,13 @@ namespace CodeImp.DoomBuilder.Controls
item.Checked = (config == t.Config);
}
//mxd. Add snippets
if(t.Config.Snippets.Count > 0) {
foreach(KeyValuePair<string, string[]> group in t.Config.Snippets) {
buttonsnippets.DropDownItems.Add(group.Key).Click += OnInsertSnippetClick;
}
}
// Focus to script editor
if(focuseditor) ForceFocus();
}
@ -789,6 +798,13 @@ namespace CodeImp.DoomBuilder.Controls
OpenFindAndReplace();
}
//mxd
private void OnInsertSnippetClick(object sender, EventArgs eventArgs)
{
ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab);
t.InsertSnippet( t.Config.Snippets[((ToolStripItem)sender).Text] );
}
// Mouse released on tabs
private void tabs_MouseUp(object sender, MouseEventArgs e)
{

View file

@ -149,29 +149,29 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADI
BQAAAk1TRnQBSQFMAwEBAAEUAQABFAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
ARADAAEBAQABIAYAARD/ACMAAc8B2AHyAf8BXgF2AbkB/wEnAUIBkwH/AR8BNQF7Af8BGAEuAXIB/wEY
ATIBgQH/AU0BYwGkAf8BzwHYAfIB/9wAAYEBlAHUAf8BMgFRAawB/wEgAUUBuAH/ARABQAHQAf8BBwE9
AeIB/wEGAToB3AH/AQoBNwG9Af8BDQEuAZYB/wEOASkBgQH/AWsBfQGyAf/UAAGJAZ0B3AH/AT8BXgG7
Af8BIAFQAd0B/wENAUgB+gH/AQsBRQH5Af8BSwF2AfgB/wFLAXYB+AH/AQQBPQHqAf8BBAE6AeQB/wEJ
ATMBtgH/AQ4BKQGBAf8BawF9AbIB/8wAAc8B2AHyAf8BVAFvAcYB/wEyAV4B4wH/AR8BVgH9Af8BHwFW
Af0B/wFaAYEB/gH/A/4B/wP+Af8BXQGBAfoB/wEEAT4B7gH/AQQBOgHkAf8BCQEzAbYB/wEOASkBgQH/
Ac8B2AHyAf/IAAGnAbYB5QH/AVEBdAHZAf8BMAFjAv8BMQFlAv8BMAFjAv8BaQGLAv8D/gH/A/4B/wFU
AX0B+wH/AQYBQgH4Af8BBAE+Ae4B/wEEAToB5AH/AQ0BLgGWAf8BTQFjAaQB/8gAAXQBiQHVAf8BUAF3
Ae4B/wFCAXEC/wFFAXMC/wFCAXEC/wE9AW4C/wFtAY4C/wFkAYYC/wEfAVYB/QH/AREBTAH7Af8BBgFC
AfgB/wEEAT0B6gH/AQoBNwG9Af8BGAEyAYEB/8gAAYEBlAHRAf8BVAF9AfsB/wFWAYEC/wFaAYEB/gH/
AVYBgQL/AWQBhgL/A/4B/wP+Af8BQgFxAv8BHAFUAfsB/wENAUgB+gH/AQQBPwHzAf8BBgE6AdwB/wEY
AS4BcgH/yAABigGbAdQB/wFkAYYB+wH/AWkBiwL/AW0BjgL/AWkBiwL/AZcBsQL/A/4B/wP+Af8BfQGa
Av8BJQFbAf0B/wERAUwB+wH/AQYBQgH4Af8BBwE9AeIB/wEfATUBewH/yAABiQGdAdwB/wF9AZYB8gH/
AX0BmgL/AYEBnAL/AX0BmgL/AbEBxAL/A/4B/wP+Af8BogG4Af4B/wEsAWAB/gH/ARwBVAH7Af8BCwFF
AfkB/wEQAUAB0AH/AScBQgGTAf/IAAGnAbYB5QH/AY0BowHlAf8BhwGkAv8BjQGoAv8BhwGkAv8BxQHT
Af4B/wP+Af8D/gH/AbUBxwH+Af8BMAFjAv8BHwFWAf0B/wENAUgB+gH/ASABRQG4Af8BaAGAAboB/8gA
Ac8B2AHyAf8BlwGnAd0B/wGVAasB8QH/AZcBsQL/AY0BqAL/AakBvgL/A/4B/wP+Af8BgwGhAv8BMQFl
Av8BHwFWAf0B/wEgAVAB3QH/ATIBUQGsAf8BzwHYAfIB/8wAAbQBwgHsAf8BmwGqAd0B/wGVAasB8QH/
AYcBpAL/AX0BmgL/AWkBiwL/AVYBgQL/AUIBcQL/ATEBZQL/ATIBXgHjAf8BPwFeAbsB/wF5AYwB1AH/
1AABtAHCAewB/wGXAacB3QH/AY0BowHlAf8BfQGWAfIB/wFkAYYB+wH/AVQBfQH7Af8BUAF3Ae4B/wFR
AXQB2QH/AVQBbwHGAf8BgQGVAdwB/9wAAcwB2AH+Af8BnQGtAeAB/wGJAZ0B3AH/AYoBmwHUAf8BgQGU
AdEB/wF0AYkB1QH/AYEBlAHRAf8BzAHYAf4B//8A0QABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEA
BQAAAk1TRnQBSQFMAwEBAAE0AQABNAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
ARADAAEBAQABIAYAARD/ACMAAc8B2AHyAf8BWgFyAbkB/wEjAT4BkwH/ARsBMQF3Af8BFAEqAW4B/wEU
AS4BgQH/AUkBXwGkAf8BzwHYAfIB/9wAAYEBlAHUAf8BLgFNAawB/wEcAUEBuAH/AQwBPAHQAf8BAwE5
AeIB/wECATYB3AH/AQYBMwG9Af8BCQEqAZYB/wEKASUBgQH/AWcBeQGyAf/UAAGJAZ0B3AH/ATsBWgG7
Af8BHAFMAd0B/wEJAUQB+gH/AQcBQQH5Af8BRwFyAfgB/wFHAXIB+AH/AQABOQHqAf8BAAE2AeQB/wEF
AS8BtgH/AQoBJQGBAf8BZwF5AbIB/8wAAc8B2AHyAf8BUAFrAcYB/wEuAVoB4wH/ARsBUgH9Af8BGwFS
Af0B/wFWAYEB/gH/A/4B/wP+Af8BWQGBAfoB/wEAAToB7gH/AQABNgHkAf8BBQEvAbYB/wEKASUBgQH/
Ac8B2AHyAf/IAAGnAbYB5QH/AU0BcAHZAf8BLAFfAv8BLQFhAv8BLAFfAv8BZQGLAv8D/gH/A/4B/wFQ
AXkB+wH/AQIBPgH4Af8BAAE6Ae4B/wEAATYB5AH/AQkBKgGWAf8BSQFfAaQB/8gAAXABiQHVAf8BTAFz
Ae4B/wE+AW0C/wFBAW8C/wE+AW0C/wE5AWoC/wFpAY4C/wFgAYYC/wEbAVIB/QH/AQ0BSAH7Af8BAgE+
AfgB/wEAATkB6gH/AQYBMwG9Af8BFAEuAYEB/8gAAYEBlAHRAf8BUAF5AfsB/wFSAYEC/wFWAYEB/gH/
AVIBgQL/AWABhgL/A/4B/wP+Af8BPgFtAv8BGAFQAfsB/wEJAUQB+gH/AQABOwHzAf8BAgE2AdwB/wEU
ASoBbgH/yAABigGbAdQB/wFgAYYB+wH/AWUBiwL/AWkBjgL/AWUBiwL/AZcBsQL/A/4B/wP+Af8BeQGa
Av8BIQFXAf0B/wENAUgB+wH/AQIBPgH4Af8BAwE5AeIB/wEbATEBdwH/yAABiQGdAdwB/wF5AZYB8gH/
AXkBmgL/AYEBnAL/AXkBmgL/AbEBxAL/A/4B/wP+Af8BogG4Af4B/wEoAVwB/gH/ARgBUAH7Af8BBwFB
AfkB/wEMATwB0AH/ASMBPgGTAf/IAAGnAbYB5QH/AY0BowHlAf8BhwGkAv8BjQGoAv8BhwGkAv8BxQHT
Af4B/wP+Af8D/gH/AbUBxwH+Af8BLAFfAv8BGwFSAf0B/wEJAUQB+gH/ARwBQQG4Af8BZAGAAboB/8gA
Ac8B2AHyAf8BlwGnAd0B/wGVAasB8QH/AZcBsQL/AY0BqAL/AakBvgL/A/4B/wP+Af8BgwGhAv8BLQFh
Av8BGwFSAf0B/wEcAUwB3QH/AS4BTQGsAf8BzwHYAfIB/8wAAbQBwgHsAf8BmwGqAd0B/wGVAasB8QH/
AYcBpAL/AXkBmgL/AWUBiwL/AVIBgQL/AT4BbQL/AS0BYQL/AS4BWgHjAf8BOwFaAbsB/wF1AYwB1AH/
1AABtAHCAewB/wGXAacB3QH/AY0BowHlAf8BeQGWAfIB/wFgAYYB+wH/AVABeQH7Af8BTAFzAe4B/wFN
AXAB2QH/AVABawHGAf8BgQGVAdwB/9wAAcwB2AH+Af8BnQGtAeAB/wGJAZ0B3AH/AYoBmwHUAf8BgQGU
AdEB/wFwAYkB1QH/AYEBlAHRAf8BzAHYAf4B//8A0QABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEA
AQEFAAGAFwAD/wEAAv8GAAHwAQ8GAAHgAQcGAAHAAQMGAAGAAQEGAAGAAQEGAAGAAQEGAAGAAQEGAAGA
AQEGAAGAAQEGAAGAAQEGAAGAAQEGAAHAAQMGAAHgAQcGAAHwAQ8GAAL/BgAL
</value>

View file

@ -122,6 +122,7 @@ namespace CodeImp.DoomBuilder
private const string COMPILERS_DIR = "Compilers";
private const string PLUGINS_DIR = "Plugins";
private const string SCRIPTS_DIR = "Scripting";
private const string SNIPPETS_DIR = "Snippets"; //mxd
private const string SETUP_DIR = "Setup";
private const string SPRITES_DIR = "Sprites";
private const string HELP_FILE = "Refmanual.chm";
@ -151,6 +152,7 @@ namespace CodeImp.DoomBuilder
private static string configspath;
private static string compilerspath;
private static string scriptspath;
private static string snippetspath; //mxd
private static string pluginspath;
private static string spritespath;
@ -204,6 +206,7 @@ namespace CodeImp.DoomBuilder
public static string CompilersPath { get { return compilerspath; } }
public static string PluginsPath { get { return pluginspath; } }
public static string SpritesPath { get { return spritespath; } }
public static string SnippetsPath { get { return snippetspath; } } //mxd
public static ICollection<string> CommandArgs { get { return Array.AsReadOnly(cmdargs); } }
internal static MainForm MainWindow { get { return mainwindow; } }
public static IMainForm Interface { get { return mainwindow; } }
@ -569,6 +572,7 @@ namespace CodeImp.DoomBuilder
compilerspath = Path.Combine(apppath, COMPILERS_DIR);
pluginspath = Path.Combine(apppath, PLUGINS_DIR);
scriptspath = Path.Combine(apppath, SCRIPTS_DIR);
snippetspath = Path.Combine(apppath, SNIPPETS_DIR); //mxd
spritespath = Path.Combine(apppath, SPRITES_DIR);
logfile = Path.Combine(settingspath, LOG_FILE);

View file

@ -466,6 +466,13 @@ namespace CodeImp.DoomBuilder.Properties {
}
}
internal static System.Drawing.Bitmap PuzzlePiece {
get {
object obj = ResourceManager.GetObject("PuzzlePiece", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Question {
get {
object obj = ResourceManager.GetObject("Question", resourceCulture);

View file

@ -175,18 +175,21 @@
<data name="Marine" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Marine.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ThingStatistics" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ThingStatistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Splash3_small" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Splash3_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Model" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Model.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScriptPalette" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ScriptPalette.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScriptHelp" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ScriptHelp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="KnownTextureSet" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\KnownTextureSet.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Splash3_trans" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Splash3_trans.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -196,11 +199,17 @@
<data name="Status2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Status2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Unpin" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Unpin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Status0" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Status0.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Model" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Model.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="ViewBrightness" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewBrightness.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Zoom" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Zoom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="mergegeometry" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\mergegeometry.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -268,8 +277,8 @@
<data name="Prefab2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Prefab2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Grid2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Grid2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Brightness" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Brightness.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="fog" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\fog.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -283,9 +292,6 @@
<data name="ErrorLarge" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ErrorLarge.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Lightbulb" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Lightbulb.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="MCrash" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MCrash.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -295,9 +301,6 @@
<data name="Zoom_arrowup" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Zoom_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Zoom" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Zoom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Model_selected" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Model_selected.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -325,6 +328,9 @@
<data name="Prefab" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Prefab.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ImageStack" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ImageStack.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Hourglass" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Hourglass.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -343,8 +349,8 @@
<data name="Link" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Brightness" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Brightness.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Light" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Light.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TagStatistics" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TagStatistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -358,8 +364,11 @@
<data name="Undo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Unpin" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Unpin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="SlimDX_small" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SlimDX_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="KnownTextureSet" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\KnownTextureSet.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Angle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -376,20 +385,17 @@
<data name="ViewNormal" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewNormal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="MissingThing" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MissingThing.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Monster3" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Monster3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ViewBrightness" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewBrightness.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Grid2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Grid2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Light" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Light.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Lightbulb" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Lightbulb.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Help" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -397,8 +403,8 @@
<data name="OpenScript" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\OpenScript.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SlimDX_small" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SlimDX_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="MissingThing" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MissingThing.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Status11" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Status11.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -409,19 +415,16 @@
<data name="WarningLarge" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\WarningLarge.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Search" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Search.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Text" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Text.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Check" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Search" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Search.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ImageStack" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ImageStack.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ThingStatistics" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ThingStatistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="PuzzlePiece" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PuzzlePiece.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB