Updated Scintilla control to ScintillaNET 3.5.6 (https://github.com/jacobslusser/ScintillaNET). Scintilla.dll is no longer used by GZDB and can be safely removed.

Changed, Script Editor: pressing Ctrl-S when fixed compilable script tab (like SCRIPTS tab) is selected now compiles the script.
Fixed, Error Logger: fixed slowdowns when adding lots of errors and "Errors and Warnings" window was opened.
Fixed, Script Editor: text caret was incorrectly positioned after selecting a function in the navigator dropdown.
Fixed, Script Editor: incorrect ACS configuration was used for SCRIPTS lump for maps in Hexen map format for ZDoom-based engines.
Internal, rendering: added more error reporing-related code to D3DShader.LoadEffect().
Updated ZDoom_DECORATE.cfg.
This commit is contained in:
MaxED 2016-01-27 14:08:15 +00:00
parent f9a7c22e03
commit 5fd02a6080
40 changed files with 1508 additions and 934 deletions

View file

@ -171,52 +171,6 @@ shortcuts
}
colors
{
color0 = -16777216;
color1 = -11425537;
color2 = -1;
color3 = -4259937;
color4 = -3750145;
color5 = -21504;
color6 = -49152;
color7 = -128;
color8 = -12171706;
color9 = -13018769;
color10 = -16711681;
color11 = -24576;
color12 = -49152;
color13 = -1;
color14 = -4144960;
color15 = -16777216;
color16 = -6908266;
color17 = -16753716;
color18 = -11366857;
color19 = -6671822;
color20 = -9868951;
color21 = -12490271;
color22 = -14513374;
color23 = -14634326;
color24 = -5103070;
color25 = -7077677;
color26 = -4684277;
color27 = -4144960;
color28 = -8355712;
color29 = -16728065;
color30 = -13447886;
color31 = -5247250;
color32 = -40121;
color33 = -1146130;
color34 = -256;
color35 = -657931;
color36 = -18751;
color37 = -29696;
color38 = -4343957;
color39 = -2448096;
color40 = -65536;
}
mainwindow
{
positionx = 150;

Binary file not shown.

BIN
Build/ScintillaNET.3.5.dll Normal file

Binary file not shown.

View file

@ -16,6 +16,10 @@ insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
lexer = 35; // CPP-style, case-insensitive
functionopen = "(";
functionclose = ")";
codeblockopen = "{";
codeblockclose = "}";
arrayopen = "[";
arrayclose = "]";
argumentdelimiter = ",";
terminator = ";";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";

View file

@ -7,6 +7,8 @@ description = "GZDoom MODELDEF";
codepage = 0;
extensions = "mdd";
casesensitive = false;
codeblockopen = "{";
codeblockclose = "}";
insertcase = 1; // 0=Normal, 1=Lowercase, 2=Uppercase
lexer = 35; // CPP-style, case-insensitive
keywordhelp = "http://zdoom.org/wiki/MODELDEF";

View file

@ -16,6 +16,10 @@ insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
lexer = 35; // CPP-style, case-insensitive
functionopen = "(";
functionclose = ")";
codeblockopen = "{";
codeblockclose = "}";
arrayopen = "[";
arrayclose = "]";
argumentdelimiter = ",";
terminator = ";";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";

View file

@ -16,6 +16,10 @@ insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
lexer = 35; // CPP-style, case-insensitive
functionopen = "(";
functionclose = ")";
codeblockopen = "{";
codeblockclose = "}";
arrayopen = "[";
arrayclose = "]";
argumentdelimiter = ",";
terminator = ";";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";
@ -24,12 +28,12 @@ scripttype = 1; //0 = unknown script, 1 = acc, 2 = modeldef, 3 = decorate
keywords
{
#Define = "#Define identifier expression";
#EncryptStrings = "#EncryptStrings";
#Import = "#Import";
#Include = "#Include";
#LibDefine = "#LibDefine identifier expression";
#Library = "#Library";
#define = "#Define identifier expression";
#encryptstrings = "#EncryptStrings";
#import = "#Import";
#include = "#Include";
#libdefine = "#LibDefine identifier expression";
#library = "#Library";
#NoCompact = "#NoCompact";
#NoWadAuthor = "#NoWadAuthor";
#WadAuthor = "#WadAuthor";
@ -59,11 +63,11 @@ keywords
//BlueScore = "BlueScore()";
//BlueTeamCount = "BlueTeamCount()";
//BlueTeamScore = "BlueTeamScore()";
Bool = "Bool expression";
Break = "Break";
bool = "Bool expression";
break = "Break";
CancelFade = "void CancelFade(void)\nIf either FadeTo or FadeRange is currently in progress,\nCancelFade stops it and turns off the palette flash.";
CanRaiseActor = "bool CanRaiseActor(int tid)\nChecks to see if the actor or actors with the specified tid are viable for resurrection.\nIf tid is 0, the check is done on the activator of the script.";
Case = "Case expression";
case = "Case expression";
Ceiling_CrushAndRaise = "Ceiling_CrushAndRaise(tag, speed, crush, crushmode)";
Ceiling_CrushAndRaiseA = "Ceiling_CrushAndRaiseA(tag, dspeed, uspeed, crush, crushmode)";
Ceiling_CrushAndRaiseDist = "Ceiling_CrushAndRaiseDist(tag, dist, speed, damage, crushmode)";
@ -113,16 +117,16 @@ keywords
ClearInventory = "void ClearInventory(void)\nClears the player's inventory of weapons, ammo, armor and usable items.";
ClearLineSpecial = "void ClearLineSpecial(void)\nClears the special of the line that activated the script.";
//ConsoleCommand = "void ConsoleCommand(str command)";
Const = "const";
Continue = "continue";
cos = "fixed Cos(int angle)";
const = "const";
continue = "continue";
Cos = "fixed Cos(int angle)";
CreateTranslation = "void CreateTranslation(int transnumber, a:b=c:d, ...)";
DamageThing = "DamageThing(amount, mod)";
Death = "Script expression Death";
Default = "default:";
DEATH = "Script expression Death";
default = "default:";
Delay = "void Delay(int tics)";
Disconnect = "Script expression Disconnect";
Do = "do";
DISCONNECT = "Script expression Disconnect";
do = "do";
Door_Animated = "Door_Animated(tag, speed, delay, lock)";
Door_Close = "Door_Close(tag, speed, lighttag)";
Door_CloseWaitOpen = "Door_CloseWaitOpen(tag, speed, delay, lighttag)";
@ -134,8 +138,8 @@ keywords
Elevator_LowerToNearest = "Elevator_LowerToNearest(tag, speed)";
Elevator_MoveToFloor = "Elevator_MoveToFloor(tag, speed)";
Elevator_RaiseToNearest = "Elevator_RaiseToNearest(tag, speed)";
Else = "Else";
Enter = "Script expression Enter";
else = "Else";
ENTER = "Script expression Enter";
Exit_Normal = "Exit_Normal(pos)";
Exit_Secret = "Exit_Secret(pos)";
FadeRange = "void FadeRange(int red1, int green1, int blue1, fixed amount1, int red2, int green2, int blue2, fixed amount2, fixed seconds)\nSets the current flash to the first color set and then fades it to the second color set over the specified number of seconds.";
@ -170,10 +174,10 @@ keywords
FloorAndCeiling_LowerByValue = "FloorAndCeiling_LowerByValue(tag, speed, height)";
FloorAndCeiling_LowerRaise = "FloorAndCeiling_LowerRaise(tag, fspeed, cspeed, boomemu)";
FloorAndCeiling_RaiseByValue = "FloorAndCeiling_RaiseByValue(tag, speed, height)";
For = "for(initialization, condition, iteration)";
for = "for(initialization, condition, iteration)";
ForceField = "ForceField";
FS_Execute = "FS_Execute(script, side, keynum, message)";
Function = "function void expression(void)";
function = "function void expression(void)";
GameSkill = "int GameSkill(void)";
GameType = "int GameType(void)";
Generic_Ceiling = "Generic_Ceiling(tag, speed, height, target, flag)";
@ -242,8 +246,8 @@ keywords
HealThing = "HealThing(amount)";
HudMessage = "void hudmessage(s:text; int type, int id, int color, fixed x, fixed y, fixed holdTime)";
HudMessageBold = "void HudMessageBold(s:text; int type, int id, int color, fixed x, fixed y, fixed holdTime)";
If = "if(expression)";
Int = "int expression";
if = "if(expression)";
int = "int expression";
//IsMultiplayer = "int IsMultiplayer(void)";
//IsOneFlagCTF = "int IsOneFlagCTF(void)";
IsPointerEqual = "bool IsPointerEqual(int ptr_select1, int ptr_select2[, int tid1[, int tid2]])";
@ -260,7 +264,7 @@ keywords
Light_Stop = "Light_Stop(tag)";
Light_Strobe = "Light_Strobe(tag, upper, lower, u-tics, l-tics)";
Light_StrobeDoom = "Light_StrobeDoom(tag, u-tics, l-tics)";
Lightning = "Script expression Lightning";
LIGHTNING = "Script expression Lightning";
LineAttack = "LineAttack(int tid, fixed angle, fixed pitch, int damage[, str pufftype = 'BulletPuff'[, str damagetype = 'None'[, fixed range = 2048[, int flags = 0[, int pufftid = 0]]]]])\nFires a hitscan attack. If tid is 0, the activator of the script is the source of the attack.";
Line_AlignCeiling = "Line_AlignCeiling(lineid, side)";
Line_AlignFloor = "Line_AlignFloor(lineid, side)";
@ -273,11 +277,11 @@ keywords
Log = "void Log(type:expression)\nLog will print something in the log area of the screen (top left), as well as logging it to the console.\nIt uses the same parameter format as the Print function.";
MorphActor = "int MorphActor(int tid, [str playerclass, [str monsterclass, [int duration, [int style, [str morphflash, [str unmorphflash]]]]]])";
NamedScriptWait = "void NamedScriptWait(str script)";
Net = "Script expression Net";
NET = "Script expression Net";
NoiseAlert = "NoiseAlert(target_tid, emiter_tid)";
Open = "Script expression Open";
OPEN = "Script expression Open";
PickActor = "bool PickActor(int source_tid, fixed angle, fixed pitch, fixed distance, int tid[, int actorMask = MF_SHOOTABLE[, int wallMask = ML_BLOCKEVERYTHING | ML_BLOCKHITSCAN[, bool forcetid = false]]])";
Pickup = "Script expression Pickup";
//PICKUP = "Script expression Pickup";
Pillar_Build = "Pillar_Build(tag, speed, height)";
Pillar_BuildAndCrush = "Pillar_BuildAndCrush(tag, speed, height, crush, crushmode)";
Pillar_Open = "Pillar_Open(tag, speed, fdist, cdist)";
@ -324,10 +328,10 @@ keywords
Radius_Quake2 = "void Radius_Quake2(int tid, int intensity, int duration, int damrad, int tremrad, str sound)";
Random = "int Random(int min, int max)";
ReplaceTextures = "void ReplaceTextures(str oldtexturename, str newtexturename[, int flags])\nReplaces all occurences of oldtexturename with newtexturename.\nNOT_ flags can be used.";
Respawn = "Script expression Respawn";
RESPAWN = "Script expression Respawn";
Restart = "Restart";
Return = "Return";
Script = "Script expression";
return = "Return";
script = "Script expression";
ScriptWait = "void ScriptWait(int script)";
Scroll_Ceiling = "Scroll_Ceiling(tag, x-move, y-move, unused)";
Scroll_Floor = "Scroll_Floor(tag, x-move, y-move, type)";
@ -400,7 +404,7 @@ keywords
SetUserCVarString = "bool SetUserCVarString(int playernumber, str cvar, str value)\nSets the console variable of a particular player.\nOnly mod-defined console variables through CVARINFO can be changed by using this function.\nReturns FALSE if cvar is invalid, it is not writable, or the player doesn't exist.";
SetUserVariable = "void SetUserVariable(int tid, str name, int value)\nSets one of the affected actor's user variables.";
SetWeapon = "bool SetWeapon(str weaponname)\nSets the player's current weapon to weaponname.\nReturns TRUE if the weapon was set successfully, and FALSE if not.";
sin = "fixed Sin(int angle)";
Sin = "fixed Sin(int angle)";
SoundSequence = "void SoundSequence(str sndseq)\nPlays a sound sequence defined in SNDSEQ lump.";
SoundSequenceOnActor = "void SoundSequenceOnActor(int tid, str sndseq)\nPlays a sound sequence defined in SNDSEQ lump.";
SoundSequenceOnPolyObj = "void SoundSequenceOnPolyobj(int polynum, str sndseq)\nPlays a sound sequence defined in SNDSEQ lump.";
@ -435,7 +439,7 @@ keywords
StrRight = "str StrRight(str string, int length)\nCreates a new string containing the length last characters of string.\nIf string does not exist, an empty string is returned.\nIf string is shorter than length characters, the entire string is returned.";
Suspend = "Suspend";
SwapActorTeleFog = "int SwapActorTeleFog(int tid)";
Switch = "Switch(expression)";
switch = "Switch(expression)";
TagWait = "void TagWait(int tag)";
TakeActorInventory = "void TakeActorInventory(int tid, str inventory_item, int amount)\nThis function will take the amount of items from the specified actor.\nTakeActorInventory can remove items that are flagged as undroppable.";
TakeInventory = "void TakeInventory(str inventory_item, int amount)\nThis function will take the number of items specified from the activator.\nTakeInventory can remove items that are flagged as undroppable.";
@ -482,19 +486,19 @@ keywords
Timer = "int Timer(void)";
TranslucentLine = "TranslucentLine(lineid, amount, additive, moreflags)";
UniqueTID = "int UniqueTID([int tid[, int limit]])";
Unloading = "Script expression Unloading";
UNLOADING = "Script expression Unloading";
UnMorphActor = "int UnMorphActor(int tid[, bool force])";
Until = "Until(expression)";
until = "Until(expression)";
UseActorInventory = "int UseActorInventory(int tid, str classname)\nForces the actor(s) with the specified tid to use an item from their inventory, if they have one.\nReturns TRUE if the item was used successfully.";
UseInventory = "int UseInventory(str classname)\nForces the activator to use the specified inventory item, if he has it.\nReturns TRUE if the item was used successfully.";
UsePuzzleItem = "UsePuzzleItem(item, script, arg1, arg2, arg3)";
VectorAngle = "fixed VectorAngle(int x, int y)";
VectorLength = "int VectorLength(int x, int y)";
Void = "void";
void = "void";
Warp = "bool Warp(int destinationtid, fixed xofs, fixed yofs, fixed zofs, int angle, int flags[, str success_state[, bool exactstate[, fixed heightoffset]]])";
While = "while(expression)";
WhiteReturn = "Script expression WhiteReturn";
World = "World Int expression:identifier";
while = "while(expression)";
//WHITERETURN = "Script expression WhiteReturn";
world = "World Int expression:identifier";
}
constants

View file

@ -11,6 +11,10 @@ insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
lexer = 35;
functionopen = "(";
functionclose = ")";
codeblockopen = "{";
codeblockclose = "}";
arrayopen = "[";
arrayclose = "]";
argumentdelimiter = ",";
terminator = ";";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";
@ -127,7 +131,7 @@ keywords
A_CheckFloor = "A_CheckFloor(int offset OR str state)";
A_CheckFlag = "A_CheckFlag(str flagname, state label[, int check_pointer = AAPTR_DEFAULT])";
A_CheckLOF = "A_CheckLOF(state jump[, int flags = 0[, float range = 0.0[, float minrange = 0.0[, float angle = 0.0[, float pitch = 0.0[, float offsetheight = 0.0[, float offsetwidth = 0.0[, int ptr_target = AAPTR_DEFAULT]]]]]]]])";
A_CheckProximity = "A_CheckProximity(str \"jump\", str classname, float distance[, int count = 1[, int flags = 0[, int pointer]]])";
A_CheckProximity = "A_CheckProximity(str jump, str classname, float distance[, int count = 1[, int flags = 0[, int pointer = AAPTR_DEFAULT]]])";
A_CheckRange = "A_CheckRange(float distance, int offset OR str state[, bool 2d_check])";
A_CheckSight = "A_CheckSight(int offset OR str state)";
A_CheckSightOrRange = "A_CheckSightOrRange(float distance, int offset OR str state[, bool 2d_check])";
@ -1204,6 +1208,13 @@ constants
CPXF_DEADONLY;
CPXF_LESSOREQUAL;
CPXF_EXACT;
CPXF_CHECKSIGHT;
CPXF_SETTARGET;
CPXF_SETMASTER;
CPXF_SETTRACER;
CPXF_FARTHEST;
CPXF_CLOSEST;
CPXF_SETONPTR;
//A_FaceTraget/Master/Tracer flags
FAF_BOTTOM;
FAF_MIDDLE;

View file

@ -9,6 +9,8 @@ extensions = "txt";
casesensitive = false;
insertcase = 1; // 0=Normal, 1=Lowercase, 2=Uppercase
lexer = 35; // CPP-style, case-insensitive
codeblockopen = "{";
codeblockclose = "}";
terminator = ";";
keywords

View file

@ -16,6 +16,10 @@ insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
lexer = 35; // CPP-style, case-insensitive
functionopen = "(";
functionclose = ")";
codeblockopen = "{";
codeblockclose = "}";
arrayopen = "[";
arrayclose = "]";
argumentdelimiter = ",";
terminator = ";";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";

View file

@ -0,0 +1,3 @@
switch ([EP])[LB]{
}

View file

@ -44,7 +44,7 @@ Source: Updater.ini; DestDir: {app}; Flags: ignoreversion
Source: Refmanual.chm; DestDir: {app}; Flags: ignoreversion
Source: DevIL.dll; DestDir: {app}; Flags: ignoreversion
Source: SharpCompress.3.5.dll; DestDir: {app}; Flags: ignoreversion
Source: Scintilla.dll; DestDir: {app}; Flags: ignoreversion
Source: ScintillaNET.3.5.dll; DestDir: {app}; Flags: ignoreversion
Source: SlimDX.dll; DestDir: {app}; Flags: ignoreversion
Source: GPL.txt; DestDir: {app}; Flags: ignoreversion
Source: Compilers\*; DestDir: {app}\Compilers; Flags: ignoreversion recursesubdirs

View file

@ -122,19 +122,9 @@
<Compile Include="Controls\ArgumentBox.Designer.cs">
<DependentUpon>ArgumentBox.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ScriptEditorControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ScriptEditorControl.Designer.cs">
<DependentUpon>ScriptEditorControl.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ScriptDocumentTab.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\ScintillaConstants.cs" />
<Compile Include="Controls\ScintillaControl.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\ScriptEditorPanel.cs">
<SubType>UserControl</SubType>
</Compile>
@ -534,6 +524,9 @@
</ItemGroup>
<ItemGroup>
<Reference Include="JetBrains.Profiler.Core.Api, Version=1.3.1661.20096, Culture=neutral, PublicKeyToken=1010a0d8d6380325" Condition=" '$(Configuration)|$(Platform)' == 'Debug + Profiler|x86' Or '$(Configuration)|$(Platform)' == 'Release + Profiler|x86' " />
<Reference Include="ScintillaNET.3.5, Version=3.5.6.0, Culture=neutral, processorArchitecture=x86">
<Private>False</Private>
</Reference>
<Reference Include="SharpCompress.3.5, Version=0.11.2.0, Culture=neutral, processorArchitecture=x86">
<Private>False</Private>
</Reference>
@ -698,7 +691,9 @@
</ItemGroup>
<ItemGroup>
<None Include="app.manifest" />
<None Include="Resources\ScriptSnippet.xpm" />
<EmbeddedResource Include="Controls\ScriptEditorControl.resx">
<DependentUpon>ScriptEditorControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Resources\SkySphere.md3" />
<None Include="Resources\ThingStatistics.png" />
<None Include="Resources\Copy.png" />
@ -766,6 +761,12 @@
<Compile Include="Controls\PasteOptionsControl.Designer.cs">
<DependentUpon>PasteOptionsControl.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ScriptEditorControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ScriptEditorControl.designer.cs">
<DependentUpon>ScriptEditorControl.cs</DependentUpon>
</Compile>
<Compile Include="Controls\SectorSlopeControl.cs">
<SubType>UserControl</SubType>
</Compile>
@ -1128,6 +1129,13 @@
<None Include="Resources\ModelDisabled.png" />
<None Include="Resources\ModelFiltered.png" />
<Content Include="Resources\Model_selected.png" />
<None Include="Resources\TextWhitespace.png" />
<None Include="Resources\TextIndent.png" />
<None Include="Resources\TextUnindent.png" />
<None Include="Resources\ScriptSnippet.png" />
<None Include="Resources\ScriptKeyword.png" />
<None Include="Resources\ScriptError.png" />
<None Include="Resources\ScriptConstant.png" />
<None Include="Resources\Sky.png" />
<None Include="Resources\Update.png" />
<None Include="Resources\Reload.png" />
@ -1201,9 +1209,6 @@
<Compile Include="Windows\PreferencesController.cs" />
<None Include="Resources\Script2.png" />
<None Include="Resources\ScriptCompile.png" />
<None Include="Resources\ScriptConstant.xpm" />
<None Include="Resources\ScriptError.xpm" />
<None Include="Resources\ScriptKeyword.xpm" />
<None Include="Resources\ScriptPalette.png" />
<None Include="Resources\SaveAll.png" />
<None Include="Resources\SaveScript.png" />
@ -1219,10 +1224,6 @@
<None Include="Resources\ViewTextureFloor.png" />
<None Include="Resources\ViewNormal.png" />
<None Include="Resources\KnownTextureSet.png" />
<EmbeddedResource Include="Controls\ScriptEditorControl.resx">
<SubType>Designer</SubType>
<DependentUpon>ScriptEditorControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Hourglass3D.png" />
<None Include="Resources\Failed.png" />
<None Include="Resources\Grid2_arrowup.png" />

View file

@ -66,6 +66,7 @@ namespace CodeImp.DoomBuilder.Config
private bool scriptfontbold;
private bool scriptontop;
private bool scriptautoindent;
private bool scriptusetabs; //mxd
private bool snippetsallmanstyle; //mxd
private string screenshotspath; //mxd
private int scripttabwidth;
@ -162,6 +163,7 @@ namespace CodeImp.DoomBuilder.Config
public int ZoomFactor { get { return zoomfactor; } internal set { zoomfactor = value; } }
public bool ShowErrorsWindow { get { return showerrorswindow; } internal set { showerrorswindow = value; } }
public bool AnimateVisualSelection { get { return animatevisualselection; } internal set { animatevisualselection = value; } }
public bool ScriptUseTabs { get { return scriptusetabs; } internal set { scriptusetabs = value; } } //mxd
public int ScriptTabWidth { get { return scripttabwidth; } internal set { scripttabwidth = value; } }
public bool ScriptAutoIndent { get { return scriptautoindent; } internal set { scriptautoindent = value; } }
public bool SnippetsAllmanStyle { get { return snippetsallmanstyle; } internal set { snippetsallmanstyle = value; } } //mxd
@ -268,13 +270,14 @@ namespace CodeImp.DoomBuilder.Config
movespeed = cfg.ReadSetting("movespeed", 100);
viewdistance = cfg.ReadSetting("viewdistance", 3000.0f);
invertyaxis = cfg.ReadSetting("invertyaxis", false);
scriptfontname = cfg.ReadSetting("scriptfontname", "Lucida Console");
scriptfontname = cfg.ReadSetting("scriptfontname", "Courier New");
scriptfontsize = cfg.ReadSetting("scriptfontsize", 10);
scriptfontbold = cfg.ReadSetting("scriptfontbold", false);
scriptautoindent = cfg.ReadSetting("scriptautoindent", true);
snippetsallmanstyle = cfg.ReadSetting("snippetsallmanstyle", false); //mxd
screenshotspath = cfg.ReadSetting("screenshotspath", General.DefaultScreenshotsPath); //mxd
scriptontop = cfg.ReadSetting("scriptontop", true);
scriptusetabs = cfg.ReadSetting("scriptusetabs", true); //mxd
scripttabwidth = cfg.ReadSetting("scripttabwidth", 4);
previewimagesize = cfg.ReadSetting("previewimagesize", 1);
autoscrollspeed = cfg.ReadSetting("autoscrollspeed", 0);
@ -368,6 +371,7 @@ namespace CodeImp.DoomBuilder.Config
cfg.WriteSetting("scriptfontsize", scriptfontsize);
cfg.WriteSetting("scriptfontbold", scriptfontbold);
cfg.WriteSetting("scriptontop", scriptontop);
cfg.WriteSetting("scriptusetabs", scriptusetabs); //mxd
cfg.WriteSetting("scripttabwidth", scripttabwidth);
cfg.WriteSetting("scriptautoindent", scriptautoindent);
cfg.WriteSetting("snippetsallmanstyle", snippetsallmanstyle); //mxd

View file

@ -21,6 +21,7 @@ using System.Collections;
using System.Collections.Generic;
using System.IO;
using CodeImp.DoomBuilder.IO;
using ScintillaNET;
#endregion
@ -54,21 +55,27 @@ namespace CodeImp.DoomBuilder.Config
private readonly string[] extensions;
private readonly bool casesensitive;
private readonly int insertcase;
private readonly int lexer;
private readonly Lexer lexer;
private readonly string keywordhelp;
private readonly string functionopen;
private readonly string functionclose;
private readonly string codeblockopen; //mxd
private readonly string codeblockclose; //mxd
private readonly string arrayopen; //mxd
private readonly string arrayclose; //mxd
private readonly string argumentdelimiter;
private readonly string terminator;
private readonly string functionregex;
private readonly ScriptType scripttype; //mxd
// Collections
private readonly Dictionary<string, string> keywords;
private readonly Dictionary<string, string> lowerkeywords;
private readonly List<string> keywordkeyssorted; //mxd
private readonly List<string> constants;
private readonly Dictionary<string, string> lowerconstants;
private readonly Dictionary<string, string[]> snippets; //mxd
private readonly HashSet<string> snippetkeyssorted; //mxd
private readonly HashSet<char> braces; //mxd
#endregion
@ -85,19 +92,23 @@ namespace CodeImp.DoomBuilder.Config
public string[] Extensions { get { return extensions; } }
public bool CaseSensitive { get { return casesensitive; } }
public int InsertCase { get { return insertcase; } }
public int Lexer { get { return lexer; } }
public Lexer Lexer { get { return lexer; } }
public string KeywordHelp { get { return keywordhelp; } }
public string FunctionOpen { get { return functionopen; } }
public string FunctionClose { get { return functionclose; } }
public string CodeBlockOpen { get { return codeblockopen; } } //mxd
public string CodeBlockClose { get { return codeblockclose; } } //mxd
public string ArrayOpen { get { return arrayopen; } } //mxd
public string ArrayClose { get { return arrayclose; } } //mxd
public string ArgumentDelimiter { get { return argumentdelimiter; } }
public string Terminator { get { return terminator; } }
public string FunctionRegEx { get { return functionregex; } }
public ScriptType ScriptType { get { return scripttype; } } //mxd
public Dictionary<string, string[]> Snippets { get { return snippets; } } //mxd
// Collections
public ICollection<string> Keywords { get { return keywords.Keys; } }
public ICollection<string> Keywords { get { return keywordkeyssorted; } }
public ICollection<string> Constants { get { return constants; } }
public ICollection<string> Snippets { get { return snippetkeyssorted; } }
public HashSet<char> BraceChars { get { return braces; } } //mxd
#endregion
@ -112,9 +123,13 @@ 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.keywordkeyssorted = new List<string>(); //mxd
this.snippets = new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase); //mxd
this.snippetkeyssorted = new HashSet<string>(); //mxd
this.braces = new HashSet<char>(); //mxd
// Settings
lexer = 1;
lexer = Lexer.Null;
casesensitive = false;
codepage = 65001;
parameters = "";
@ -123,13 +138,15 @@ namespace CodeImp.DoomBuilder.Config
keywordhelp = "";
functionopen = "";
functionclose = "";
codeblockopen = ""; //mxd
codeblockclose = ""; //mxd
arrayopen = ""; //mxd
arrayclose = ""; //mxd
argumentdelimiter = "";
terminator = "";
functionregex = "";
description = "Plain text";
scripttype = ScriptType.UNKNOWN; //mxd
extensions = new[] { "txt" };
snippets = new Dictionary<string, string[]>(StringComparer.Ordinal); //mxd
}
// Constructor
@ -140,7 +157,10 @@ 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
this.keywordkeyssorted = new List<string>(); //mxd
this.snippets = new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase); //mxd
this.snippetkeyssorted = new HashSet<string>(); //mxd
this.braces = new HashSet<char>(); //mxd
// Read settings
description = cfg.ReadSetting("description", "Untitled script");
@ -151,14 +171,25 @@ namespace CodeImp.DoomBuilder.Config
resultlump = cfg.ReadSetting("resultlump", "");
casesensitive = cfg.ReadSetting("casesensitive", true);
insertcase = cfg.ReadSetting("insertcase", 0);
lexer = cfg.ReadSetting("lexer", 0);
lexer = (Lexer)cfg.ReadSetting("lexer", (int)Lexer.Container);
keywordhelp = cfg.ReadSetting("keywordhelp", "");
functionopen = cfg.ReadSetting("functionopen", "");
functionclose = cfg.ReadSetting("functionclose", "");
codeblockopen = cfg.ReadSetting("codeblockopen", ""); //mxd
codeblockclose = cfg.ReadSetting("codeblockclose", ""); //mxd
arrayopen = cfg.ReadSetting("arrayopen", ""); //mxd
arrayclose = cfg.ReadSetting("arrayclose", ""); //mxd
argumentdelimiter = cfg.ReadSetting("argumentdelimiter", "");
terminator = cfg.ReadSetting("terminator", "");
functionregex = cfg.ReadSetting("functionregex", "");
scripttype = (ScriptType)cfg.ReadSetting("scripttype", (int)ScriptType.UNKNOWN); //mxd
//mxd. Make braces array
if(!string.IsNullOrEmpty(functionopen)) braces.Add(functionopen[0]);
if(!string.IsNullOrEmpty(functionclose)) braces.Add(functionclose[0]);
if(!string.IsNullOrEmpty(codeblockopen)) braces.Add(codeblockopen[0]);
if(!string.IsNullOrEmpty(codeblockclose)) braces.Add(codeblockclose[0]);
if(!string.IsNullOrEmpty(arrayopen)) braces.Add(arrayopen[0]);
if(!string.IsNullOrEmpty(arrayclose)) braces.Add(arrayclose[0]);
// Make extensions array
extensions = extensionsstring.Split(',');
@ -170,7 +201,11 @@ namespace CodeImp.DoomBuilder.Config
{
keywords.Add(de.Key.ToString(), de.Value.ToString());
lowerkeywords.Add(de.Key.ToString().ToLowerInvariant(), de.Key.ToString());
keywordkeyssorted.Add(de.Key.ToString()); //mxd
}
//mxd. Sort keywords lookup
keywordkeyssorted.Sort();
// Load constants
dic = cfg.ReadSetting("constants", new Hashtable());
@ -179,6 +214,48 @@ namespace CodeImp.DoomBuilder.Config
constants.Add(de.Key.ToString());
lowerconstants.Add(de.Key.ToString().ToLowerInvariant(), de.Key.ToString());
}
//mxd
constants.Sort();
//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);
List<string> sortedkeys = new List<string>();
foreach(string file in files)
{
string name = Path.GetFileNameWithoutExtension(file);
if(string.IsNullOrEmpty(name))
{
General.ErrorLogger.Add(ErrorType.Warning, "Failed to load snippet '" + file + "' for '" + description + "' script configuration.");
}
else
{
if(name.Contains(" ")) name = name.Replace(' ', '_');
string[] lines = File.ReadAllLines(file);
if(lines.Length > 0)
{
snippets.Add(name, lines);
sortedkeys.Add(name);
}
else
{
General.ErrorLogger.Add(ErrorType.Warning, "Failed to load snippet '" + file + "' for '" + description + "' script configuration: file is empty!");
}
}
}
//mxd. Sort snippets lookup
sortedkeys.Sort();
snippetkeyssorted = new HashSet<string>(sortedkeys, StringComparer.OrdinalIgnoreCase);
}
}
// Compiler specified?
if(compilername.Length > 0)
@ -198,38 +275,6 @@ 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
@ -279,6 +324,12 @@ namespace CodeImp.DoomBuilder.Config
return null;
}
//mxd
public string[] GetSnippet(string name)
{
return (snippetkeyssorted.Contains(name) ? snippets[name] : null);
}
// This sorts by description
public int CompareTo(ScriptConfiguration other)
{

View file

@ -20,13 +20,13 @@ using System;
using System.IO;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CodeImp.DoomBuilder.Windows;
using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.Compilers;
using CodeImp.DoomBuilder.GZBuilder.Data;
using CodeImp.DoomBuilder.GZBuilder.GZDoom;
using ScintillaNET;
#endregion
@ -36,8 +36,7 @@ namespace CodeImp.DoomBuilder.Controls
{
#region ================== Constants
private const int NAVIGATOR_BORDER_TOP = 8; //mxd
private const int EDITOR_BORDER_TOP = 33;
private const int EDITOR_BORDER_TOP = 4;
private const int EDITOR_BORDER_BOTTOM = 4;
private const int EDITOR_BORDER_LEFT = 4;
private const int EDITOR_BORDER_RIGHT = 4;
@ -48,7 +47,6 @@ namespace CodeImp.DoomBuilder.Controls
// The script edit control
protected readonly ScriptEditorControl editor;
protected readonly ComboBox navigator; //mxd
private bool preventchanges; //mxd
private string title; //mxd
@ -68,10 +66,14 @@ namespace CodeImp.DoomBuilder.Controls
public virtual bool IsReconfigurable { get { return true; } }
public virtual string Filename { get { return null; } }
public ScriptEditorPanel Panel { get { return panel; } }
public new string Text { get { return title; } } //mxd
public bool IsChanged { get { return editor.IsChanged; } internal set { editor.IsChanged = value; } } //mxd. Added setter
internal Scintilla Scintilla { get { return editor.Scintilla; } } //mxd
public string Title { get { return title; } } //mxd
public bool IsChanged { get { return editor.IsChanged; } }
public int SelectionStart { get { return editor.SelectionStart; } set { editor.SelectionStart = value; } }
public int SelectionEnd { get { return editor.SelectionEnd; } set { editor.SelectionEnd = value; } }
public bool ShowWhitespace { get { return editor.ShowWhitespace; } set { editor.ShowWhitespace = value; } } //mxd
public bool WrapLongLines { get { return editor.WrapLongLines; } set { editor.WrapLongLines = value; } } //mxd
public string SelectedText { get { return editor.SelectedText; } } //mxd
public ScriptConfiguration Config { get { return config; } }
#endregion
@ -89,19 +91,6 @@ namespace CodeImp.DoomBuilder.Controls
{
// Keep panel
this.panel = panel;
//mxd
navigator = new ComboBox();
navigator.Location = new Point(EDITOR_BORDER_LEFT, NAVIGATOR_BORDER_TOP);
navigator.Width = this.ClientSize.Width - EDITOR_BORDER_LEFT - EDITOR_BORDER_RIGHT;
navigator.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
navigator.DropDownStyle = ComboBoxStyle.DropDownList;
navigator.Name = "navigator";
navigator.TabStop = true;
navigator.TabIndex = 0;
navigator.DropDown += navigator_DropDown;
navigator.SelectedIndexChanged += navigator_SelectedIndexChanged;
this.Controls.Add(navigator);
// Make the script control
editor = new ScriptEditorControl();
@ -121,6 +110,11 @@ namespace CodeImp.DoomBuilder.Controls
editor.OnFindNext += panel.FindNext;
editor.OnFindPrevious += panel.FindPrevious; //mxd
editor.OnTextChanged += editor_TextChanged; //mxd
//mxd. Bind functionbar events
editor.FunctionBar.DropDown += functionbar_DropDown;
editor.FunctionBar.SelectedIndexChanged += functionbar_SelectedIndexChanged;
}
// Disposer
@ -263,112 +257,13 @@ namespace CodeImp.DoomBuilder.Controls
// Find next result
public bool FindNext(FindReplaceOptions options, bool useselectionstart)
{
byte[] data = editor.GetText();
string text = Encoding.GetEncoding(config.CodePage).GetString(data);
StringComparison mode = options.CaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase;
int startpos = (useselectionstart ? Math.Min(editor.SelectionStart, editor.SelectionEnd) : Math.Max(editor.SelectionStart, editor.SelectionEnd)); //mxd
bool wrapped = false;
while(true)
{
int result = text.IndexOf(options.FindText, startpos, mode);
if(result > -1)
{
// Check to see if it is the whole word
if(options.WholeWord)
{
// Veryfy that we have found a whole word
string foundword = editor.GetWordAt(result + 1);
if(foundword.Length != options.FindText.Length)
{
startpos = result + 1;
result = -1;
}
}
// Still ok?
if(result > -1)
{
// Select the result
editor.SelectionStart = result;
editor.SelectionEnd = result + options.FindText.Length;
editor.EnsureLineVisible(editor.LineFromPosition(editor.SelectionEnd));
return true;
}
}
else
{
// If we haven't tried from the start, try from the start now
if((startpos > 0) && !wrapped)
{
startpos = 0;
wrapped = true;
}
else
{
// Can't find it
return false;
}
}
}
return editor.FindNext(options, useselectionstart);
}
// Find previous result (mxd)
public bool FindPrevious(FindReplaceOptions options)
public bool FindPrevious(FindReplaceOptions options)
{
bool wrapped = false;
byte[] data = editor.GetText();
string text = Encoding.GetEncoding(config.CodePage).GetString(data);
StringComparison mode = options.CaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase;
int endpos = Math.Min(editor.SelectionStart, editor.SelectionEnd) - 1;
if(endpos < 0)
{
endpos = text.Length - 1;
wrapped = true;
}
while(true)
{
int result = text.LastIndexOf(options.FindText, endpos, mode);
if(result > -1)
{
// Check to see if it is the whole word
if(options.WholeWord)
{
// Veryfy that we have found a whole word
string foundword = editor.GetWordAt(result + 1);
if(foundword.Length != options.FindText.Length)
{
endpos = result - 1;
result = -1;
}
}
// Still ok?
if(result > -1)
{
// Select the result
editor.SelectionStart = result;
editor.SelectionEnd = result + options.FindText.Length;
editor.EnsureLineVisible(editor.LineFromPosition(editor.SelectionEnd));
return true;
}
}
else
{
// If we haven't tried from the end, try from the end now
if(!wrapped)
{
endpos = Math.Max(0, text.Length - 2);
wrapped = true;
}
else
{
// Can't find it
return false;
}
}
}
return editor.FindPrevious(options);
}
// This replaces the selection with the given text
@ -376,20 +271,13 @@ namespace CodeImp.DoomBuilder.Controls
{
editor.ReplaceSelection(replacement);
}
// This returns the selected text
public string GetSelectedText()
{
byte[] data = editor.GetText();
string text = Encoding.GetEncoding(config.CodePage).GetString(data);
if(editor.SelectionStart < editor.SelectionEnd)
return text.Substring(editor.SelectionStart, editor.SelectionEnd - editor.SelectionStart);
return "";
}
//mxd
protected void UpdateNavigator()
protected void UpdateNavigator()
{
// Store currently selected item name
string prevtext = editor.FunctionBar.Text;
switch(config.ScriptType)
{
case ScriptType.ACS:
@ -405,16 +293,33 @@ namespace CodeImp.DoomBuilder.Controls
break;
default: // Unsupported script type. Just clear the items
navigator.Items.Clear();
editor.FunctionBar.Items.Clear();
break;
}
// Put some text in the navigator (but don't actually trigger selection event)
navigator.Enabled = (navigator.Items.Count > 0);
if(navigator.Items.Count > 0)
editor.FunctionBar.Enabled = (editor.FunctionBar.Items.Count > 0);
if(editor.FunctionBar.Items.Count > 0)
{
preventchanges = true;
navigator.Text = navigator.Items[0].ToString();
// Put the text back if we still have the corresponding item
if(!string.IsNullOrEmpty(prevtext))
{
foreach(var item in editor.FunctionBar.Items)
{
if(item.ToString() == prevtext)
{
editor.FunctionBar.Text = item.ToString();
break;
}
}
}
// No dice. Use the first item
if(string.IsNullOrEmpty(editor.FunctionBar.Text))
editor.FunctionBar.Text = editor.FunctionBar.Items[0].ToString();
preventchanges = false;
}
}
@ -423,12 +328,12 @@ namespace CodeImp.DoomBuilder.Controls
private void UpdateNavigatorDecorate(MemoryStream stream)
{
if(stream == null) return;
navigator.Items.Clear();
editor.FunctionBar.Items.Clear();
DecorateParserSE parser = new DecorateParserSE();
if(parser.Parse(stream, "DECORATE", false))
{
navigator.Items.AddRange(parser.Actors.ToArray());
editor.FunctionBar.Items.AddRange(parser.Actors.ToArray());
}
if(parser.HasError)
@ -441,12 +346,12 @@ namespace CodeImp.DoomBuilder.Controls
private void UpdateNavigatorModeldef(MemoryStream stream)
{
if(stream == null) return;
navigator.Items.Clear();
editor.FunctionBar.Items.Clear();
ModeldefParserSE parser = new ModeldefParserSE();
if(parser.Parse(stream, "MODELDEF", false))
{
navigator.Items.AddRange(parser.Models.ToArray());
editor.FunctionBar.Items.AddRange(parser.Models.ToArray());
}
if(parser.HasError)
@ -459,14 +364,14 @@ namespace CodeImp.DoomBuilder.Controls
private void UpdateNavigatorAcs(MemoryStream stream)
{
if(stream == null) return;
navigator.Items.Clear();
editor.FunctionBar.Items.Clear();
AcsParserSE parser = new AcsParserSE { AddArgumentsToScriptNames = true, IsMapScriptsLump = this is ScriptLumpDocumentTab };
if(parser.Parse(stream, "SCRIPTS", false))
{
navigator.Items.AddRange(parser.NamedScripts.ToArray());
navigator.Items.AddRange(parser.NumberedScripts.ToArray());
navigator.Items.AddRange(parser.Functions.ToArray());
editor.FunctionBar.Items.AddRange(parser.NamedScripts.ToArray());
editor.FunctionBar.Items.AddRange(parser.NumberedScripts.ToArray());
editor.FunctionBar.Items.AddRange(parser.Functions.ToArray());
}
if(parser.HasError)
@ -494,9 +399,16 @@ namespace CodeImp.DoomBuilder.Controls
}
//mxd
internal void InsertSnippet(string[] lines)
internal void InsertSnippet(string name)
{
editor.InsertSnippet(lines);
string[] lines = config.GetSnippet(name);
if(lines != null) editor.InsertSnippet(lines);
}
//mxd
internal void IndentSelection(bool indent)
{
editor.IndentSelection(indent);
}
#endregion
@ -524,11 +436,11 @@ namespace CodeImp.DoomBuilder.Controls
}
//mxd
private void navigator_SelectedIndexChanged(object sender, EventArgs e)
private void functionbar_SelectedIndexChanged(object sender, EventArgs e)
{
if(!preventchanges && navigator.SelectedItem is ScriptItem)
if(!preventchanges && editor.FunctionBar.SelectedItem is ScriptItem)
{
ScriptItem si = navigator.SelectedItem as ScriptItem;
ScriptItem si = editor.FunctionBar.SelectedItem as ScriptItem;
editor.EnsureLineVisible(editor.LineFromPosition(si.CursorPosition));
editor.SelectionStart = si.CursorPosition;
editor.SelectionEnd = si.CursorPosition;
@ -540,7 +452,7 @@ namespace CodeImp.DoomBuilder.Controls
}
//mxd
private void navigator_DropDown(object sender, EventArgs e)
private void functionbar_DropDown(object sender, EventArgs e)
{
if(!preventchanges && editor.IsChanged) UpdateNavigator();
}

View file

@ -28,109 +28,37 @@ namespace CodeImp.DoomBuilder.Controls
/// </summary>
private void InitializeComponent()
{
this.functionbar = new System.Windows.Forms.ComboBox();
this.scriptedit = new CodeImp.DoomBuilder.Controls.ScintillaControl();
this.scriptedit = new ScintillaNET.Scintilla();
this.scriptpanel = new System.Windows.Forms.Panel();
this.functionbar = new System.Windows.Forms.ComboBox();
this.scriptpanel.SuspendLayout();
this.SuspendLayout();
//
// functionbar
//
this.functionbar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.functionbar.FormattingEnabled = true;
this.functionbar.Items.AddRange(new object[] {
"Function1",
"Function2",
"Function3"});
this.functionbar.Location = new System.Drawing.Point(0, 0);
this.functionbar.Name = "functionbar";
this.functionbar.Size = new System.Drawing.Size(474, 21);
this.functionbar.TabIndex = 1;
this.functionbar.TabStop = false;
//
// scriptedit
//
this.scriptedit.AnchorPosition = 0;
this.scriptedit.AutoCMaximumHeight = 0;
this.scriptedit.AutoCMaximumWidth = 0;
this.scriptedit.AutoCSeparator = 0;
this.scriptedit.AutoCTypeSeparator = 0;
this.scriptedit.BackColor = System.Drawing.SystemColors.Window;
this.scriptedit.CaretFore = 0;
this.scriptedit.CaretLineBack = 0;
this.scriptedit.CaretPeriod = 0;
this.scriptedit.CaretWidth = 0;
this.scriptedit.CodePage = 0;
this.scriptedit.ControlCharSymbol = 0;
this.scriptedit.CurrentPos = 0;
this.scriptedit.CursorType = 0;
this.scriptedit.AutoCIgnoreCase = true;
this.scriptedit.AutoCMaxHeight = 12;
this.scriptedit.AutoCOrder = ScintillaNET.Order.Custom;
this.scriptedit.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.scriptedit.CaretWidth = 2;
this.scriptedit.Dock = System.Windows.Forms.DockStyle.Fill;
this.scriptedit.DocPointer = 0;
this.scriptedit.EdgeColour = 0;
this.scriptedit.EdgeColumn = 0;
this.scriptedit.EdgeMode = 0;
this.scriptedit.EndAtLastLine = 0;
this.scriptedit.EndOfLineMode = CodeImp.DoomBuilder.Controls.ScriptEndOfLine.CRLF;
this.scriptedit.EOLMode = 0;
this.scriptedit.ExtraAscent = 0;
this.scriptedit.ExtraDescent = 0;
this.scriptedit.HighlightGuide = 0;
this.scriptedit.Indent = 0;
this.scriptedit.IndentationGuides = 0;
this.scriptedit.IsAutoCGetAutoHide = false;
this.scriptedit.IsAutoCGetCancelAtStart = false;
this.scriptedit.IsAutoCGetChooseSingle = false;
this.scriptedit.IsAutoCGetDropRestOfWord = false;
this.scriptedit.IsAutoCGetIgnoreCase = false;
this.scriptedit.IsBackSpaceUnIndents = false;
this.scriptedit.IsBufferedDraw = false;
this.scriptedit.IsCaretLineVisible = false;
this.scriptedit.IsFocus = false;
this.scriptedit.IsHScrollBar = false;
this.scriptedit.IsMouseDownCaptures = false;
this.scriptedit.IsOvertype = false;
this.scriptedit.IsReadOnly = false;
this.scriptedit.IsTabIndents = false;
this.scriptedit.IsTwoPhaseDraw = false;
this.scriptedit.IsUndoCollection = false;
this.scriptedit.IsUsePalette = false;
this.scriptedit.IsUseTabs = false;
this.scriptedit.IsViewEOL = false;
this.scriptedit.IsVScrollBar = false;
this.scriptedit.LayoutCache = 0;
this.scriptedit.Lexer = 0;
this.scriptedit.ExtraAscent = 1;
this.scriptedit.ExtraDescent = 1;
this.scriptedit.FontQuality = ScintillaNET.FontQuality.LcdOptimized;
this.scriptedit.Location = new System.Drawing.Point(0, 0);
this.scriptedit.MarginLeft = 0;
this.scriptedit.MarginRight = 0;
this.scriptedit.ModEventMask = 0;
this.scriptedit.MouseDwellTime = 0;
this.scriptedit.Name = "scriptedit";
this.scriptedit.PrintColourMode = 0;
this.scriptedit.PrintMagnification = 0;
this.scriptedit.PrintWrapMode = 0;
this.scriptedit.ScrollWidth = 0;
this.scriptedit.SearchFlags = 0;
this.scriptedit.SelectionEnd = 0;
this.scriptedit.SelectionMode = 0;
this.scriptedit.SelectionStart = 0;
this.scriptedit.Size = new System.Drawing.Size(470, 377);
this.scriptedit.Status = 0;
this.scriptedit.StyleBits = 0;
this.scriptedit.ScrollWidth = 200;
this.scriptedit.Size = new System.Drawing.Size(474, 381);
this.scriptedit.TabIndex = 0;
this.scriptedit.TabStop = false;
this.scriptedit.TabWidth = 0;
this.scriptedit.TargetEnd = 0;
this.scriptedit.TargetStart = 0;
this.scriptedit.ViewWhitespace = CodeImp.DoomBuilder.Controls.ScriptWhiteSpace.Invisible;
this.scriptedit.ViewWS = 0;
this.scriptedit.WrapMode = 0;
this.scriptedit.WrapStartIndent = 0;
this.scriptedit.WrapVisualFlags = 0;
this.scriptedit.WrapVisualFlagsLocation = 0;
this.scriptedit.XOffset = 0;
this.scriptedit.ZoomLevel = 0;
this.scriptedit.UseTabs = true;
this.scriptedit.WhitespaceSize = 2;
this.scriptedit.TextChanged += new System.EventHandler(this.scriptedit_TextChanged);
this.scriptedit.CharAdded += new System.EventHandler<ScintillaNET.CharAddedEventArgs>(this.scriptedit_CharAdded);
this.scriptedit.AutoCCompleted += new System.EventHandler<ScintillaNET.AutoCSelectionEventArgs>(this.scriptedit_AutoCCompleted);
this.scriptedit.InsertCheck += new System.EventHandler<ScintillaNET.InsertCheckEventArgs>(this.scriptedit_InsertCheck);
this.scriptedit.KeyUp += new System.Windows.Forms.KeyEventHandler(this.scriptedit_KeyUp);
this.scriptedit.UpdateUI += new System.EventHandler<ScintillaNET.UpdateUIEventArgs>(this.scriptedit_UpdateUI);
this.scriptedit.KeyDown += new System.Windows.Forms.KeyEventHandler(this.scriptedit_KeyDown);
//
// scriptpanel
@ -138,13 +66,24 @@ namespace CodeImp.DoomBuilder.Controls
this.scriptpanel.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.scriptpanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.scriptpanel.Controls.Add(this.scriptedit);
this.scriptpanel.Location = new System.Drawing.Point(0, 27);
this.scriptpanel.Name = "scriptpanel";
this.scriptpanel.Size = new System.Drawing.Size(474, 381);
this.scriptpanel.TabIndex = 2;
//
// functionbar
//
this.functionbar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.functionbar.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.functionbar.FormattingEnabled = true;
this.functionbar.Location = new System.Drawing.Point(0, 0);
this.functionbar.Name = "functionbar";
this.functionbar.Size = new System.Drawing.Size(474, 21);
this.functionbar.TabIndex = 2;
this.functionbar.TabStop = false;
//
// ScriptEditorControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@ -160,8 +99,8 @@ namespace CodeImp.DoomBuilder.Controls
#endregion
private ScintillaControl scriptedit;
private System.Windows.Forms.ComboBox functionbar;
private ScintillaNET.Scintilla scriptedit;
private System.Windows.Forms.Panel scriptpanel;
private System.Windows.Forms.ComboBox functionbar;
}
}

File diff suppressed because it is too large Load diff

View file

@ -44,6 +44,11 @@ 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.buttonunindent = new System.Windows.Forms.ToolStripButton();
this.buttonindent = new System.Windows.Forms.ToolStripButton();
this.buttonwhitespace = new System.Windows.Forms.ToolStripButton();
this.buttonwordwrap = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator6 = 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();
@ -68,6 +73,7 @@ namespace CodeImp.DoomBuilder.Controls
this.errorimages = new System.Windows.Forms.ImageList(this.components);
this.statusbar = new System.Windows.Forms.StatusStrip();
this.statuslabel = new System.Windows.Forms.ToolStripStatusLabel();
this.positionlabel = new System.Windows.Forms.ToolStripStatusLabel();
this.scripttype = new System.Windows.Forms.ToolStripStatusLabel();
this.statusflasher = new System.Windows.Forms.Timer(this.components);
this.statusresetter = new System.Windows.Forms.Timer(this.components);
@ -88,7 +94,7 @@ namespace CodeImp.DoomBuilder.Controls
this.tabs.Name = "tabs";
this.tabs.Padding = new System.Drawing.Point(12, 3);
this.tabs.SelectedIndex = 0;
this.tabs.Size = new System.Drawing.Size(720, 379);
this.tabs.Size = new System.Drawing.Size(794, 379);
this.tabs.TabIndex = 0;
this.tabs.TabStop = false;
this.tabs.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tabs_Selecting);
@ -111,6 +117,11 @@ namespace CodeImp.DoomBuilder.Controls
this.buttoncopy,
this.buttonpaste,
this.toolStripSeparator3,
this.buttonunindent,
this.buttonindent,
this.buttonwhitespace,
this.buttonwordwrap,
this.toolStripSeparator6,
this.buttonsnippets,
this.toolStripSeparator4,
this.buttonscriptconfig,
@ -126,7 +137,7 @@ namespace CodeImp.DoomBuilder.Controls
this.searchwholeword});
this.toolbar.Location = new System.Drawing.Point(0, 0);
this.toolbar.Name = "toolbar";
this.toolbar.Size = new System.Drawing.Size(726, 25);
this.toolbar.Size = new System.Drawing.Size(800, 25);
this.toolbar.TabIndex = 1;
//
// buttonnew
@ -240,6 +251,54 @@ namespace CodeImp.DoomBuilder.Controls
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25);
//
// buttonunindent
//
this.buttonunindent.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonunindent.Image = global::CodeImp.DoomBuilder.Properties.Resources.TextUnindent;
this.buttonunindent.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonunindent.Name = "buttonunindent";
this.buttonunindent.Size = new System.Drawing.Size(23, 22);
this.buttonunindent.Text = "Unindent selection";
this.buttonunindent.Click += new System.EventHandler(this.buttonunindent_Click);
//
// buttonindent
//
this.buttonindent.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonindent.Image = global::CodeImp.DoomBuilder.Properties.Resources.TextIndent;
this.buttonindent.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonindent.Name = "buttonindent";
this.buttonindent.Size = new System.Drawing.Size(23, 22);
this.buttonindent.Text = "Indent selection";
this.buttonindent.Click += new System.EventHandler(this.buttonindent_Click);
//
// buttonwhitespace
//
this.buttonwhitespace.CheckOnClick = true;
this.buttonwhitespace.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonwhitespace.Image = global::CodeImp.DoomBuilder.Properties.Resources.TextWhitespace;
this.buttonwhitespace.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonwhitespace.Name = "buttonwhitespace";
this.buttonwhitespace.Size = new System.Drawing.Size(23, 22);
this.buttonwhitespace.Text = "Show whitespace";
this.buttonwhitespace.Click += new System.EventHandler(this.buttonwhitespace_Click);
//
// buttonwordwrap
//
this.buttonwordwrap.CheckOnClick = true;
this.buttonwordwrap.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonwordwrap.Image = global::CodeImp.DoomBuilder.Properties.Resources.WordWrap;
this.buttonwordwrap.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonwordwrap.Name = "buttonwordwrap";
this.buttonwordwrap.Size = new System.Drawing.Size(23, 22);
this.buttonwordwrap.Text = "Wrap long lines";
this.buttonwordwrap.Click += new System.EventHandler(this.buttonwordwrap_Click);
//
// toolStripSeparator6
//
this.toolStripSeparator6.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.toolStripSeparator6.Name = "toolStripSeparator6";
this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25);
//
// buttonsnippets
//
this.buttonsnippets.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@ -391,7 +450,7 @@ namespace CodeImp.DoomBuilder.Controls
//
this.splitter.Panel2.Controls.Add(this.label1);
this.splitter.Panel2.Controls.Add(this.errorlist);
this.splitter.Size = new System.Drawing.Size(726, 516);
this.splitter.Size = new System.Drawing.Size(800, 516);
this.splitter.SplitterDistance = 390;
this.splitter.TabIndex = 2;
this.splitter.TabStop = false;
@ -406,7 +465,7 @@ namespace CodeImp.DoomBuilder.Controls
this.label1.Location = new System.Drawing.Point(3, 0);
this.label1.Name = "label1";
this.label1.Padding = new System.Windows.Forms.Padding(1);
this.label1.Size = new System.Drawing.Size(720, 16);
this.label1.Size = new System.Drawing.Size(794, 16);
this.label1.TabIndex = 1;
this.label1.Text = "Errors";
//
@ -427,7 +486,7 @@ namespace CodeImp.DoomBuilder.Controls
this.errorlist.MultiSelect = false;
this.errorlist.Name = "errorlist";
this.errorlist.ShowGroups = false;
this.errorlist.Size = new System.Drawing.Size(720, 100);
this.errorlist.Size = new System.Drawing.Size(794, 100);
this.errorlist.SmallImageList = this.errorimages;
this.errorlist.TabIndex = 0;
this.errorlist.TabStop = false;
@ -460,10 +519,11 @@ namespace CodeImp.DoomBuilder.Controls
//
this.statusbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.statuslabel,
this.positionlabel,
this.scripttype});
this.statusbar.Location = new System.Drawing.Point(0, 541);
this.statusbar.Name = "statusbar";
this.statusbar.Size = new System.Drawing.Size(726, 22);
this.statusbar.Size = new System.Drawing.Size(800, 22);
this.statusbar.TabIndex = 3;
this.statusbar.Text = "statusStrip1";
//
@ -476,11 +536,19 @@ namespace CodeImp.DoomBuilder.Controls
this.statuslabel.Size = new System.Drawing.Size(60, 17);
this.statuslabel.Text = "Ready.";
//
// positionlabel
//
this.positionlabel.Name = "positionlabel";
this.positionlabel.Size = new System.Drawing.Size(634, 17);
this.positionlabel.Spring = true;
this.positionlabel.Text = "100 : 12 (120)";
this.positionlabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// scripttype
//
this.scripttype.Margin = new System.Windows.Forms.Padding(30, 3, 0, 2);
this.scripttype.Name = "scripttype";
this.scripttype.Size = new System.Drawing.Size(648, 17);
this.scripttype.Spring = true;
this.scripttype.Size = new System.Drawing.Size(58, 17);
this.scripttype.Text = "Plain Text";
this.scripttype.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
@ -501,7 +569,7 @@ namespace CodeImp.DoomBuilder.Controls
this.Controls.Add(this.statusbar);
this.Controls.Add(this.toolbar);
this.Name = "ScriptEditorPanel";
this.Size = new System.Drawing.Size(726, 563);
this.Size = new System.Drawing.Size(800, 563);
this.toolbar.ResumeLayout(false);
this.toolbar.PerformLayout();
this.splitter.Panel1.ResumeLayout(false);
@ -557,5 +625,11 @@ namespace CodeImp.DoomBuilder.Controls
private System.Windows.Forms.ToolStripStatusLabel scripttype;
private System.Windows.Forms.Timer statusflasher;
private System.Windows.Forms.Timer statusresetter;
private System.Windows.Forms.ToolStripStatusLabel positionlabel;
private System.Windows.Forms.ToolStripButton buttonunindent;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
private System.Windows.Forms.ToolStripButton buttonindent;
private System.Windows.Forms.ToolStripButton buttonwhitespace;
private System.Windows.Forms.ToolStripButton buttonwordwrap;
}
}

View file

@ -25,6 +25,7 @@ using System.Windows.Forms;
using CodeImp.DoomBuilder.Compilers;
using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.Windows;
using ScintillaNET;
#endregion
@ -116,16 +117,20 @@ namespace CodeImp.DoomBuilder.Controls
foreach(MapLumpInfo maplumpinfo in General.Map.Config.MapLumps.Values)
{
// Is this a script lump?
if(maplumpinfo.Script != null)
{
// Load this!
ScriptLumpDocumentTab t = new ScriptLumpDocumentTab(this, maplumpinfo.Name, maplumpinfo.Script);
tabs.TabPages.Add(t);
}
else if(maplumpinfo.ScriptBuild) //mxd
if(maplumpinfo.ScriptBuild) //mxd
{
// Load this!
ScriptLumpDocumentTab t = new ScriptLumpDocumentTab(this, maplumpinfo.Name, General.CompiledScriptConfigs[General.Map.Options.ScriptCompiler]);
t.OnTextChanged += tabpage_OnLumpTextChanged; //mxd
t.Scintilla.UpdateUI += scintilla_OnUpdateUI; //mxd
tabs.TabPages.Add(t);
}
else if(maplumpinfo.Script != null)
{
// Load this!
ScriptLumpDocumentTab t = new ScriptLumpDocumentTab(this, maplumpinfo.Name, maplumpinfo.Script);
t.OnTextChanged += tabpage_OnLumpTextChanged; //mxd
t.Scintilla.UpdateUI += scintilla_OnUpdateUI; //mxd
tabs.TabPages.Add(t);
}
}
@ -160,21 +165,35 @@ namespace CodeImp.DoomBuilder.Controls
// This applies user preferences
public void ApplySettings()
{
// Apply settings
//int panel2size = General.Settings.ReadSetting("scriptspanel.splitter", splitter.ClientRectangle.Height - splitter.SplitterDistance);
//splitter.SplitterDistance = splitter.ClientRectangle.Height - panel2size;
errorlist.Columns[0].Width = General.Settings.ReadSetting("scriptspanel.errorscolumn0width", errorlist.Columns[0].Width);
errorlist.Columns[1].Width = General.Settings.ReadSetting("scriptspanel.errorscolumn1width", errorlist.Columns[1].Width);
errorlist.Columns[2].Width = General.Settings.ReadSetting("scriptspanel.errorscolumn2width", errorlist.Columns[2].Width);
buttonwhitespace.Checked = General.Settings.ReadSetting("scriptspanel.showwhitespace", false); //mxd
buttonwordwrap.Checked = General.Settings.ReadSetting("scriptspanel.wraplonglines", false); //mxd
ApplyTabSettings(); //mxd
}
// This saves user preferences
public void SaveSettings()
{
//General.Settings.WriteSetting("scriptspanel.splitter", splitter.ClientRectangle.Height - splitter.SplitterDistance);
General.Settings.WriteSetting("scriptspanel.errorscolumn0width", errorlist.Columns[0].Width);
General.Settings.WriteSetting("scriptspanel.errorscolumn1width", errorlist.Columns[1].Width);
General.Settings.WriteSetting("scriptspanel.errorscolumn2width", errorlist.Columns[2].Width);
General.Settings.WriteSetting("scriptspanel.showwhitespace", buttonwhitespace.Checked); //mxd
General.Settings.WriteSetting("scriptspanel.wraplonglines", buttonwordwrap.Checked); //mxd
}
//mxd
private void ApplyTabSettings()
{
foreach(var tp in tabs.TabPages)
{
ScriptDocumentTab scripttab = (tp as ScriptDocumentTab);
if(scripttab != null)
{
scripttab.WrapLongLines = buttonwordwrap.Checked;
scripttab.ShowWhitespace = buttonwhitespace.Checked;
}
}
}
#endregion
@ -230,7 +249,7 @@ namespace CodeImp.DoomBuilder.Controls
{
if(!string.IsNullOrEmpty(findoptions.FindText) && (options.ReplaceWith != null) && (ActiveTab != null))
{
if(string.Compare(ActiveTab.GetSelectedText(), options.FindText, !options.CaseSensitive) == 0)
if(string.Compare(ActiveTab.SelectedText, options.FindText, !options.CaseSensitive) == 0)
{
// Replace selection
ActiveTab.ReplaceSelection(options.ReplaceWith);
@ -321,7 +340,7 @@ namespace CodeImp.DoomBuilder.Controls
findreplaceform.Show(this.ParentForm);
if(ActiveTab.SelectionEnd != ActiveTab.SelectionStart)
findreplaceform.SetFindText(ActiveTab.GetSelectedText());
findreplaceform.SetFindText(ActiveTab.SelectedText);
}
catch(Exception)
{
@ -421,7 +440,7 @@ namespace CodeImp.DoomBuilder.Controls
if(t.IsChanged)
{
// Ask to save
DialogResult result = MessageBox.Show(this.ParentForm, "Do you want to save changes to " + t.Text + "?", "Close File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
DialogResult result = MessageBox.Show(this.ParentForm, "Do you want to save changes to " + t.Title + "?", "Close File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
switch(result)
{
case DialogResult.Yes:
@ -492,20 +511,24 @@ namespace CodeImp.DoomBuilder.Controls
t = (tabs.SelectedTab as ScriptDocumentTab);
// Enable/disable buttons
buttonsave.Enabled = (t != null) && t.ExplicitSave && t.IsChanged;
buttonsave.Enabled = (t != null && t.ExplicitSave && t.IsChanged);
buttonsaveall.Enabled = (explicitsavescripts > 0);
buttoncompile.Enabled = (t != null) && (t.Config.Compiler != null);
buttoncompile.Enabled = (t != null && t.Config.Compiler != null);
buttonsearch.Enabled = (t != null); //mxd
buttonkeywordhelp.Enabled = (t != null) && !string.IsNullOrEmpty(t.Config.KeywordHelp);
buttonscriptconfig.Enabled = (t != null) && t.IsReconfigurable;
buttonundo.Enabled = (t != null);
buttonredo.Enabled = (t != null);
buttoncopy.Enabled = (t != null);
buttoncut.Enabled = (t != null);
buttonpaste.Enabled = (t != null);
buttonclose.Enabled = (t != null) && t.IsClosable;
buttonkeywordhelp.Enabled = (t != null && !string.IsNullOrEmpty(t.Config.KeywordHelp));
buttonscriptconfig.Enabled = (t != null && t.IsReconfigurable);
buttonundo.Enabled = (t != null && t.Scintilla.CanUndo);
buttonredo.Enabled = (t != null && t.Scintilla.CanRedo);
buttoncopy.Enabled = (t != null && t.Scintilla.SelectionStart < t.Scintilla.SelectionEnd);
buttoncut.Enabled = (t != null && t.Scintilla.SelectionStart < t.Scintilla.SelectionEnd);
buttonpaste.Enabled = (t != null && t.Scintilla.CanPaste);
buttonclose.Enabled = (t != null && t.IsClosable);
buttonsnippets.DropDownItems.Clear(); //mxd
buttonsnippets.Enabled = (t != null) && t.Config.Snippets.Count > 0; //mxd
buttonsnippets.Enabled = (t != null && t.Config.Snippets.Count > 0); //mxd
buttonindent.Enabled = (t != null); //mxd
buttonunindent.Enabled = (t != null && t.Scintilla.Lines[t.Scintilla.CurrentLine].Indentation > 0); //mxd
buttonwhitespace.Enabled = (t != null); //mxd
buttonwordwrap.Enabled = (t != null); //mxd
if(t != null)
{
@ -519,7 +542,8 @@ namespace CodeImp.DoomBuilder.Controls
//mxd. Add snippets
if(t.Config != null && t.Config.Snippets.Count > 0)
{
if(t.Config.Snippets.Count > 0) foreach(KeyValuePair<string, string[]> group in t.Config.Snippets) buttonsnippets.DropDownItems.Add(group.Key).Click += OnInsertSnippetClick;
if(t.Config.Snippets.Count > 0)
foreach(string snippetname in t.Config.Snippets) buttonsnippets.DropDownItems.Add(snippetname).Click += OnInsertSnippetClick;
}
// Focus to script editor
@ -589,24 +613,27 @@ namespace CodeImp.DoomBuilder.Controls
// Done
t.OnTextChanged += tabpage_OnTextChanged; //mxd
t.IsChanged = false; //mxd. Not changed yet
t.Scintilla.UpdateUI += scintilla_OnUpdateUI;
UpdateToolbar(true);
return t;
}
else
{
// Failed
return null;
}
// Failed
return null;
}
// This saves the current open script
public void ExplicitSaveCurrentTab()
{
ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab);
if((t != null) && t.ExplicitSave)
if((t != null))
{
buttonsave_Click(this, EventArgs.Empty);
if(t.ExplicitSave)
buttonsave_Click(this, EventArgs.Empty);
else if(t.Config.Compiler != null) //mxd
buttoncompile_Click(this, EventArgs.Empty);
else
General.MessageBeep(MessageBeepType.Default);
}
else
{
@ -625,7 +652,7 @@ namespace CodeImp.DoomBuilder.Controls
{
// Get script
ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab);
return t.LaunchKeywordHelp();
return (t != null && t.LaunchKeywordHelp());
}
//mxd. This changes status text
@ -837,18 +864,14 @@ namespace CodeImp.DoomBuilder.Controls
t.SaveAs(savefile.FileName);
return true;
}
else
{
// Cancelled
return false;
}
}
else
{
// Save to same filename
t.Save();
return true;
// Cancelled
return false;
}
// Save to same filename
t.Save();
return true;
}
// A tab is selected
@ -894,15 +917,15 @@ namespace CodeImp.DoomBuilder.Controls
}
// Compile now
DisplayStatus(ScriptStatusType.Busy, "Compiling script \"" + t.Text + "\"...");
DisplayStatus(ScriptStatusType.Busy, "Compiling script \"" + t.Title + "\"...");
Cursor.Current = Cursors.WaitCursor;
t.Compile();
// Show warning
if((compilererrors != null) && (compilererrors.Count > 0))
DisplayStatus(ScriptStatusType.Warning, compilererrors.Count + " errors while compiling \"" + t.Text + "\"!");
DisplayStatus(ScriptStatusType.Warning, compilererrors.Count + " errors while compiling \"" + t.Title + "\"!");
else
DisplayStatus(ScriptStatusType.Info, "Script \"" + t.Text + "\" compiled without errors.");
DisplayStatus(ScriptStatusType.Info, "Script \"" + t.Title + "\" compiled without errors.");
Cursor.Current = Cursors.Default;
UpdateToolbar(true);
@ -948,6 +971,32 @@ namespace CodeImp.DoomBuilder.Controls
UpdateToolbar(true);
}
//mxd
private void buttonunindent_Click(object sender, EventArgs e)
{
ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab);
t.IndentSelection(false);
}
//mxd
private void buttonindent_Click(object sender, EventArgs e)
{
ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab);
t.IndentSelection(true);
}
//mxd
private void buttonwhitespace_Click(object sender, EventArgs e)
{
ApplyTabSettings();
}
//mxd
private void buttonwordwrap_Click(object sender, EventArgs e)
{
ApplyTabSettings();
}
//mxd. Search clicked
private void buttonsearch_Click(object sender, EventArgs e)
{
@ -958,7 +1007,7 @@ namespace CodeImp.DoomBuilder.Controls
private void OnInsertSnippetClick(object sender, EventArgs eventArgs)
{
ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab);
t.InsertSnippet( t.Config.Snippets[((ToolStripItem)sender).Text] );
t.InsertSnippet( ((ToolStripItem)sender).Text );
}
// Mouse released on tabs
@ -967,13 +1016,52 @@ namespace CodeImp.DoomBuilder.Controls
ForceFocus();
}
//mxd
//mxd. Text in ScriptFileDocumentTab was changed
private void tabpage_OnTextChanged(object sender, EventArgs eventArgs)
{
if(tabs.SelectedTab != null)
{
ScriptDocumentTab curtab = tabs.SelectedTab as ScriptDocumentTab;
buttonsave.Enabled = (curtab != null && curtab.ExplicitSave && curtab.IsChanged);
if(curtab != null)
{
buttonsave.Enabled = (curtab.ExplicitSave && curtab.IsChanged);
buttonundo.Enabled = curtab.Scintilla.CanUndo;
buttonredo.Enabled = curtab.Scintilla.CanRedo;
}
}
}
//mxd. Text in ScriptLumpDocumentTab was changed
private void tabpage_OnLumpTextChanged(object sender, EventArgs e)
{
if(tabs.SelectedTab != null)
{
ScriptDocumentTab curtab = tabs.SelectedTab as ScriptDocumentTab;
if(curtab != null)
{
buttonundo.Enabled = curtab.Scintilla.CanUndo;
buttonredo.Enabled = curtab.Scintilla.CanRedo;
}
}
}
//mxd
private void scintilla_OnUpdateUI(object sender, UpdateUIEventArgs e)
{
Scintilla s = sender as Scintilla;
if(s != null)
{
// Update caret position info [line] : [caret pos start] OR [caret pos start x selection length] ([total lines])
positionlabel.Text = (s.CurrentLine + 1) + " : "
+ (s.SelectionStart + 1 - s.Lines[s.LineFromPosition(s.SelectionStart)].Position)
+ (s.SelectionStart != s.SelectionEnd ? "x" + (s.SelectionEnd - s.SelectionStart) : "")
+ " (" + s.Lines.Count + ")";
// Update copy-paste buttons
buttoncut.Enabled = (s.SelectionEnd > s.SelectionStart);
buttoncopy.Enabled = (s.SelectionEnd > s.SelectionStart);
buttonpaste.Enabled = s.CanPaste;
buttonunindent.Enabled = s.Lines[s.CurrentLine].Indentation > 0;
}
}

View file

@ -61,7 +61,7 @@ namespace CodeImp.DoomBuilder.Controls
if(config.Extensions.Length > 0) ext = "." + config.Extensions[0];
SetTitle("Untitled" + ext);
editor.ClearUndoRedo();
navigator.Enabled = (config.ScriptType != ScriptType.UNKNOWN); //mxd
editor.FunctionBar.Enabled = (config.ScriptType != ScriptType.UNKNOWN); //mxd
}
#endregion
@ -289,7 +289,7 @@ namespace CodeImp.DoomBuilder.Controls
}
// Done
editor.IsChanged = false;
editor.SetSavePoint(); //mxd
UpdateTitle(); //mxd
return true;
}
@ -318,7 +318,7 @@ namespace CodeImp.DoomBuilder.Controls
try
{
// Read the file
editor.SetText(File.ReadAllBytes(filepathname));
editor.Text = File.ReadAllText(filepathname); //mxd
}
catch(Exception e)
{
@ -332,7 +332,6 @@ namespace CodeImp.DoomBuilder.Controls
// Setup
this.filepathname = filepathname;
editor.ClearUndoRedo();
editor.IsChanged = false; //mxd. Not changed yet
SetTitle(Path.GetFileName(filepathname));
UpdateNavigator(); //mxd

View file

@ -17,9 +17,9 @@
#region ================== Namespaces
using System.Collections.Generic;
using CodeImp.DoomBuilder.Config;
using System.IO;
using CodeImp.DoomBuilder.Compilers;
using CodeImp.DoomBuilder.Config;
#endregion
@ -72,13 +72,12 @@ namespace CodeImp.DoomBuilder.Controls
MemoryStream stream = General.Map.GetLumpData(this.lumpname);
if(stream != null)
{
editor.SetText(stream.ToArray());
editor.SetText(stream.ToArray()); //mxd
editor.ClearUndoRedo();
UpdateNavigator(); //mxd
}
// Set title
IsChanged = false; //mxd. Not changed yet
SetTitle(ismapheader ? General.Map.Options.CurrentName : this.lumpname.ToUpper());
}
@ -116,7 +115,7 @@ namespace CodeImp.DoomBuilder.Controls
// Store the lump data
MemoryStream stream = new MemoryStream(editor.GetText());
General.Map.SetLumpData(lumpname, stream);
editor.IsChanged = false;
editor.SetSavePoint(); //mxd
UpdateTitle(); //mxd
return true;
}

View file

@ -547,8 +547,8 @@ namespace CodeImp.DoomBuilder.Data
// This returns a preview image
public virtual Image GetPreview()
{
lock(this)
{
//lock(this)
//{
// Preview ready?
if(previewstate == ImageLoadState.Ready)
{
@ -565,7 +565,7 @@ namespace CodeImp.DoomBuilder.Data
// Return loading bitmap
return Properties.Resources.Hourglass;
}
//}
}
//mxd. This greatly speeds up Dictionary lookups

View file

@ -166,9 +166,9 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
case "function":
{
SkipWhitespace(true);
int startpos = (int)stream.Position;
string funcname = ReadToken(); //read return type
SkipWhitespace(true);
int startpos = (int)stream.Position;
funcname += " " + ReadToken(); //read function name
// Try to parse argument names

View file

@ -156,8 +156,10 @@ namespace CodeImp.DoomBuilder.GZBuilder.Windows
private static string GetExceptionDescription(Exception ex)
{
//add to error logger
General.ErrorLogger.Add(ErrorType.Error, "**** " + ex.Source + ": " + ex.Message + " ****");
// Add to error logger
General.WriteLogLine("***********************************************************");
General.ErrorLogger.Add(ErrorType.Error, ex.Source + ": " + ex.Message);
General.WriteLogLine("***********************************************************");
string message = "********EXCEPTION DETAILS********"
+ Environment.NewLine + ex.Source + ": " + ex.Message + Environment.NewLine + ex.StackTrace;

View file

@ -30,10 +30,11 @@ namespace CodeImp.DoomBuilder
#region ================== Variables
private List<ErrorItem> errors;
private readonly List<ErrorItem> errors;
private volatile bool changed;
private volatile bool erroradded;
private volatile bool warningadded;
private object threadlock = new object(); //mxd
#endregion
@ -62,7 +63,7 @@ namespace CodeImp.DoomBuilder
// This clears the errors
public void Clear()
{
lock(this)
lock(threadlock)
{
changed = false;
erroradded = false;
@ -79,7 +80,7 @@ namespace CodeImp.DoomBuilder
{
string prefix = "";
lock(this)
lock(threadlock)
{
//mxd. Don't add duplicate messages
if(errors.Count == 0 || message != errors[errors.Count - 1].message || type != errors[errors.Count - 1].type)
@ -117,13 +118,24 @@ namespace CodeImp.DoomBuilder
}
// This returns the list of errors
internal List<ErrorItem> GetErrors()
/*internal List<ErrorItem> GetErrors()
{
lock(this)
{
List<ErrorItem> copylist = new List<ErrorItem>(errors);
return copylist;
}
}*/
//mxd. This returns the list of errors starting at given index
internal IEnumerable<ErrorItem> GetErrors(int startindex)
{
if(startindex >= errors.Count) return new List<ErrorItem>();
ErrorItem[] result = new ErrorItem[errors.Count - startindex];
errors.CopyTo(startindex, result, 0, result.Length);
return result;
}
#endregion

View file

@ -753,17 +753,17 @@ namespace CodeImp.DoomBuilder.Properties {
}
}
internal static byte[] ScriptConstant {
internal static System.Drawing.Bitmap ScriptConstant {
get {
object obj = ResourceManager.GetObject("ScriptConstant", resourceCulture);
return ((byte[])(obj));
return ((System.Drawing.Bitmap)(obj));
}
}
internal static byte[] ScriptError {
internal static System.Drawing.Bitmap ScriptError {
get {
object obj = ResourceManager.GetObject("ScriptError", resourceCulture);
return ((byte[])(obj));
return ((System.Drawing.Bitmap)(obj));
}
}
@ -774,10 +774,10 @@ namespace CodeImp.DoomBuilder.Properties {
}
}
internal static byte[] ScriptKeyword {
internal static System.Drawing.Bitmap ScriptKeyword {
get {
object obj = ResourceManager.GetObject("ScriptKeyword", resourceCulture);
return ((byte[])(obj));
return ((System.Drawing.Bitmap)(obj));
}
}
@ -788,10 +788,10 @@ namespace CodeImp.DoomBuilder.Properties {
}
}
internal static byte[] ScriptSnippet {
internal static System.Drawing.Bitmap ScriptSnippet {
get {
object obj = ResourceManager.GetObject("ScriptSnippet", resourceCulture);
return ((byte[])(obj));
return ((System.Drawing.Bitmap)(obj));
}
}
@ -942,6 +942,27 @@ namespace CodeImp.DoomBuilder.Properties {
}
}
internal static System.Drawing.Bitmap TextIndent {
get {
object obj = ResourceManager.GetObject("TextIndent", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap TextUnindent {
get {
object obj = ResourceManager.GetObject("TextUnindent", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap TextWhitespace {
get {
object obj = ResourceManager.GetObject("TextWhitespace", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap ThingStatistics {
get {
object obj = ResourceManager.GetObject("ThingStatistics", resourceCulture);

View file

@ -154,6 +154,9 @@
<data name="SaveAll" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SaveAll.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Update" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Monster2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Monster2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -175,15 +178,27 @@
<data name="MixedThings" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MixedThings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TextUnindent" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TextUnindent.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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="InfoPanelCollapse" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\InfoPanelCollapse.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>
</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="Group" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Group.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>
</data>
<data name="VisualVertices" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\VisualVertices.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -196,6 +211,9 @@
<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="Light_animate" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="CommentSmile" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CommentSmile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -217,17 +235,14 @@
<data name="Redo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Redo.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 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="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="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>
</data>
<data name="ScriptSnippet" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ScriptSnippet.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="Configuration" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Configuration.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="CommentProblem" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CommentProblem.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -238,8 +253,8 @@
<data name="MLogo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UnknownImage" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UnknownImage.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Reload" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Reload.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Paste" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -248,7 +263,7 @@
<value>..\Resources\LightDisabled.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScriptConstant" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ScriptConstant.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>..\Resources\ScriptConstant.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FolderExplore" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FolderExplore.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -265,12 +280,18 @@
<data name="CLogo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CLogo.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="WarningOff" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\WarningOff.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="List" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\List.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TextWhitespace" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TextWhitespace.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="LinedefColorPresets" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\LinedefColorPresets.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -286,8 +307,8 @@
<data name="Cursor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Cursor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Grid2_arrowup" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Grid2_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Preferences" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Preferences.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Reset" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Reset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -313,6 +334,12 @@
<data name="NewMap" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\NewMap2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="About" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="GridDecrease" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GridDecrease.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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>
@ -331,6 +358,9 @@
<data name="InfoLine" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\InfoLine.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Status10" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Status10.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="MissingTexture" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MissingTexture.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -338,7 +368,7 @@
<value>..\Resources\ErrorLarge.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScriptError" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ScriptError.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>..\Resources\ScriptError.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>
@ -370,6 +400,9 @@
<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>
<data name="GridDynamic" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GridDynamic.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Collapse" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -382,11 +415,11 @@
<data name="Unlink" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Unlink.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Status10" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Status10.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="TextIndent" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TextIndent.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Properties" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Properties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<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="Script2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Script2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -406,6 +439,9 @@
<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>
<data name="GridIncrease" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GridIncrease.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Folder" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -424,17 +460,20 @@
<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="Add" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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="InfoPanelExpand" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\InfoPanelExpand.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>
<data name="ScriptSnippet" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ScriptSnippet.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Add" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Properties" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Properties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Test" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Test.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -442,8 +481,8 @@
<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="InfoPanelExpand" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\InfoPanelExpand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="UnknownImage" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UnknownImage.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>
@ -454,8 +493,14 @@
<data name="ViewTextureFloor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewTextureFloor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Light_animate" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Grid2_arrowup" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Grid2_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="GroupRemove" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GroupRemove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Sky" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Sky.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Pin" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Pin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -464,7 +509,7 @@
<value>..\Resources\ViewNormal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScriptKeyword" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ScriptKeyword.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>..\Resources\ScriptKeyword.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>
@ -472,11 +517,14 @@
<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="SkySphere" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SkySphere.md3;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="DockerCollapse" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DockerCollapse.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 name="GroupAdd" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GroupAdd.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>
@ -511,43 +559,4 @@
<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="GridDynamic" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GridDynamic.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="About" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Configuration" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Configuration.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Preferences" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Preferences.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Reload" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Reload.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Update" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Group" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Group.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="GroupAdd" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GroupAdd.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="GroupRemove" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GroupRemove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="GridDecrease" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GridDecrease.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="GridIncrease" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GridIncrease.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Sky" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Sky.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SkySphere" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SkySphere.md3;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View file

@ -20,7 +20,6 @@ using System;
using System.Globalization;
using System.Drawing;
using SlimDX;
using Configuration = CodeImp.DoomBuilder.IO.Configuration;
#endregion
@ -38,7 +37,7 @@ namespace CodeImp.DoomBuilder.Rendering
private const float DARK_ADDITION = -0.2f;
// Palette size
private const int NUM_COLORS = 41;
private const int NUM_COLORS = 49;
public const int NUM_THING_COLORS = 20;
public const int THING_COLORS_OFFSET = 20;
@ -84,16 +83,23 @@ namespace CodeImp.DoomBuilder.Rendering
public const int THINGCOLOR18 = 38;
public const int THINGCOLOR19 = 39;
public const int THREEDFLOORCOLOR = 40; //mxd
public const int SCRIPTINDICATOR = 41; //mxd. Additional Script Editor colors
public const int SCRIPTBRACEHIGHLIGHT = 42;
public const int SCRIPTBADBRACEHIGHLIGHT = 43;
public const int SCRIPTWHITESPACE = 44;
public const int SCRIPTSELECTIONFORE = 45;
public const int SCRIPTSELECTIONBACK = 46;
public const int STRINGS = 47;
public const int INCLUDES = 48;
#endregion
#region ================== Variables
// Colors
private PixelColor[] colors;
private PixelColor[] brightcolors;
private PixelColor[] darkcolors;
private readonly PixelColor[] colors;
private readonly PixelColor[] brightcolors;
private readonly PixelColor[] darkcolors;
// Color-correction table
private byte[] correctiontable;
@ -125,6 +131,12 @@ namespace CodeImp.DoomBuilder.Rendering
public PixelColor Selection3D { get { return colors[SELECTION3D]; } internal set { colors[SELECTION3D] = value; } }
public PixelColor ScriptBackground { get { return colors[SCRIPTBACKGROUND]; } internal set { colors[SCRIPTBACKGROUND] = value; } }
public PixelColor ScriptIndicator { get { return colors[SCRIPTINDICATOR]; } internal set { colors[SCRIPTINDICATOR] = value; } }
public PixelColor ScriptBraceHighlight { get { return colors[SCRIPTBRACEHIGHLIGHT]; } internal set { colors[SCRIPTBRACEHIGHLIGHT] = value; } }
public PixelColor ScriptBadBraceHighlight { get { return colors[SCRIPTBADBRACEHIGHLIGHT]; } internal set { colors[SCRIPTBADBRACEHIGHLIGHT] = value; } }
public PixelColor ScriptWhitespace { get { return colors[SCRIPTWHITESPACE]; } internal set { colors[SCRIPTWHITESPACE] = value; } }
public PixelColor ScriptSelectionForeColor { get { return colors[SCRIPTSELECTIONFORE]; } internal set { colors[SCRIPTSELECTIONFORE] = value; } }
public PixelColor ScriptSelectionBackColor { get { return colors[SCRIPTSELECTIONBACK]; } internal set { colors[SCRIPTSELECTIONBACK] = value; } }
public PixelColor LineNumbers { get { return colors[LINENUMBERS]; } internal set { colors[LINENUMBERS] = value; } }
public PixelColor PlainText { get { return colors[PLAINTEXT]; } internal set { colors[PLAINTEXT] = value; } }
public PixelColor Comments { get { return colors[COMMENTS]; } internal set { colors[COMMENTS] = value; } }
@ -148,10 +160,32 @@ namespace CodeImp.DoomBuilder.Rendering
for(int i = 0; i < NUM_COLORS; i++)
{
// Read color
colors[i] = PixelColor.FromInt(cfg.ReadSetting("colors.color" + i.ToString(CultureInfo.InvariantCulture), -16711872)); //mxd. changed default color from transparent to light-green
colors[i] = PixelColor.FromInt(cfg.ReadSetting("colors.color" + i.ToString(CultureInfo.InvariantCulture), 0));
}
// Set new colors
//mxd. Set new colors (previously these were defined in GZBuilder.default.cfg)
if(colors[BACKGROUND].ToInt() == 0) colors[BACKGROUND] = PixelColor.FromInt(-16777216);
if(colors[VERTICES].ToInt() == 0) colors[VERTICES] = PixelColor.FromInt(-11425537);
if(colors[LINEDEFS].ToInt() == 0) colors[LINEDEFS] = PixelColor.FromInt(-1);
if(colors[MODELWIRECOLOR].ToInt() == 0) colors[MODELWIRECOLOR] = PixelColor.FromInt(-4259937);
if(colors[INFOLINECOLOR].ToInt() == 0) colors[INFOLINECOLOR] = PixelColor.FromInt(-3750145);
if(colors[HIGHLIGHT].ToInt() == 0) colors[HIGHLIGHT] = PixelColor.FromInt(-21504);
if(colors[SELECTION].ToInt() == 0) colors[SELECTION] = PixelColor.FromInt(-49152);
if(colors[INDICATION].ToInt() == 0) colors[INDICATION] = PixelColor.FromInt(-128);
if(colors[GRID].ToInt() == 0) colors[GRID] = PixelColor.FromInt(-12171706);
if(colors[GRID64].ToInt() == 0) colors[GRID64] = PixelColor.FromInt(-13018769);
if(colors[CROSSHAIR3D].ToInt() == 0) colors[CROSSHAIR3D] = PixelColor.FromInt(-16711681); // Unused!
if(colors[HIGHLIGHT3D].ToInt() == 0) colors[HIGHLIGHT3D] = PixelColor.FromInt(-24576);
if(colors[SELECTION3D].ToInt() == 0) colors[SELECTION3D] = PixelColor.FromInt(-49152);
if(colors[SCRIPTBACKGROUND].ToInt() == 0) colors[SCRIPTBACKGROUND] = PixelColor.FromInt(-1);
if(colors[LINENUMBERS].ToInt() == 0) colors[LINENUMBERS] = PixelColor.FromInt(-13921873);
if(colors[PLAINTEXT].ToInt() == 0) colors[PLAINTEXT] = PixelColor.FromInt(-16777216);
if(colors[COMMENTS].ToInt() == 0) colors[COMMENTS] = PixelColor.FromInt(-16744448);
if(colors[KEYWORDS].ToInt() == 0) colors[KEYWORDS] = PixelColor.FromInt(-16741493);
if(colors[LITERALS].ToInt() == 0) colors[LITERALS] = PixelColor.FromInt(-16776961);
if(colors[CONSTANTS].ToInt() == 0) colors[CONSTANTS] = PixelColor.FromInt(-12566273);
// Set new thing colors
if(colors[THINGCOLOR00].ToInt() == 0) colors[THINGCOLOR00] = PixelColor.FromColor(Color.DimGray);
if(colors[THINGCOLOR01].ToInt() == 0) colors[THINGCOLOR01] = PixelColor.FromColor(Color.RoyalBlue);
if(colors[THINGCOLOR02].ToInt() == 0) colors[THINGCOLOR02] = PixelColor.FromColor(Color.ForestGreen);
@ -172,6 +206,17 @@ namespace CodeImp.DoomBuilder.Rendering
if(colors[THINGCOLOR17].ToInt() == 0) colors[THINGCOLOR17] = PixelColor.FromColor(Color.DarkOrange);
if(colors[THINGCOLOR18].ToInt() == 0) colors[THINGCOLOR18] = PixelColor.FromColor(Color.DarkKhaki);
if(colors[THINGCOLOR19].ToInt() == 0) colors[THINGCOLOR19] = PixelColor.FromColor(Color.Goldenrod);
//mxd. Set the rest of new colors (previously these were also defined in GZBuilder.default.cfg)
if(colors[THREEDFLOORCOLOR].ToInt() == 0) colors[THREEDFLOORCOLOR] = PixelColor.FromInt(-65536);
if(colors[SCRIPTINDICATOR].ToInt() == 0) colors[SCRIPTINDICATOR] = PixelColor.FromInt(-16711936);
if(colors[SCRIPTBRACEHIGHLIGHT].ToInt() == 0) colors[SCRIPTBRACEHIGHLIGHT] = PixelColor.FromInt(-16711681);
if(colors[SCRIPTBADBRACEHIGHLIGHT].ToInt() == 0) colors[SCRIPTBADBRACEHIGHLIGHT] = PixelColor.FromInt(-65536);
if(colors[SCRIPTWHITESPACE].ToInt() == 0) colors[SCRIPTWHITESPACE] = PixelColor.FromInt(-8355712);
if(colors[SCRIPTSELECTIONFORE].ToInt() == 0) colors[SCRIPTSELECTIONFORE] = PixelColor.FromInt(-1);
if(colors[SCRIPTSELECTIONBACK].ToInt() == 0) colors[SCRIPTSELECTIONBACK] = PixelColor.FromInt(-13395457);
if(colors[STRINGS].ToInt() == 0) colors[STRINGS] = PixelColor.FromInt(-6089451);
if(colors[INCLUDES].ToInt() == 0) colors[INCLUDES] = PixelColor.FromInt(-9868951);
// Create assist colors
CreateAssistColors();

View file

@ -109,6 +109,8 @@ namespace CodeImp.DoomBuilder.Rendering
}
catch(Exception)
{
string debugerrors = string.Empty; //mxd
// Compiling failed, try with debug information
try
{
@ -116,16 +118,27 @@ namespace CodeImp.DoomBuilder.Rendering
fxdata.Seek(0, SeekOrigin.Begin);
// Compile effect
fx = Effect.FromStream(General.Map.Graphics.Device, fxdata, null, null, null, ShaderFlags.Debug, null, out errors);
if(!string.IsNullOrEmpty(errors))
fx = Effect.FromStream(General.Map.Graphics.Device, fxdata, null, null, null, ShaderFlags.Debug, null, out debugerrors);
if(!string.IsNullOrEmpty(debugerrors))
{
throw new Exception("Errors in effect file " + fxfile + ": " + errors);
throw new Exception("Errors in effect file " + fxfile + ": " + debugerrors);
}
}
catch(Exception e)
{
//mxd. Try to get something. Anything!
string message;
if(!string.IsNullOrEmpty(debugerrors))
message = e.Message + "\nInitial message (debug mode): \"" + debugerrors + "\"";
else if(!string.IsNullOrEmpty(errors))
message = e.Message + "\nInitial message: \"" + errors + "\"";
else
message = e.ToString();
if(string.IsNullOrEmpty(message)) message = "No initial message...";
// No debug information, just crash
throw new Exception(e.GetType().Name + " while loading effect " + fxfile + ": " + e.Message + "\nInitial message: " + errors);
throw new Exception(e.GetType().Name + " while loading effect " + fxfile + ": " + message);
}
}

View file

@ -33,6 +33,8 @@ lexer3 // CPP-style, case-sensitive
7 = 4; // literal
16 = 2; // constants
37 = 5; // ident guides
6 = 6; // strings
9 = 7; // includes
keywordsindex = 0;
constantsindex = 1;
@ -87,10 +89,10 @@ lexer35 // CPP-style, case-insensitive
7 = 4; // literal
16 = 2; // constants
37 = 5; // ident guides
6 = 6; // strings
9 = 7; // includes
keywordsindex = 0;
constantsindex = 1;
snippetindex = 2;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -42,8 +42,7 @@ namespace CodeImp.DoomBuilder.Windows
FillList();
checkerrors.Start();
checkshow.Checked = General.Settings.ShowErrorsWindow;
//mxd
grid.Focus();
grid.Focus(); //mxd
}
#endregion
@ -55,11 +54,12 @@ namespace CodeImp.DoomBuilder.Windows
{
// Fill the list with the items we don't have yet
General.ErrorLogger.HasChanged = false;
List<ErrorItem> errors = General.ErrorLogger.GetErrors();
//mxd. Rewritten to get only the new items from the ErrorLogger
int startindex = grid.Rows.Count;
for(int i = startindex; i < errors.Count; i++)
IEnumerable<ErrorItem> errors = General.ErrorLogger.GetErrors(startindex);
foreach(ErrorItem e in errors)
{
ErrorItem e = errors[i];
Image icon = (e.type == ErrorType.Error) ? Properties.Resources.ErrorLarge : Properties.Resources.WarningLarge;
int index = grid.Rows.Add();
DataGridViewRow row = grid.Rows[index];
@ -145,7 +145,6 @@ namespace CodeImp.DoomBuilder.Windows
private void ErrorsForm_Shown(object sender, EventArgs e)
{
if(grid.Rows.Count > 0) grid.Rows[0].Selected = false;
}
private void grid_CellContentClick(object sender, DataGridViewCellEventArgs e)