More changes to keywords.ini:

* Don't read colors from the ini, use LLUIColorTable and let the users and skin artists choose colors
* Define more specific sections in the ini
* Standardize sections to only contain the section name, no readColor() hack!
* Expose color settings for syntax highlighting to the user
Cinders 2013-05-16 13:28:12 -06:00
parent c8f4b836a5
commit 5b716795ab
8 changed files with 555 additions and 81 deletions

View File

@ -34,6 +34,8 @@
#include "llstl.h"
#include <boost/tokenizer.hpp>
#include "lluicolortable.h" // <FS:CR> Use color table so the user can define colors
// <FS:CR> Bump this for Firestorm changes
//const U32 KEYWORD_FILE_CURRENT_VERSION = 2;
const U32 KEYWORD_FILE_CURRENT_VERSION = 3;
@ -118,19 +120,34 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
llinfos << filename << " does not appear to be a version " << KEYWORD_FILE_CURRENT_VERSION << " keyword file" << llendl;
return mLoaded;
}
// start of line (SOL)
// <FS:CR> Use ; for comment, not # so we can add preprocessor directives to keywords.ini
////////////////////////////////////////////////////////////
// Start of line (SOL)
// <FS:CR> Use ; for comment, not # so we can add preprocessor directives to keywords.ini
//std::string SOL_COMMENT("#");
std::string SOL_COMMENT(";");
// </FS:CR>
std::string SOL_WORD("[word ");
std::string SOL_LINE("[line ");
std::string SOL_ONE_SIDED_DELIMITER("[one_sided_delimiter ");
std::string SOL_TWO_SIDED_DELIMITER("[two_sided_delimiter ");
std::string SOL_DOUBLE_QUOTATION_MARKS("[double_quotation_marks ");
LLColor3 cur_color( 1, 0, 0 );
std::string SOL_INI_COMMENT(";");
//std::string SOL_WORD("[word ");
//std::string SOL_LINE("[line ");
//std::string SOL_ONE_SIDED_DELIMITER("[one_sided_delimiter ");
//std::string SOL_TWO_SIDED_DELIMITER("[two_sided_delimiter ");
//std::string SOL_DOUBLE_QUOTATION_MARKS("[double_quotation_marks ");
std::string SOL_SECTION("[SECTION]");
std::string SOL_DATATYPE("[DATATYPE]");
std::string SOL_EVENT("[EVENT]");
std::string SOL_I_CONSTANT("[I_CONSTANT]");
std::string SOL_S_CONSTANT("[S_CONSTANT]");
std::string SOL_F_CONSTANT("[F_CONSTANT]");
std::string SOL_C_CONSTANT("[C_CONSTANT]");
std::string SOL_FLOW_CONTROL("[FLOW CONTROL]");
std::string SOL_FLOW_CONTROL_LABEL("[FLOW CONTROL LABEL]");
std::string SOL_STRING_LITERAL("[STRING LITERAL]");
std::string SOL_CODE_COMMENT("[COMMENT]");
std::string SOL_BLOCK_COMMENT("[BLOCK COMMENT]");
std::string SOL_PREPROCESSOR("[PREPROCESSOR]");
//LLColor3 cur_color( 1, 0, 0 );
LLColor4 cur_color(LLUIColorTable::instance().getColor("ScriptText"));
// </FS:CR>
LLKeywordToken::TOKEN_TYPE cur_type = LLKeywordToken::WORD;
while (!file.eof())
@ -138,40 +155,123 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
buffer[0] = 0;
file.getline( buffer, BUFFER_SIZE );
std::string line(buffer);
if( line.find(SOL_COMMENT) == 0 )
// <FS:CR> User defined syntax highlighting
//if( line.find(SOL_COMMENT) == 0 )
if( line.find(SOL_INI_COMMENT) == 0 )
// </FS:CR>
{
continue;
}
else if( line.find(SOL_WORD) == 0 )
// <FS:CR> User defined syntax highlighting
//else if( line.find(SOL_WORD) == 0 )
//{
// cur_color = readColor( line.substr(SOL_WORD.size()) );
// cur_type = LLKeywordToken::WORD;
// continue;
//}
//else if( line.find(SOL_LINE) == 0 )
//{
// cur_color = readColor( line.substr(SOL_LINE.size()) );
// cur_type = LLKeywordToken::LINE;
// continue;
//}
//else if( line.find(SOL_TWO_SIDED_DELIMITER) == 0 )
//{
// cur_color = readColor( line.substr(SOL_TWO_SIDED_DELIMITER.size()) );
// cur_type = LLKeywordToken::TWO_SIDED_DELIMITER;
// continue;
//}
//else if( line.find(SOL_DOUBLE_QUOTATION_MARKS) == 0 )
//{
// cur_color = readColor( line.substr(SOL_DOUBLE_QUOTATION_MARKS.size()) );
// cur_type = LLKeywordToken::DOUBLE_QUOTATION_MARKS;
// continue;
//}
//else if( line.find(SOL_ONE_SIDED_DELIMITER) == 0 )
//{
// cur_color = readColor( line.substr(SOL_ONE_SIDED_DELIMITER.size()) );
// cur_type = LLKeywordToken::ONE_SIDED_DELIMITER;
// continue;
//}
else if (line.find(SOL_SECTION) == 0 )
{
cur_color = readColor( line.substr(SOL_WORD.size()) );
cur_type = LLKeywordToken::WORD;
cur_color = LLUIColorTable::instance().getColor("SyntaxSection");
continue;
}
else if( line.find(SOL_LINE) == 0 )
else if (line.find(SOL_DATATYPE) == 0)
{
cur_type = LLKeywordToken::WORD;
cur_color = LLUIColorTable::instance().getColor("SyntaxDataType");
continue;
}
else if (line.find(SOL_EVENT) == 0)
{
cur_type = LLKeywordToken::WORD;
cur_color = LLUIColorTable::instance().getColor("SyntaxEvent");
continue;
}
else if (line.find(SOL_I_CONSTANT) == 0)
{
cur_type = LLKeywordToken::WORD;
cur_color = LLUIColorTable::instance().getColor("SyntaxIntegerConstant");
continue;
}
else if (line.find(SOL_S_CONSTANT) == 0)
{
cur_type = LLKeywordToken::WORD;
cur_color = LLUIColorTable::instance().getColor("SyntaxStringConstant");
continue;
}
else if (line.find(SOL_F_CONSTANT) == 0)
{
cur_type = LLKeywordToken::WORD;
cur_color = LLUIColorTable::instance().getColor("SyntaxFloatConstant");
continue;
}
else if (line.find(SOL_C_CONSTANT) == 0)
{
cur_type = LLKeywordToken::WORD;
cur_color = LLUIColorTable::instance().getColor("SyntaxCompoundConstant");
continue;
}
else if (line.find(SOL_FLOW_CONTROL) == 0)
{
cur_type = LLKeywordToken::WORD;
cur_color = LLUIColorTable::instance().getColor("SyntaxFlowControl");
continue;
}
else if (line.find(SOL_FLOW_CONTROL_LABEL) == 0)
{
cur_color = readColor( line.substr(SOL_LINE.size()) );
cur_type = LLKeywordToken::LINE;
cur_color = LLUIColorTable::instance().getColor("SyntaxFlowControl");
continue;
}
else if( line.find(SOL_TWO_SIDED_DELIMITER) == 0 )
else if (line.find(SOL_STRING_LITERAL) == 0)
{
cur_color = readColor( line.substr(SOL_TWO_SIDED_DELIMITER.size()) );
cur_type = LLKeywordToken::TWO_SIDED_DELIMITER;
continue;
}
else if( line.find(SOL_DOUBLE_QUOTATION_MARKS) == 0 )
{
cur_color = readColor( line.substr(SOL_DOUBLE_QUOTATION_MARKS.size()) );
cur_type = LLKeywordToken::DOUBLE_QUOTATION_MARKS;
cur_color = LLUIColorTable::instance().getColor("SyntaxStringLiteral");
continue;
}
else if( line.find(SOL_ONE_SIDED_DELIMITER) == 0 )
else if (line.find(SOL_CODE_COMMENT) == 0)
{
cur_color = readColor( line.substr(SOL_ONE_SIDED_DELIMITER.size()) );
cur_type = LLKeywordToken::ONE_SIDED_DELIMITER;
cur_color = LLUIColorTable::instance().getColor("SyntaxComment");
continue;
}
else if (line.find(SOL_BLOCK_COMMENT) == 0)
{
cur_type = LLKeywordToken::TWO_SIDED_DELIMITER;
cur_color = LLUIColorTable::instance().getColor("SyntaxComment");
continue;
}
else if( line.find(SOL_PREPROCESSOR) == 0 )
{
cur_type = LLKeywordToken::ONE_SIDED_DELIMITER;
cur_color = LLUIColorTable::instance().getColor("SyntaxPreprocessor");
continue;
}
// </FS:CR>
std::string token_buffer( line );
LLStringUtil::trim(token_buffer);
@ -233,7 +333,10 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
// Add the token as described
void LLKeywords::addToken(LLKeywordToken::TOKEN_TYPE type,
const std::string& key_in,
const LLColor3& color,
// <FS:CR> User defined syntax highlighting
//const LLColor3& color
const LLColor4& color,
// </FS:CR>
const std::string& tool_tip_in,
const std::string& delimiter_in)
{
@ -341,17 +444,19 @@ bool LLKeywords::WStringMapIndex::operator<(const LLKeywords::WStringMapIndex &o
return result;
}
LLColor3 LLKeywords::readColor( const std::string& s )
{
F32 r, g, b;
r = g = b = 0.0f;
S32 values_read = sscanf(s.c_str(), "%f, %f, %f]", &r, &g, &b );
if( values_read != 3 )
{
llinfos << " poorly formed color in keyword file" << llendl;
}
return LLColor3( r, g, b );
}
// <FS:CR> Deprecate readColor(), Use colors.xml so the user can pick and choose
//LLColor3 LLKeywords::readColor( const std::string& s )
//{
// F32 r, g, b;
// r = g = b = 0.0f;
// S32 values_read = sscanf(s.c_str(), "%f, %f, %f]", &r, &g, &b );
// if( values_read != 3 )
// {
// llinfos << " poorly formed color in keyword file" << llendl;
// }
// return LLColor3( r, g, b );
//}
// </FS:CR>
LLFastTimer::DeclareTimer FTM_SYNTAX_COLORING("Syntax Coloring");

View File

@ -29,7 +29,10 @@
#include "llstring.h"
#include "v3color.h"
// <FS:CR> User defined syntax highlighting
//#include "v3color.h"
#include "v4color.h"
// </FS:CR>
#include <map>
#include <list>
#include <deque>
@ -60,7 +63,10 @@ public:
DOUBLE_QUOTATION_MARKS
};
LLKeywordToken( TOKEN_TYPE type, const LLColor3& color, const LLWString& token, const LLWString& tool_tip, const LLWString& delimiter )
// <FS:CR> User defined syntax highlighting
//LLKeywordToken( TOKEN_TYPE type, const LLColor3& color, const LLWString& token, const LLWString& tool_tip, const LLWString& delimiter )
LLKeywordToken( TOKEN_TYPE type, const LLColor4& color, const LLWString& token, const LLWString& tool_tip, const LLWString& delimiter )
// </FS:CR>
:
mType( type ),
mToken( token ),
@ -75,7 +81,10 @@ public:
BOOL isHead(const llwchar* s) const;
BOOL isTail(const llwchar* s) const;
const LLWString& getToken() const { return mToken; }
const LLColor3& getColor() const { return mColor; }
// <FS:CR> User defined syntax highlighting
//const LLColor3& getColor() const { return mColor; }
const LLColor4& getColor() const { return mColor; }
// </FS:CR>
TOKEN_TYPE getType() const { return mType; }
const LLWString& getToolTip() const { return mToolTip; }
const LLWString& getDelimiter() const { return mDelimiter; }
@ -87,7 +96,10 @@ public:
private:
TOKEN_TYPE mType;
LLWString mToken;
LLColor3 mColor;
// <FS:CR> User defined syntax highlighting
//LLColor3 mColor;
// </FS:CR>
LLColor4 mColor;
LLWString mToolTip;
LLWString mDelimiter;
};
@ -106,7 +118,10 @@ public:
// Add the token as described
void addToken(LLKeywordToken::TOKEN_TYPE type,
const std::string& key,
const LLColor3& color,
// <FS:CR> User defined syntax highlighting
//const LLColor3& color,
const LLColor4& color,
// </FS:CR>
const std::string& tool_tip = LLStringUtil::null,
const std::string& delimiter = LLStringUtil::null);
@ -145,7 +160,8 @@ public:
#endif
private:
LLColor3 readColor(const std::string& s);
// <FS:CR> User defined syntax highlighting - Deprecated, unused function
//LLColor3 readColor(const std::string& s);
void insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSegmentPtr new_segment, S32 text_len, const LLColor4 &defaultColor, class LLTextEditor& editor);
void insertSegments(const LLWString& wtext, std::vector<LLTextSegmentPtr>& seg_list, LLKeywordToken* token, S32 text_len, S32 seg_start, S32 seg_end, const LLColor4 &defaultColor, LLTextEditor& editor);

View File

@ -1,12 +1,12 @@
llkeywords version 3
; sections
[word .5, .1, .3]
[SECTION]
default Name of default state that all scripts must have
state Keyword to indicate state block or state transition
; data types
[word .1, .3, .1]
[DATATYPE]
integer Integer type
float Floating-point type
string String type
@ -16,7 +16,7 @@ rotation Rotation type of 4 floats. Used to represent rotation.:Access compone
list List of various data types
; events
[word 0, .3, .5]
[EVENT]
state_entry state_entry():Triggered on any state transition and startup
state_exit state_exit():Triggered on any state transition
touch_start touch_start(integer num_detected):Triggered by the start of agent clicking on task
@ -56,7 +56,7 @@ http_request http_request(key id, string method, string body):Triggered when tas
transaction_result transaction_result(key id, integer success, string data): Triggered when L$ is given to task
; integer constants
[word .1, .1, .5]
[I_CONSTANT]
TRUE Integer constant for Boolean operations
FALSE Integer constant for Boolean operations
STATUS_PHYSICS Passed in the llSetStatus library function. If TRUE, object moves physically
@ -828,7 +828,7 @@ CONTENT_TYPE_FORM application/x-www-form-urlencoded
CONTENT_TYPE_RSS application/rss+xml
; string constants
[word .1, .3, .5]
[S_CONSTANT]
NULL_KEY Indicates an empty key
EOF Indicates the last line of a notecard was read
TEXTURE_BLANK UUID for the "Blank" texture
@ -841,7 +841,7 @@ URL_REQUEST_GRANTED Used with http_request when a public URL is successfully gr
URL_REQUEST_DENIED Used with http_request when a public URL is not available
; float constants
[word .3, .1, .5]
[F_CONSTANT]
PI 3.1415926535897932384626433832795
TWO_PI 6.283185307179586476925286766559
PI_BY_TWO 1.5707963267948966192313216916398
@ -850,13 +850,13 @@ RAD_TO_DEG To convert from radians to degrees
SQRT2 1.4142135623730950488016887242097
; compound constants
[word .4, .2, .4]
[C_CONSTANT]
ZERO_VECTOR <0.0, 0.0, 0.0>
ZERO_ROTATION <0.0, 0.0, 0.0, 1.0>
; flow control keywords
[word 0, 0, .8]
[FLOW CONTROL]
for for loop:for (initializer; test; iteration):{: statements:}
do do loop:do:{: statements:} while (test);
while while loop:while (test):{ statements:}
@ -866,17 +866,17 @@ jump jump statement:jump label;:
return Leave current function or event handler
; flow control label
[line 0, 0, .8]
[FLOW CONTROL LABEL]
@ Label:Target for jump statement
; Comment
[one_sided_delimiter .8, .3, .15]
[COMMENT]
// Comment:Non-functional commentary or disabled code
[two_sided_delimiter .8, .3, .15]
[BLOCK COMMENT]
/* */ Comment:Non-functional commentary or disabled code
; String literals
[double_quotation_marks 0, .2, 0]
[STRING LITERAL]
" String literal
;functions are supplied by the program now

View File

@ -2,7 +2,7 @@ llkeywords version 3
; <FS:CR> OSSL/AA keywords
; Reference: http://opensimulator.org/wiki/OSSL_Constants (13 December 2012)
[word .1, .1, .5]
[I_CONSTANT]
OS_ATTACH_MSG_ALL Send the message to attachments on every point
OS_ATTACH_MSG_INVERT_POINTS Invert how the attachment points list should be treated
OS_ATTACH_MSG_OBJECT_CREATOR Send only to those have the same CreatorID with host object CreatorID

View File

@ -1,7 +1,7 @@
llkeywords version 3
; <FS:CR> Preprocessor Directives
[one_sided_delimiter 0, 0, .8]
[PREPROCESSOR]
#assert Allows definition of preprocessor variables that do not conflict with names in the program name space.
#define When the preprocessor encounters this directive, it replaces any occurrence of identifier in the rest of the code by replacement.
#elif Specify some condition to be met in order for the portion of code they surround to be compiled.
@ -21,3 +21,7 @@ llkeywords version 3
#unassert Closes an #assert directive.
#undef Undefines #define macro.
#warning Generate a level one warning from a specific location in your code.
#switch Allows selection among multiple sections of code, depending on the value of an integral expression.
#case Used with #switch in a union.
#break Stops processing further lines in a #switch directive.

View File

@ -382,18 +382,6 @@ BOOL LLScriptEdCore::postBuild()
#endif // OPENSIM
// </FS:CR>
mPostEditor->loadKeywords(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "keywords_preproc.ini"), funcs, tooltips, color);
if(gSavedSettings.getBOOL("_NACL_PreProcLSLSwitch"))
{
mEditor->addToken(LLKeywordToken::WORD,"switch",LLColor3(0.0f,0.0f,0.8f),
std::string("Switch statement. See Advanced menu of the script editor."));
mEditor->addToken(LLKeywordToken::WORD,"case",LLColor3(0.0f,0.0f,0.8f),
std::string("Switch case. See Advanced menu of the script editor."));
mEditor->addToken(LLKeywordToken::WORD,"break",LLColor3(0.0f,0.0f,0.8f),
std::string("Switch break. See Advanced menu of the script editor."));
}
//couldn'tr define in file because # represented a comment
}
// NaCl End

View File

@ -1122,6 +1122,36 @@
name="ScriptBackground"
reference="White" />
<color
name="ScriptPreprocessor"
value="0 0 0.8 1" />
name="SyntaxSection"
value=".5 .1 .3 1" />
<color
name="SyntaxDataType"
value=".1 .3 .1 1" />
<color
name="SyntaxEvent"
value="0 .3 .5 1" />
<color
name="SyntaxIntegerConstant"
value=".1 .1 .5 1" />
<color
name="SyntaxStringConstant"
value=".1 .3 .5 1" />
<color
name="SyntaxFloatConstant"
value=".3 .1 .5 1" />
<color
name="SyntaxCompoundConstant"
value=".4 .2 .4 1" />
<color
name="SyntaxFlowControl"
value="0 0 .8 1" />
<color
name="SyntaxComment"
value=".8 .3 .15 1" />
<color
name="SyntaxStringLiteral"
value="0 .2 0 1" />
<color
name="SyntaxPreprocessor"
value="0 0 .8 1" />
</colors>

View File

@ -8,7 +8,7 @@
title="Script Editor Preferences"
single_instance="true"
can_resize="false"
width="300">
width="325">
<text
follows="left|top"
height="15"
@ -27,8 +27,8 @@
label_height="0"
layout="topleft"
left="15"
name="user"
top_pad="10"
name="text"
top="45"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
@ -45,7 +45,7 @@
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="text"
name="text_label"
top_delta="5"
width="85">
Text
@ -57,7 +57,7 @@
label_height="0"
layout="topleft"
left="15"
name="user"
name="background"
top_pad="10"
width="44" >
<color_swatch.init_callback
@ -80,6 +80,337 @@
width="85">
Background
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="15"
name="section"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxSection" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxSection" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="section_label"
top_delta="5"
width="85">
Sections
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="15"
name="datatype"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxDataType" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxDataType" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="datatype_label"
top_delta="5"
width="85">
Data Types
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="15"
name="event"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxEvent" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxEvent" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="event_label"
top_delta="5"
width="85">
Events
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="15"
name="string_literal"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxStringLiteral" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxStringLiteral" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="string_literal_label"
top_delta="5"
width="85">
String Literals
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="170"
name="i_constant"
top="45"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxIntegerConstant" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxIntegerConstant" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="i_constant_label"
top_delta="5"
width="85">
Integer Const
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="170"
name="s_constant"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxStringConstant" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxStringConstant" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="s_constant_label"
top_delta="5"
width="85">
String Const
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="170"
name="f_constant"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxFloatConstant" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxFloatConstant" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="f_constant_label"
top_delta="5"
width="85">
Float Const
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="170"
name="c_constant"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxCompoundConstant" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxCompoundConstant" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="c_constant_label"
top_delta="5"
width="85">
Compound
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="170"
name="flow_control"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxFlowControl" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxFlowControl" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="flow_control_label"
top_delta="5"
width="85">
Flow Control
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="170"
name="comment"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxComment" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxComment" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="comment_label"
top_delta="5"
width="85">
Comment
</text>
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="24"
label_height="0"
layout="topleft"
left="170"
name="preprocessor"
top_pad="10"
width="44" >
<color_swatch.init_callback
function="ScriptPref.getUIColor"
parameter="SyntaxPreprocessor" />
<color_swatch.commit_callback
function="ScriptPref.applyUIColor"
parameter="SyntaxPreprocessor" />
</color_swatch>
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_pad="5"
mouse_opaque="false"
name="preprocessor_label"
top_delta="5"
width="85">
Preprocessor
</text>
<text
follows="left|top"
@ -87,8 +418,8 @@
layout="topleft"
left="12"
name="prefs_label"
top="200"
width="200">
top="230"
width="150">
Script Editor Options:
</text>
<check_box
@ -167,7 +498,7 @@
max_length_chars="4096"
name="preprocinclude_location"
top_pad="0"
width="200" />
width="235" />
<button
follows="left|top"
height="23"