|
From: <ek...@us...> - 2011-09-26 03:54:27
|
Revision: 408
http://farplugins.svn.sourceforge.net/farplugins/?rev=408&view=rev
Author: ekot
Date: 2011-09-26 03:54:18 +0000 (Mon, 26 Sep 2011)
Log Message:
-----------
Initial add
Added Paths:
-----------
trunk/nt_event2/
trunk/nt_event2/addon/
trunk/nt_event2/addon/colorer/
trunk/nt_event2/addon/colorer/default.hrc
trunk/nt_event2/addon/colorer/evtinfo.hrc
trunk/nt_event2/addon/colorer/evtinfor.hrc
trunk/nt_event2/addon/colorer/readme.txt
trunk/nt_event2/addon/esc/
trunk/nt_event2/addon/esc/esc.xml
trunk/nt_event2/bin/
trunk/nt_event2/readme.txt
trunk/nt_event2/src/
trunk/nt_event2/src/bootstrap/
trunk/nt_event2/src/el_category_cache.cpp
trunk/nt_event2/src/el_config.cpp
trunk/nt_event2/src/el_sid_cache.cpp
trunk/nt_event2/src/el_utils.cpp
trunk/nt_event2/src/ev_ver.m4
trunk/nt_event2/src/evplugin.h
trunk/nt_event2/src/evversion.m4
trunk/nt_event2/src/file_id_diz.m4
trunk/nt_event2/src/formatcode.bat
trunk/nt_event2/src/makefile
trunk/nt_event2/src/ntevent.cpp
trunk/nt_event2/src/ntevent.def
trunk/nt_event2/src/ntevent.lng
trunk/nt_event2/src/ntevent.rc
trunk/nt_event2/src/ntevent_hlf.m4
trunk/nt_event2/src/nteventr.lng
trunk/nt_event2/src/nteventr_hlf.m4
trunk/nt_event2/src/o/
Added: trunk/nt_event2/addon/colorer/default.hrc
===================================================================
--- trunk/nt_event2/addon/colorer/default.hrc (rev 0)
+++ trunk/nt_event2/addon/colorer/default.hrc 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding='Windows-1251'?>
+<!DOCTYPE hrc PUBLIC "-//Cail Lomecb//DTD Colorer HRC take5//EN"
+ "http://colorer.sf.net/2003/hrc.dtd">
+<hrc version="take5" xmlns="http://colorer.sf.net/2003/hrc"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://colorer.sf.net/2003/hrc http://colorer.sf.net/2003/hrc.xsd">
+
+ <type name="def">
+ <annotation><documentation>
+ Shared macro-schemes, Common Region definitions,
+ </documentation></annotation>
+
+ <region name="default" description="Transparent region"/>
+ <region name="Text" description="Background text"/>
+
+ <region name="Syntax" description="Syntax check region"/>
+ <region name="Special" description="Invisible region"/>
+ <region name="Outlined" parent="Special" description="Outlined region"/>
+
+ <region name="PairStart" parent="Special" description="Paired struct start"/>
+ <region name="PairEnd" parent="Special" description="Paired struct end"/>
+ <region name="PairStrongStart" parent="PairStart" description="Blocked pair start"/>
+ <region name="PairStrongEnd" parent="PairEnd" description="Blocked pair end"/>
+
+ <region name="Number" description="Common Number"/>
+ <region name="NumberDec" parent="Number" description="Decimal Number"/>
+ <region name="NumberHex" parent="Number" description="Hexadecimal Number"/>
+ <region name="NumberBin" parent="Number" description="Binary Number"/>
+ <region name="NumberOct" parent="Number" description="Octal Number"/>
+ <region name="NumberFloat" parent="Number" description="Float Number"/>
+ <region name="NumberSuffix" parent="Number" description="Number Suffix"/>
+ <region name="NumberPrefix" parent="Number" description="Number Prefix"/>
+
+ <region name="String" description="Common string"/>
+ <region name="StringContent" parent="String" description="Tokens in String Content"/>
+ <region name="StringEdge" parent="String" description="String edges"/>
+ <region name="Character" parent="String" description="Single character"/>
+ <region name="CharacterContent" parent="Character" description="Character Content"/>
+
+ <region name="Comment" parent="Syntax" description="Comment"/>
+ <region name="CommentContent" parent="Comment" description="Comment Content"/>
+ <region name="LineComment" parent="Comment" description="Single Line Comment"/>
+ <region name="CommentEdge" parent="Comment" description="Comment edges"/>
+ <region name="CommentDoc" parent="Comment" description="In-Source Documentation comments"/>
+ <region name="CommentDocContent" parent="CommentDoc" description="In-Source Documentation Elements"/>
+ <region name="CommentDocEdge" parent="CommentDoc" description="In-Source Documentation Edges"/>
+
+ <region name="Symbol" description="Symbol"/>
+ <region name="SymbolStrong" parent="Symbol" description="Strong Symbol"/>
+ <region name="Operator" parent="Symbol" description="Symbolic or Literal Operator"/>
+ <region name="Prefix" description="Prefix"/>
+ <region name="PrefixStrong" parent="Prefix" description="Other prefix"/>
+
+ <region name="Keyword" description="Common Keyword"/>
+ <region name="KeywordStrong" parent="Keyword" description="Strong Keyword"/>
+ <region name="TypeKeyword" parent="Keyword" description="Simple type object declaration Keywords"/>
+ <region name="ClassKeyword" parent="Keyword" description="Class object Keywords"/>
+ <region name="StructKeyword" parent="Keyword" description="Structure object Keywords"/>
+ <region name="FunctionKeyword" parent="Keyword" description="Function object Keyword"/>
+ <region name="InterfaceKeyword" parent="Keyword" description="Interface object Keywords"/>
+ <region name="DeprecatedKeyword" parent="Keyword" description="Deprecate Keyword"/>
+
+ <region name="Constant" parent="Keyword" description="Constant declaration"/>
+ <region name="BooleanConstant" parent="Constant" description="Boolean Constant declaration"/>
+ <region name="Identifier" description="Identifier"/>
+
+ <!-- DEPRECATED!!! -->
+ <region name="Function" parent="Outlined" description="Function definition"/>
+
+ <region name="Register" description="Assembler register"/>
+ <region name="Var" description="Variable reference"/>
+ <region name="VarStrong" parent="Var" description="Strong Variable reference"/>
+
+ <region name="Directive" description="Compiler/Preprocessor directive"/>
+ <region name="DirectiveContent" parent="Directive" description="Internal directive text"/>
+ <region name="DirectiveEdge" parent="DirectiveContent" description="Directive edges"/>
+
+ <region name="Parameter" description="Parameter declaration"/>
+ <region name="ParameterStrong" parent="Parameter" description="Special parameter"/>
+ <region name="ParameterUnknown" parent="ParameterStrong" description="Undefined parameter"/>
+
+ <region name="Tag" description="XML/HTML/SGML tag"/>
+ <region name="OpenTag" parent="Tag" description="Opening tag"/>
+ <region name="CloseTag" parent="Tag" description="Closing tag"/>
+
+ <region name="EmbeddedTag" parent="Tag" description="Tag for embedded structures (asp, etc.)"/>
+
+ <region name="Label" description="Label"/>
+ <region name="LabelStrong" parent="Label" description="High contrast Label"/>
+
+ <region name="Insertion" description="Insertion source code"/>
+ <region name="InsertionStart" parent="Insertion" description="Source Insertion start"/>
+ <region name="InsertionEnd" parent="Insertion" description="Source Insertion end"/>
+ <region name="InsertionEmbed" parent="Insertion" description="Insertion embedded code"/>
+
+ <region name="URI" description="URI Address"/>
+ <region name="URL" parent="URI" description="URL Address"/>
+ <region name="Path" parent="URI" description="File Path"/>
+ <region name="EMail" parent="URI" description="EMail Address"/>
+ <region name="Date" description="Date"/>
+ <region name="Time" description="Time"/>
+
+ <region name="Error" description="Syntax error"/>
+ <region name="ErrorText" parent="Error" description="Potentially bad text"/>
+
+ <region name="TODO" parent="Error" description="TODO notes"/>
+ <region name="Debug" parent="Error" description="DEBUG notes"/>
+
+
+ <entity name="neverMatch" value="$neverMore^"/>
+
+
+ <scheme name="empty"/>
+ <scheme name="def"/>
+
+ <scheme name="CString">
+ <regexp match="/ (?{StringEdge}") (?{String} ( \\. | [^\\"] )*?) (?{StringEdge}") /x"/>
+ </scheme>
+
+ <scheme name="CHexNumber">
+ <regexp match="/\b 0x[\da-fA-F]+ (?{NumberSuffix}ul{0,2}|l{1,2}u?|(i64)|(i128))? \b/ix" region="NumberHex"/>
+ </scheme>
+
+ <scheme name="FloatNumber">
+ <regexp match="/\B \. \d+ ([eE][\-+]?\d+)? ([lLfF]?)\b/x" region0="NumberFloat" region2="NumberSuffix"/>
+ <regexp match="/\b \d+\.\d* ([eE][\-+]?\d+)? ([lLfF]?)\b/x" region0="NumberFloat" region2="NumberSuffix"/>
+ <regexp match="/\b \d+ ([eE][\-+]?\d+) ([lLfF]?)\b/x" region0="NumberFloat" region2="NumberSuffix"/>
+ </scheme>
+
+ <scheme name="DecNumber">
+ <regexp match="/\b\d+ (ul{0,2}|l{1,2}u?|i64|i128)?\b/ix" region0="NumberDec" region1="NumberSuffix"/>
+ </scheme>
+
+ <scheme name="Number">
+ <inherit scheme="CHexNumber"/>
+ <inherit scheme="FloatNumber"/>
+ <inherit scheme="DecNumber"/>
+ </scheme>
+
+ <scheme name="BadHex">
+ <regexp match="/\b(0x[\da-fA-F]*?([^\s\W\da-fA-F]).*?)\b/i" region0="Error"/>
+ </scheme>
+
+ <scheme name="StandardString">
+ <regexp match="/(?{StringEdge}") (?{String}.*?) (?{StringEdge}")/ix"/>
+ <regexp match="/(?{StringEdge}') (?{String}.*?) (?{StringEdge}')/ix"/>
+ </scheme>
+
+ <scheme name="Apost">
+ <regexp match="/\w(')[avDLSTMdstml]/" region1="String"/>
+ </scheme>
+
+ <scheme name="NetURL">
+ <regexp priority="low" region="URL"><![CDATA[
+ /\b ((https?|ftp|news|nntp|wais|wysiwyg|gopher|javascript|castanet|about)
+ \:\/\/ | (www|ftp|fido[0-9]*)\.)
+ [\[\]\@\%\:\+\w\.\/\~\?\-\*=_#&;]+\b\/?/ix]]>
+ </regexp>
+ </scheme>
+
+ <scheme name="NetEMail">
+<!-- Mail address -->
+ <regexp region1="EMail" region3="String" region4="String" priority="low"><![CDATA[
+ /( (\b mailto\s*\:\s*)? (<?) [A-Za-z\d][\w\.\~\-_#]*
+ \@[\w\~\-_#]+? \. [\?\=\w\.\~\-_#]+ (>?) ) /x]]>
+ </regexp>
+ <regexp match="/p\d{,3}\.f\d\.n\d{,4}\.z\d\.fidonet\.org/" region="EMail"/>
+ </scheme>
+
+ <scheme name="NetFTN">
+<!-- FTN address 2:5080/80.66 -->
+ <regexp region0="EMail" priority="low"><![CDATA[
+ /\b [1-9]\d* \: \d+\/\d+ (\.\d+)? (\@\w[\w\.\-]+)? \b/x]]>
+ </regexp>
+ </scheme>
+
+ <scheme name="NetAddresses">
+ <inherit scheme="NetEMail"/>
+ <inherit scheme="NetURL"/>
+ <inherit scheme="NetFTN"/>
+ </scheme>
+
+ <scheme name="Path">
+<!-- full path -->
+ <regexp region="Path"><![CDATA[
+ /\b ([A-Za-z]\: | [\w_\~\-\.`'!@#&\$\^\{\}\(\)]*\\)
+ [\w_\~\-\\\.`'!@#&\$\^\{\}\(\)]+ /x]]>
+ </regexp>
+<!-- file name only - disabled
+ <regexp match="/\b([A-Za-z0-9_\~\-`'!#&\$\^\{\}]+\.[A-Za-z0-9_\~\-`'!@#&\$\^\{\}]{1,5})\b/" region0="Path"/-->
+<!-- unix path
+ <regexp match="/\.?\/?([\w\.\-]+\/)+[\w\.\-]*/" region0="Path"/ -->
+ </scheme>
+
+ <scheme name="Date">
+ <regexp match="/\b[0-3]?\d[\/\.\-][0-1]?\d[\/\.\-]\d\d(\d\d)?\b/" region="Date"/>
+ </scheme>
+
+ <scheme name="Time">
+ <regexp region="Time"><![CDATA[/\b[0-2]?\d:[0-5]\d(:[0-5]\d)?(\s?(am|pm))?\b/i]]></regexp>
+ </scheme>
+
+ <scheme name="RCS">
+ <regexp region="Directive"><![CDATA[
+ /\$(Archive|Author|Date|Header|Id|Locker|Log|RCSfile|Revision|Source|State)(: .*?)?\$/]]>
+ </regexp>
+ <regexp match="/^<{7,}.*$/" region="TODO"/>
+ <regexp match="/^={7,}$/" region="TODO"/>
+ <regexp match="/^>{7,}.*$/" region="TODO"/>
+ </scheme>
+
+ <scheme name="Comment">
+<!-- just add http and e-mail highlighting -->
+ <inherit scheme="NetEMail"/>
+ <inherit scheme="NetURL"/>
+ <inherit scheme="RCS"/>
+ <regexp region="TODO">/[\!\?]{2,}/</regexp>
+<!--<regexp region="TODO">/[\w\-\_]{1,20} \s{,2} [\!\?]{2,}/x</regexp>-->
+ <regexp region="TODO" priority='low'>/\b((FIXME|TODO|BUG|FIX)\b.*$)/xi</regexp>
+
+ </scheme>
+
+ <scheme name="cNestedComment-internal">
+ <inherit scheme="Comment"/>
+ <block scheme="cNestedComment-internal" region="Comment">
+ <start region="PairStart">/\/\*/</start>
+ <end region="PairEnd">/\*\//</end>
+ </block>
+ </scheme>
+
+ <scheme name="cNestedComment">
+ <block scheme="cNestedComment-internal" region="Comment">
+ <start region="PairStart">/\/\*/</start>
+ <end region="PairEnd">/\*\//</end>
+ </block>
+ </scheme>
+
+
+ <scheme name="unixCommentDirective">
+ <regexp match="/^#!\s*([\S]+)( .*)?$/"
+ region0="Comment" region1="VarStrong" region2="KeywordStrong"
+ />
+ </scheme>
+ <scheme name="unixCommentFirstline"> <!-- first line in file only -->
+ <inherit scheme='unixCommentDirective'/>
+ <block start="//" end="/%neverMatch;/" scheme="def"/>
+ </scheme>
+
+
+ <scheme name="PairedBrackets">
+<!-- paired block -->
+ <block start="/(\{)/" end="/(\})/" scheme="PairedBrackets" region00="SymbolStrong" region01="PairStart" region10="SymbolStrong" region11="PairEnd"/>
+ <block start="/(\()/" end="/(\))/" scheme="PairedBrackets" region00="Symbol" region01="PairStart" region10="Symbol" region11="PairEnd"/>
+ <block start="/(\[)/" end="/(\])/" scheme="PairedBrackets" region00="Symbol" region01="PairStart" region10="Symbol" region11="PairEnd"/>
+ </scheme>
+
+ </type>
+</hrc>
+<!-- ***** BEGIN LICENSE BLOCK *****
+ - Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ -
+ - The contents of this file are subject to the Mozilla Public License Version
+ - 1.1 (the "License"); you may not use this file except in compliance with
+ - the License. You may obtain a copy of the License at
+ - http://www.mozilla.org/MPL/
+ -
+ - Software distributed under the License is distributed on an "AS IS" basis,
+ - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ - for the specific language governing rights and limitations under the
+ - License.
+ -
+ - The Original Code is the Colorer Library.
+ -
+ - The Initial Developer of the Original Code is
+ - Igor Russkih <irusskih at gmail dot com>.
+ - Portions created by the Initial Developer are Copyright (C) 1999-2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - Alternatively, the contents of this file may be used under the terms of
+ - either the GNU General Public License Version 2 or later (the "GPL"), or
+ - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ - in which case the provisions of the GPL or the LGPL are applicable instead
+ - of those above. If you wish to allow use of your version of this file only
+ - under the terms of either the GPL or the LGPL, and not to allow others to
+ - use your version of this file under the terms of the MPL, indicate your
+ - decision by deleting the provisions above and replace them with the notice
+ - and other provisions required by the LGPL or the GPL. If you do not delete
+ - the provisions above, a recipient may use your version of this file under
+ - the terms of any one of the MPL, the GPL or the LGPL.
+ -
+ - ***** END LICENSE BLOCK ***** -->
Added: trunk/nt_event2/addon/colorer/evtinfo.hrc
===================================================================
--- trunk/nt_event2/addon/colorer/evtinfo.hrc (rev 0)
+++ trunk/nt_event2/addon/colorer/evtinfo.hrc 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="us-ascii"?>
+<hrc version="take5" xmlns="http://colorer.sf.net/2003/hrc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+<type name="NTEvents">
+<annotation>
+<documentation><![CDATA[
+
+ *.info (for NTEvent plugin) colouring rules.
+ Designed for Colorer 1.0.3
+ Add the prototype like this to the proto.hrc or your custom hrc file:
+ ==========================================================
+<prototype name="NTEvent" group="scripts" description="NTEvent">
+<filename>/\.(info)$/i</filename>
+<location link="...\evtinfo.hrc"/>
+</prototype>
+ ==========================================================
+
+]]></documentation>
+<contributors>
+Eugene Kotlyarov
+</contributors>
+</annotation>
+
+ <region name="asmString" parent="String"/>
+ <region name="asmComment" parent="Comment"/>
+ <region name="asmToDo" parent="TODO"/>
+ <region name="asmDefinition" parent="Directive"/>
+ <region name="asmDirective" parent="Directive"/>
+ <region name="asmMnemonics" parent="Keyword"/>
+
+<region name="eiCategory" parent="Keyword"/>
+<region name="eiText" parent="dParam"/>
+<region name="eiDate" parent="dDate"/>
+<region name="eiTime" parent="dTime"/>
+<region name="eiError" parent="dError"/>
+<region name="eiWarning" parent="dTodo"/>
+<region name="eiOther" parent="eiText"/>
+
+<scheme name="other_stuff"> <!--include here whatever you want-->
+ <inherit scheme="mPath"/>
+ <inherit scheme="mNetAddresses"/>
+ <inherit scheme="mStdStr"/>
+ <inherit scheme="mCHexNumb"/>
+</scheme>
+
+<scheme name="MultiLine">
+ <block start="/^\M./" end="/$/" scheme="other_stuff" region="eiText"/>
+</scheme>
+
+<scheme name="EvtInfo">
+ <regexp match="/\M^([\w\s]+):(.*)$/" region1="dFunction"/>
+ <regexp match="/^(Date):\s+(.*)$/" region1="eiCategory" region2="eiDate"/>
+ <regexp match="/^(Time):\s+(.*)$/" region1="eiCategory" region2="eiTime"/>
+ <regexp match="/^(User):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(Computer):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(Event ID):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(Source):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(Type):\s+((Error)|(Warning)|(.*))$/" region1="eiCategory"
+ region3="eiError" region4="eiWarning" region5="eiOther"/>
+ <regexp match="/^(Category):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(Product):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+
+ <block start="/(Description):/" end="/^$/" scheme="MultiLine"
+ region01="eiCategory"/>
+
+ <block start="/(Data):/" end="/^$/" scheme="MultiLine"
+ region01="eiCategory"/>
+</scheme>
+</type>
+</hrc>
Added: trunk/nt_event2/addon/colorer/evtinfor.hrc
===================================================================
--- trunk/nt_event2/addon/colorer/evtinfor.hrc (rev 0)
+++ trunk/nt_event2/addon/colorer/evtinfor.hrc 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="Windows-1251"?>
+<!DOCTYPE hrc SYSTEM "../hrc.dtd">
+<?xml-stylesheet type="text/xsl" href="../hrc.xsl"?>
+<!--
+ \x91奬\xA0 \xE0\xA0\xE1\xAA\xE0\xA0᪨ 䠩\xAB\xAE\xA2 *.info (\xA4\xAB\xEF \xAF\xAB\xA0\xA3\xA8\xAD\xA0 NTEvent).
+ \x90\xA0\xA7ࠡ\xAE⠭\xAE \xA4\xAB\xEF "Colorer 4ever".
+ \x84\xAE\xA1\xA0\xA2\xEC\xE2\xA5 \xA4\xE3\xEE騥 \xE1\xE2ப\xA8 \xA2 䠩\xAB colorer.hrc:
+ ==========================================================
+ <type descr="\x91\xAE\xA1\xEB\xE2\xA8\xEF" name="evt" exts="/\.info$/i">
+ <load name="_addons\evtinfor.hrc"/>
+ <scheme name="EvtInfo"/>
+ </type>
+ ==========================================================
+-->
+<hrc version="4ever">
+
+<define name="eiCategory" value="dKeyword"/>
+<define name="eiText" value="dParam"/>
+<define name="eiDate" value="dDate"/>
+<define name="eiTime" value="dTime"/>
+<define name="eiError" value="dError"/>
+<define name="eiWarning" value="dTodo"/>
+<define name="eiOther" value="eiText"/>
+
+<scheme name="other_stuff"> <!--include here whatever you want-->
+ <inherit scheme="mPath"/>
+ <inherit scheme="mNetAddresses"/>
+ <inherit scheme="mStdStr"/>
+ <inherit scheme="mCHexNumb"/>
+</scheme>
+<scheme name="MultiLine">
+ <block start="/^\M./" end="/$/" scheme="other_stuff" region="eiText"/>
+</scheme>
+
+<scheme name="EvtInfo">
+ <regexp match="/\M^([\w\s]+):(.*)$/" region1="dFunction"/>
+ <regexp match="/^(\x84\xA0\xE2\xA0):\s+(.*)$/" region1="eiCategory" region2="eiDate"/>
+ <regexp match="/^(\x82६\xEF):\s+(.*)$/" region1="eiCategory" region2="eiTime"/>
+ <regexp match="/^(\x8F\xAE\xAB짮\xA2\xA0⥫\xEC):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(\x8A\xAE\xAC\xAF\xEC\xEE\xE2\xA5\xE0):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(\x8A\xAE\xA4 \(ID\)):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(\x88\xE1\xE2\xAE筨\xAA):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(\x92\xA8\xAF):\s+((\x8E訡\xAA\xA0)|(\x8F।\xE3\xAF०\xA4\xA5\xAD\xA8\xA5)|(.*))$/" region1="eiCategory"
+ region3="eiError" region4="eiWarning" region5="eiOther"/>
+ <regexp match="/^(\x8A\xA0⥣\xAE\xE0\xA8\xEF):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+ <regexp match="/^(\x8Fத\xE3\xAA\xE2):\s+(.*)$/" region1="eiCategory" region2="eiText"/>
+
+ <block start="/(\x8E\xAF\xA8ᠭ\xA8\xA5):/" end="/^$/" scheme="MultiLine"
+ region01="eiCategory"/>
+
+ <block start="/(\x84\xA0\xAD\xAD\xEB\xA5):/" end="/^$/" scheme="MultiLine"
+ region01="eiCategory"/>
+</scheme>
+</hrc>
Added: trunk/nt_event2/addon/colorer/readme.txt
===================================================================
--- trunk/nt_event2/addon/colorer/readme.txt (rev 0)
+++ trunk/nt_event2/addon/colorer/readme.txt 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,22 @@
+=== English
+0. Make sure you have "Colorer forever" plugin properly installed.
+1. Create folder Colorer\hrc\_addons.
+2. Copy evtinfo.hrc to Colorer\hrc\_addons.
+3. Add following lines into colorer.hrc:
+
+ <type descr="Events" name="evt" exts="/\.info$/i">
+ <load name="_addons\evtinfo.hrc"/>
+ <scheme name="EvtInfo"/>
+ </type>
+
+
+=== Russian
+0. Удостоверьтесь в том, что у Вас установлен плагин "Colorer forever".
+1. Создайте папку Colorer\hrc\_addons.
+2. Скопируйте evtinfor.hrc в папку Colorer\hrc\_addons.
+3. Добавьте следующие строки в colorer.hrc:
+
+ <type descr="События" name="evt" exts="/\.info$/i">
+ <load name="_addons\evtinfor.hrc"/>
+ <scheme name="EvtInfo"/>
+ </type>
Added: trunk/nt_event2/addon/esc/esc.xml
===================================================================
--- trunk/nt_event2/addon/esc/esc.xml (rev 0)
+++ trunk/nt_event2/addon/esc/esc.xml 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,5 @@
+<Esc-Settings>
+ <Types>
+ <type name="nt events" mask="[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].err.info,[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].war.info,[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].inf.info,[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].aus.info,[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].auf.info,[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].info" tabsize="10"/>
+ </Types>
+</Esc-Settings>
Added: trunk/nt_event2/readme.txt
===================================================================
--- trunk/nt_event2/readme.txt (rev 0)
+++ trunk/nt_event2/readme.txt 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,192 @@
+*********************************** NT ONLY ***********************************
+
+Introduction
+
+NT Events is a plugin for FAR Manager.
+It allows to list/backup/clear NT Event Logs.
+
+Status
+
+NT Events is freeware. You can use the binaries and the source code for any
+purpose you like.
+
+Warranty
+NT Events is distributed "AS IS". No warranty of any kind is expressed or
+implied. Use it at your own risk.
+
+Highliting
+
+You may highlight different event types.
+
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Far\Colors\Highlight]
+
+[HKEY_CURRENT_USER\Software\Far\Colors\Highlight\GroupV]
+"Mask"="*.auf.info"
+"NormalColor"=dword:00000014
+"CursorColor"=dword:00000000
+"IncludeAttributes"=dword:00000000
+"ExcludeAttributes"=dword:00000000
+"SelectedColor"=dword:00000000
+"SelectedCursorColor"=dword:00000000
+"MarkChar"=dword:00000000
+
+[HKEY_CURRENT_USER\Software\Far\Colors\Highlight\GroupW]
+"Mask"="*.aus.info"
+"NormalColor"=dword:00000013
+"CursorColor"=dword:00000000
+"IncludeAttributes"=dword:00000000
+"ExcludeAttributes"=dword:00000000
+"SelectedColor"=dword:00000000
+"SelectedCursorColor"=dword:00000000
+"MarkChar"=dword:00000000
+
+[HKEY_CURRENT_USER\Software\Far\Colors\Highlight\GroupX]
+"Mask"="*.inf.info"
+"NormalColor"=dword:00000019
+"CursorColor"=dword:00000000
+"IncludeAttributes"=dword:00000000
+"ExcludeAttributes"=dword:00000000
+"SelectedColor"=dword:00000000
+"SelectedCursorColor"=dword:00000000
+"MarkChar"=dword:00000000
+
+[HKEY_CURRENT_USER\Software\Far\Colors\Highlight\GroupY]
+"Mask"="*.war.info"
+"IncludeAttributes"=dword:00000000
+"ExcludeAttributes"=dword:00000000
+"NormalColor"=dword:0000001a
+"SelectedColor"=dword:00000000
+"CursorColor"=dword:00000000
+"SelectedCursorColor"=dword:00000000
+"MarkChar"=dword:00000000
+
+[HKEY_CURRENT_USER\Software\Far\Colors\Highlight\GroupZ]
+"Mask"="*.err.info"
+"IncludeAttributes"=dword:00000000
+"ExcludeAttributes"=dword:00000000
+"NormalColor"=dword:0000001c
+"SelectedColor"=dword:00000000
+"CursorColor"=dword:00000000
+"SelectedCursorColor"=dword:00000000
+"MarkChar"=dword:00000000
+
+Contacts
+
+E-mail: zg...@ma...
+
+History
+
+v2.0 build 1 25.09.2011
+- make unicode and 64 bit versions for Far 2.0
+
+v0.5 build 14 04-05-2003 RC3
+- dialog history bug.
+- removed unneeded '"'-symbol from resources.
+- Crash on ShiftF1.
+- ShiftF3/ShiftF4 view event data in viewer/editor.
+- gcc 3.2.2.
+
+v0.5 build 13 26-08-2002
+- Shift-F2 problem fixed.
+- you can customize quickview.
+- state saving may be disabled.
+- *.info generated mor clearly.
+- fixed: params parsing bug.
+- state saving improved.
+- fixed: memory overrun bug.
+
+v0.5 build 12 01-06-2002
+- plugin save all state.
+- then file is opened in editor, plugin set R/O attribute for this file.
+
+v0.5 build 11 06-04-2002
+- fixed: realloc bug.
+- fixed: search bug.
+- fixed: bad colors in overwrite dialog in FAR 1.70 beta 4.
+
+v0.4 build 10 17-12-2001 RC2
+- workaround for FormatMessage AV.
+- memory leak.
+- AV fix in cathegory cache.
+
+v0.4 build 9 13-12-2001
+- "local" label.
+- support multiple event and parameters files.
+- AV under stress.
+- settings for Esc plugin.
+- empty data don't shown.
+- changes in documentation.
+- fixed: oem problem in categories. introduced in build 6.
+
+v0.3 build 8 22-09-2001 RC1
+- now backup work only on local log.
+- sid cache optimization.
+- small optimization in GetFiles.
+- fixed: oem problem in usernames. introduced in build 6.
+
+v0.2 build 7 18-09-2001
+- user now in 4th custom column.
+- fixed: local time bug. introduced in build 6.
+- now you can specify status.
+- fixed: sid cache host bug.
+- fixed: sid cache domain bug.
+- dead code.
+- fixed: Shift-Del bug.
+
+v0.2 build 6 08-09-2001
+- fixed: creation/modification time bug.
+- category full support.
+- sid cache.
+- Esc processing then log is scanned.
+- fixed: memory leak.
+- fixed: Alt-Del bug.
+- fixed: get full file name then open from command line.
+- support "ParameterMessageFile" registry key.
+- fixed: inconvenient formatting.
+- progress then copying.
+- russian .hlf file. thanks a lot to Sergey Morozov <msv...@ya...>
+
+v0.1 build 5 14-07-2001 Beta 1
+- hrc for colorer 4ever. thanks a lot to Alexey Yatsenko <al...@ho...>.
+- russian .lng file. thanks a lot to Alexey Yatsenko <al...@ho...>.
+- Shift-F6: local.
+
+v0.1 build 4 06-07-2001 Alfa 2
+- fixed: oem problems.
+- fixed: didn't display error in some cases.
+- fixed: keybar names.
+- computer name now may contain oem characters.
+- cd behavior changed.
+- event content now is recoded to oem.
+- fixed: forward/backward.
+- more convenient copy routine.
+- fixed: instead data displayed garbage.
+- fixed: oem problems.
+- fixed: evt: prefix sometimes didn't work with files.
+- remove ExitFar declaration.
+
+v0.0 build 3 21-06-2001 Alfa 1
+- scan type.
+- evt prefix.
+- fix in SetDirectory.
+- partial network support.
+- text limited 260 symbols in copy dialog.
+- fix: bug in event reading.
+- *.evt support.
+- backup log.
+- very slow get user name.
+- add to config menu.
+- add to disk menu.
+- configuration dialog.
+
+v0.0 build 2 22-05-2001
+- clear log.
+- key titles.
+- local time.
+- custom columns.
+- lng.
+
+v0.0 build 1 16-05-2001
+- first version.
Added: trunk/nt_event2/src/el_category_cache.cpp
===================================================================
--- trunk/nt_event2/src/el_category_cache.cpp (rev 0)
+++ trunk/nt_event2/src/el_category_cache.cpp 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,161 @@
+#include <stdio.h>
+#include <windows.h>
+#include <wchar.h>
+#include <string.h>
+#include "evplugin.h"
+
+static const wchar_t *empty_string = L"";
+
+struct CacheRecord
+{
+ char *source;
+ wchar_t *category;
+ wchar_t category_bad[6];
+ unsigned short category_index;
+ bool flag;
+ CacheRecord *next;
+};
+
+static CacheRecord *category_cache = NULL;
+
+void free_category_cache (void)
+{
+ CacheRecord *tmp_rec;
+ while (category_cache)
+ {
+ tmp_rec = category_cache;
+ category_cache = category_cache->next;
+ free (tmp_rec->source);
+ free (tmp_rec->category);
+ free (tmp_rec);
+ }
+};
+
+static wchar_t *add_category_cache (char *source, unsigned short category_index)
+{
+ wchar_t *res = (wchar_t *) empty_string;
+ CacheRecord *new_rec = (CacheRecord *) malloc (sizeof (CacheRecord));
+ if (new_rec)
+ {
+ new_rec->category_index = category_index;
+ new_rec->flag = false;
+ new_rec->source = (char *) malloc (strlen (source) + 1);
+ if (new_rec->source)
+ {
+ new_rec->next = category_cache;
+ category_cache = new_rec;
+ strcpy (new_rec->source, source);
+ HKEY hKey = NULL;
+ wchar_t CatFile[MAX_PATH];
+ CatFile[0] = 0;
+ if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, EVENTLOG_KEY, 0, KEY_READ, &hKey) == ERROR_SUCCESS)
+ {
+ wchar_t NameBuffer[MAX_PATH];
+ LONG Result;
+ for (int i = 0;; i++)
+ {
+ Result = RegEnumKey (hKey, i, NameBuffer, sizeof (NameBuffer));
+ if (Result == ERROR_NO_MORE_ITEMS)
+ break;
+ if (Result == ERROR_SUCCESS)
+ {
+ wchar_t Key[1024];
+ wchar_t CatFileWork[MAX_PATH];
+ HKEY hKey2;
+ DWORD Type;
+ DWORD DataSize = 0;
+ wsprintf (Key, L"%s\\%s\\%s", EVENTLOG_KEY, NameBuffer, source);
+ if ((RegOpenKeyEx (HKEY_LOCAL_MACHINE, Key, 0, KEY_QUERY_VALUE, &hKey2)) == ERROR_SUCCESS)
+ {
+ DataSize = sizeof (CatFileWork);
+ if (RegQueryValueEx (hKey2, L"CategoryMessageFile", 0, &Type, (LPBYTE) CatFileWork, &DataSize)
+ == ERROR_SUCCESS)
+ {
+ ExpandEnvironmentStrings (CatFileWork, CatFile, sizeof (CatFile));
+ }
+ RegCloseKey (hKey2);
+ break;
+ }
+ }
+ }
+ RegCloseKey (hKey);
+ }
+ if (CatFile[0])
+ {
+ HINSTANCE lib;
+ wchar_t *category;
+ DWORD category_size = 0;
+ lib = LoadLibrary (CatFile);
+ if (lib)
+ {
+ category_size =
+ FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE |
+ FORMAT_MESSAGE_ARGUMENT_ARRAY | FORMAT_MESSAGE_MAX_WIDTH_MASK, lib, category_index,
+ LANG_NEUTRAL, (wchar_t *) &category, 512, NULL);
+ FreeLibrary (lib);
+ }
+ if (category_size)
+ {
+ new_rec->category = (wchar_t *) malloc ((wcslen (category) + 1) * sizeof(wchar_t));
+ if (new_rec->category)
+ {
+ wcscpy (new_rec->category, category);
+ res = new_rec->category;
+ new_rec->flag = true;
+ }
+ LocalFree (category);
+ }
+ }
+ if (!new_rec->flag)
+ {
+ wsprintf (new_rec->category_bad, L"%d", category_index);
+ res = new_rec->category_bad;
+ }
+ } // new_rec->source
+ else
+ free (new_rec);
+ }
+ return res;
+}
+
+static wchar_t *get_category_cache (char *source, unsigned short category_index)
+{
+ wchar_t *res = NULL;
+ CacheRecord *tmp_rec = category_cache;
+ while (tmp_rec)
+ {
+ if (source)
+ {
+ if (/*!_stricmp (tmp_rec->source, source)*/ 0)
+ {
+ if (tmp_rec->flag)
+ {
+ if (tmp_rec->category_index == category_index)
+ {
+ res = tmp_rec->category;
+ break;
+ }
+ }
+ else
+ {
+ wsprintf (tmp_rec->category_bad, L"%d", category_index);
+ res = tmp_rec->category_bad;
+ break;
+ }
+ }
+ }
+ tmp_rec = tmp_rec->next;
+ }
+ return res;
+}
+
+wchar_t *GetCategory (EVENTLOGRECORD * rec)
+{
+ wchar_t *res = (wchar_t *) empty_string;
+ char *source = (char *) (rec + 1);
+ unsigned short category_index = rec->EventCategory;
+ res = get_category_cache (source, category_index);
+ if (!res)
+ res = add_category_cache (source, category_index);
+ return res;
+}
Added: trunk/nt_event2/src/el_config.cpp
===================================================================
--- trunk/nt_event2/src/el_config.cpp (rev 0)
+++ trunk/nt_event2/src/el_config.cpp 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,134 @@
+static LONG_PTR WINAPI ConfigDialogProc (HANDLE hDlg, int Msg, int Param1, LONG_PTR Param2)
+{
+ return Info.DefDlgProc (hDlg, Msg, Param1, Param2);
+}
+
+enum
+{
+ CONFIG_BORDER = 0,
+ CONFIG_ADDDISK,
+ CONFIG_ADDMENU,
+ CONFIG_SEP1,
+ CONFIG_BROWSEEVT,
+ CONFIG_STRIPEXT,
+ CONFIG_RESTORE,
+ CONFIG_SEP2,
+ CONFIG_FORWARD,
+ CONFIG_BACKWARD,
+ CONFIG_SHOWHEADER,
+ CONFIG_SHOWDESC,
+ CONFIG_SHOWDATA,
+ CONFIG_SEP3,
+ CONFIG_PREFIXLABEL,
+ CONFIG_PREFIX,
+ CONFIG_SEP4,
+ CONFIG_SAVE,
+ CONFIG_CANCEL,
+};
+
+static int Config ()
+{
+ //Show dialog
+ /*
+ 0000000000111111111122222222223333333333444444444455555555556666666666777777
+ 0123456789012345678901234567890123456789012345678901234567890123456789012345
+ 00 00
+ 01 \xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD Event viewer \xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCDͻ 01
+ 02 \xBA [x] Add to Disks menu \xBA 02
+ 03 \xBA [ ] Add to Plugins menu \xBA 03
+ 04 \xC7\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4Ķ 05
+ 05 \xBA [ ] Browse .evt files \xBA 06
+ 06 \xBA [ ] Strip second extension \xBA 07
+ 07 \xC7\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4Ķ 08
+ 08 \xBA (*) Scan forward \xBA 09
+ 09 \xBA ( ) Scan backward \xBA 10
+ 10 \xC7\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4Ķ 11
+ 11 \xBA Command line prefix to start the nt events: \xBA 12
+ 12 \xBA evt \xBA 13
+ 13 \xC7\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4Ķ 14
+ 14 \xBA [ Ok ] [ Cancel ] \xBA 15
+ 15 \xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCDͼ 16
+ 16 17
+ 0000000000111111111122222222223333333333444444444455555555556666666666777777
+ 0123456789012345678901234567890123456789012345678901234567890123456789012345
+ */
+
+ struct InitDialogItem InitItems[] = {
+ /* 0 */ {DI_DOUBLEBOX, 3, 1, 72, 17, 0, 0, 0, 0, (wchar_t *) mName},
+ /* 1 */ {DI_CHECKBOX, 5, 2, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigAddToDisksMenu},
+ /* 2 */ {DI_CHECKBOX, 5, 3, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigAddToPluginMenu},
+ /* 3 */ {DI_TEXT, -1, 4, 0, 0, 0, 0, DIF_SEPARATOR, 0, L""},
+ /* 4 */ {DI_CHECKBOX, 5, 5, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigBrowseEvtFiles},
+ /* 5 */ {DI_CHECKBOX, 5, 6, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigStripExtension},
+ /* 6 */ {DI_CHECKBOX, 5, 7, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigRestore},
+ /* 7 */ {DI_TEXT, -1, 8, 0, 0, 0, 0, DIF_SEPARATOR, 0, L""},
+ /* 8 */ {DI_RADIOBUTTON, 5, 9, 0, 0, 0, 0, DIF_GROUP, 0, (wchar_t *) mConfigScan1},
+ /*09 */ {DI_RADIOBUTTON, 5, 10, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigScan2},
+ /*10 */ {DI_CHECKBOX, 39, 9, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigShowHeader},
+ /*10 */ {DI_CHECKBOX, 39, 10, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigShowDescription},
+ /*10 */ {DI_CHECKBOX, 39, 11, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigShowData},
+ /*11 */ {DI_TEXT, -1, 12, 0, 0, 0, 0, DIF_SEPARATOR, 0, L""},
+ /*12 */ {DI_TEXT, 5, 13, 0, 0, 0, 0, 0, 0, (wchar_t *) mConfigPrefix},
+ /*13*/ {DI_FIXEDIT, 5, 14, 19, 12, 0, (DWORD_PTR)L"AAAAAAAAAAAAAAA", DIF_MASKEDIT, 0, L""},
+ /*14 */ {DI_TEXT, -1, 15, 0, 0, 0, 0, DIF_SEPARATOR, 0, L""},
+ /*15 */ {DI_BUTTON, 0, 16, 0, 0, 0, 0, DIF_CENTERGROUP, 1, (wchar_t *) mConfigSave},
+ /*16 */ {DI_BUTTON, 0, 16, 0, 0, 0, 0, DIF_CENTERGROUP, 0, (wchar_t *) mConfigCancel}
+ };
+ struct FarDialogItem DialogItems[ARRAYSIZE(InitItems)];
+ memset(DialogItems, 0, sizeof(DialogItems));
+ InitDialogItems (InitItems, DialogItems, ARRAYSIZE(InitItems));
+
+ DialogItems[CONFIG_ADDDISK].Selected = Opt.AddToDisksMenu;
+ DialogItems[CONFIG_ADDMENU].Selected = Opt.AddToPluginsMenu;
+ DialogItems[CONFIG_BROWSEEVT].Selected = Opt.BrowseEvtFiles;
+ DialogItems[CONFIG_STRIPEXT].Selected = Opt.StripExt;
+ DialogItems[CONFIG_RESTORE].Selected = Opt.Restore;
+ DialogItems[CONFIG_FORWARD + Opt.ScanType].Selected = 1;
+ DialogItems[CONFIG_PREFIX].PtrData = Opt.Prefix;
+ DialogItems[CONFIG_SHOWHEADER].Selected = QVOpt.ShowHeader;
+ DialogItems[CONFIG_SHOWDESC].Selected = QVOpt.ShowDescription;
+ DialogItems[CONFIG_SHOWDATA].Selected = QVOpt.ShowData;
+
+ HANDLE hDlg = Info.DialogInit(Info.ModuleNumber, -1, -1, 76, 19, L"Config", DialogItems,
+ ARRAYSIZE(DialogItems), 0, 0, ConfigDialogProc, 0);
+ int DlgCode = Info.DialogRun(hDlg);
+
+ if (DlgCode != CONFIG_SAVE)
+ return (FALSE);
+ Opt.AddToDisksMenu = Info.SendDlgMessage(hDlg, DM_GETCHECK, CONFIG_ADDDISK, 0);
+ Opt.AddToPluginsMenu = Info.SendDlgMessage(hDlg, DM_GETCHECK, CONFIG_ADDMENU, 0);
+ Opt.BrowseEvtFiles = Info.SendDlgMessage(hDlg, DM_GETCHECK, CONFIG_BROWSEEVT, 0);
+ Opt.StripExt = Info.SendDlgMessage(hDlg, DM_GETCHECK, CONFIG_STRIPEXT, 0);
+ Opt.ScanType = Info.SendDlgMessage(hDlg, DM_GETCHECK, CONFIG_FORWARD, 0) ? 0 : 1;
+ Opt.Restore = Info.SendDlgMessage(hDlg, DM_GETCHECK, CONFIG_RESTORE, 0);
+ QVOpt.ShowHeader = Info.SendDlgMessage(hDlg, DM_GETCHECK, CONFIG_SHOWHEADER, 0);
+ QVOpt.ShowDescription = Info.SendDlgMessage(hDlg, DM_GETCHECK, CONFIG_SHOWDESC, 0);
+ QVOpt.ShowData = Info.SendDlgMessage(hDlg, DM_GETCHECK, CONFIG_SHOWDATA, 0);
+
+ wcscpy (Opt.Prefix, (wchar_t *)Info.SendDlgMessage(hDlg, DM_GETCONSTTEXTPTR, CONFIG_PREFIX, 0));
+ OutputDebugString(Opt.Prefix);
+ FSF.Trim (Opt.Prefix);
+ OutputDebugString(Opt.Prefix);
+
+ HKEY hKey;
+ DWORD Disposition;
+ if ((RegCreateKeyEx (HKEY_CURRENT_USER, PluginRootKey, 0, NULL, 0, KEY_WRITE, NULL, &hKey, &Disposition)) ==
+ ERROR_SUCCESS)
+ {
+ RegSetValueEx (hKey, L"AddToDisksMenu", 0, REG_DWORD, (LPBYTE) & Opt.AddToDisksMenu, sizeof (Opt.AddToDisksMenu));
+ RegSetValueEx (hKey, L"AddToPluginsMenu", 0, REG_DWORD, (LPBYTE) & Opt.AddToPluginsMenu,
+ sizeof (Opt.AddToPluginsMenu));
+ RegSetValueEx (hKey, L"BrowseEvtFiles", 0, REG_DWORD, (LPBYTE) & Opt.BrowseEvtFiles, sizeof (Opt.BrowseEvtFiles));
+ RegSetValueEx (hKey, L"StripExt", 0, REG_DWORD, (LPBYTE) & Opt.StripExt, sizeof (Opt.StripExt));
+ RegSetValueEx (hKey, L"ScanType", 0, REG_DWORD, (LPBYTE) & Opt.ScanType, sizeof (Opt.ScanType));
+ RegSetValueEx (hKey, L"Prefix", 0, REG_SZ, (LPBYTE) Opt.Prefix, sizeof(wchar_t) * (wcslen (Opt.Prefix) + 1));
+
+ RegSetValueEx (hKey, L"Restore", 0, REG_DWORD, (LPBYTE) & Opt.Restore, sizeof (Opt.Restore));
+ RegSetValueEx (hKey, L"ShowHeader", 0, REG_DWORD, (LPBYTE) & QVOpt.ShowHeader, sizeof (QVOpt.ShowHeader));
+ RegSetValueEx (hKey, L"ShowDescription", 0, REG_DWORD, (LPBYTE) & QVOpt.ShowDescription,
+ sizeof (QVOpt.ShowDescription));
+ RegSetValueEx (hKey, L"ShowData", 0, REG_DWORD, (LPBYTE) & QVOpt.ShowData, sizeof (QVOpt.ShowData));
+ RegCloseKey (hKey);
+ }
+ return (TRUE);
+}
Added: trunk/nt_event2/src/el_sid_cache.cpp
===================================================================
--- trunk/nt_event2/src/el_sid_cache.cpp (rev 0)
+++ trunk/nt_event2/src/el_sid_cache.cpp 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,122 @@
+#include <windows.h>
+#include <wchar.h>
+
+struct CacheRecord
+{
+ PSID sid;
+ wchar_t *username;
+ CacheRecord *next;
+};
+
+static CacheRecord *sid_cache = NULL;
+
+void free_sid_cache (void)
+{
+ CacheRecord *tmp_rec;
+ while (sid_cache)
+ {
+ tmp_rec = sid_cache;
+ sid_cache = sid_cache->next;
+ free (tmp_rec->sid);
+ free (tmp_rec->username);
+ free (tmp_rec);
+ }
+};
+
+static const wchar_t *NA = L"N/A";
+
+static wchar_t *add_sid_cache (wchar_t * computer1, wchar_t * computer2, PSID sid)
+{
+ wchar_t *res = (wchar_t *)NA;
+ const wchar_t *account_unknown = L"Account Unknown";
+ CacheRecord *new_rec = (CacheRecord *) malloc (sizeof (CacheRecord));
+ if (new_rec)
+ {
+ new_rec->sid = (PSID) malloc (GetLengthSid (sid));
+ if (new_rec->sid)
+ {
+ DWORD name_size = 0, domain_size = 0;
+ SID_NAME_USE type;
+ wchar_t *computer = computer1;
+ CopySid (GetLengthSid (sid), new_rec->sid, sid);
+ add_sid_cache_retry:
+ if (!LookupAccountSid (computer, sid, NULL, &name_size, NULL, &domain_size, &type))
+ {
+ if (GetLastError () == ERROR_INSUFFICIENT_BUFFER)
+ {
+ new_rec->username = (wchar_t *) malloc ((name_size + domain_size) * sizeof(wchar_t));
+ if (new_rec->username)
+ {
+ wchar_t *domain_ptr = new_rec->username, *user_ptr = new_rec->username + domain_size;
+ if (domain_size == 1)
+ {
+ user_ptr = new_rec->username;
+ domain_ptr = new_rec->username + name_size;
+ }
+ if (LookupAccountSid (computer, sid, user_ptr, &name_size, domain_ptr, &domain_size, &type))
+ {
+ if (domain_size)
+ new_rec->username[domain_size] = L'\\';
+ goto add_sid_cache_link;
+ }
+ }
+ }
+ else if (((GetLastError () == RPC_S_SERVER_UNAVAILABLE) || (GetLastError () == ERROR_NONE_MAPPED))
+ && (computer == computer1))
+ {
+ computer = computer2;
+ goto add_sid_cache_retry;
+ }
+ else
+ {
+ new_rec->username = (wchar_t *) malloc ((wcslen (account_unknown) + 1) * sizeof(wchar_t));
+ if (new_rec->username)
+ {
+ wcscpy (new_rec->username, account_unknown);
+ add_sid_cache_link:
+ new_rec->next = sid_cache;
+ sid_cache = new_rec;
+ res = new_rec->username;
+ goto add_sid_cache_ok;
+ }
+ }
+ }
+ }
+ free (new_rec->sid);
+ free (new_rec->username);
+ free (new_rec);
+ }
+add_sid_cache_ok:
+ return res;
+}
+
+static wchar_t *get_sid_cache (PSID sid)
+{
+ wchar_t *res = NULL;
+ CacheRecord *tmp_rec = sid_cache;
+ while (tmp_rec)
+ {
+ if (EqualSid (tmp_rec->sid, sid))
+ {
+ res = tmp_rec->username;
+ break;
+ }
+ tmp_rec = tmp_rec->next;
+ }
+ return res;
+}
+
+wchar_t *GetEventUserName (wchar_t * computer, EVENTLOGRECORD * rec)
+{
+ wchar_t *res = (wchar_t *)NA;
+ PSID sid = (char *) rec + rec->UserSidOffset;
+ wchar_t *computer2 = (wchar_t *) (rec + 1);
+ computer2 += wcslen (computer2) + 1;
+ if (IsValidSid (sid))
+ {
+ res = get_sid_cache (sid);
+ if (!res)
+ res = add_sid_cache (computer, computer2, sid);
+ }
+ return res;
+}
Added: trunk/nt_event2/src/el_utils.cpp
===================================================================
--- trunk/nt_event2/src/el_utils.cpp (rev 0)
+++ trunk/nt_event2/src/el_utils.cpp 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,327 @@
+struct MsgPath
+{
+ wchar_t path[MAX_PATH];
+};
+
+static void parse_filelist (wchar_t * List, struct MsgPath **File, int *FileCount)
+{
+ wchar_t *cur_pos = List, *next_pos, expanded[MAX_PATH];
+ *FileCount = 0;
+ while (cur_pos)
+ {
+ (*FileCount)++;
+ cur_pos = wcschr (cur_pos, ';');
+ if (cur_pos)
+ cur_pos++;
+ }
+ if (*FileCount)
+ {
+ *File = (struct MsgPath *) malloc (sizeof (struct MsgPath) * (*FileCount));
+ if (*File)
+ {
+ cur_pos = List;
+ for (int i = 1; i < (*FileCount); i++)
+ {
+ next_pos = wcschr (cur_pos, ';');
+ if (next_pos)
+ {
+ wcsncpy ((*File)[i - 1].path, cur_pos, next_pos - cur_pos);
+ cur_pos = next_pos + 1;
+ }
+ else
+ break;
+ }
+ wcscpy ((*File)[(*FileCount) - 1].path, cur_pos);
+ for (int i = 0; i < (*FileCount); i++)
+ {
+ ExpandEnvironmentStrings ((*File)[i].path, expanded, sizeof (expanded));
+ }
+ }
+ else
+ *FileCount = 0;
+ }
+}
+
+static void GetMessageFile (wchar_t * Src, struct MsgPath **MsgFile,
+ int *MsgFileCount, struct MsgPath **ParamsFile, int *ParamsFileCount)
+{
+ HKEY hKey = NULL;
+ MsgFile[0] = 0;
+ ParamsFile[0] = 0;
+ if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, EVENTLOG_KEY, 0, KEY_READ, &hKey) == ERROR_SUCCESS)
+ {
+ wchar_t NameBuffer[MAX_PATH];
+ LONG Result;
+ for (int i = 0;; i++)
+ {
+ Result = RegEnumKey (hKey, i, NameBuffer, sizeof (NameBuffer));
+ if (Result == ERROR_NO_MORE_ITEMS)
+ break;
+ if (Result == ERROR_SUCCESS)
+ {
+ wchar_t Key[1024];
+ wchar_t MsgFileWork[MAX_PATH];
+ HKEY hKey2;
+ DWORD Type;
+ DWORD DataSize = 0;
+ wsprintf (Key, L"%s\\%s\\%s", EVENTLOG_KEY, NameBuffer, Src);
+ if ((RegOpenKeyEx (HKEY_LOCAL_MACHINE, Key, 0, KEY_QUERY_VALUE, &hKey2)) == ERROR_SUCCESS)
+ {
+ DataSize = sizeof (MsgFileWork);
+ if (RegQueryValueEx (hKey2, L"EventMessageFile", 0, &Type, (LPBYTE) MsgFileWork, &DataSize) == ERROR_SUCCESS)
+ {
+ parse_filelist (MsgFileWork, MsgFile, MsgFileCount);
+ }
+ DataSize = sizeof (MsgFileWork);
+ if (RegQueryValueEx
+ (hKey2, L"ParameterMessageFile", 0, &Type, (LPBYTE) MsgFileWork, &DataSize) == ERROR_SUCCESS)
+ {
+ parse_filelist (MsgFileWork, ParamsFile, ParamsFileCount);
+ }
+ RegCloseKey (hKey2);
+ break;
+ }
+ }
+ }
+ RegCloseKey (hKey);
+ }
+}
+
+static const int FILL_COUNT = 64;
+
+static wchar_t *FormatLogMessage (wchar_t * Class, EVENTLOGRECORD * rec)
+{
+ wchar_t *SourceName = (wchar_t *) (rec + 1);
+ HINSTANCE lib;
+ wchar_t **msgs = NULL;
+ wchar_t *fmsg;
+ DWORD fsize = 0;
+ wchar_t *params = NULL, *new_params;
+ int params_size = 0;
+ wchar_t *res = NULL;
+
+ struct MsgPath *filename = NULL, *params_filename = NULL;
+ int filename_count = 0;
+ int params_filename_count = 0;
+
+ OutputDebugString(L"FormatLogMessage.1");
+ if (!SourceName[0])
+ return NULL;
+ GetMessageFile (SourceName, &filename, &filename_count, ¶ms_filename, ¶ms_filename_count);
+ if (rec->NumStrings)
+ {
+ OutputDebugString(L"FormatLogMessage.2");
+ int offset = 0;
+ int *param_ptrs = NULL;
+ msgs = (wchar_t **) malloc ((rec->NumStrings + FILL_COUNT) * sizeof (wchar_t *));
+ if (!msgs)
+ goto clear_exit;
+ param_ptrs = (int *) malloc (rec->NumStrings * sizeof (int));
+ for (int i = 0; i < rec->NumStrings; i++)
+ {
+ OutputDebugString(L"FormatLogMessage.2.1");
+ msgs[i] = (wchar_t *)(((char *) rec) + rec->StringOffset + offset);
+ OutputDebugString(msgs[i]);
+ offset += sizeof(wchar_t) * (wcslen (msgs[i]) + 1);
+ if (param_ptrs && params_filename_count)
+ {
+ bool has_params = false;
+ wchar_t *endptr = msgs[i];
+ wchar_t *new_endptr;
+
+ param_ptrs[i] = params_size + 1;
+ int zero_len = 1, back_offset = 0;
+ while (*endptr)
+ {
+ wchar_t *perc_pos = wcsstr (endptr, L"%%");
+ if (!perc_pos)
+ break;
+ has_params = true;
+ long err = wcstol (perc_pos + 2, &new_endptr, 10);
+ wchar_t *param_message;
+ DWORD param_message_size = 0;
+ for (int j = 0; j < params_filename_count; j++)
+ {
+ lib = LoadLibrary (params_filename[j].path);
+ if (lib)
+ {
+ param_message_size =
+ FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_HMODULE |
+ FORMAT_MESSAGE_ARGUMENT_ARRAY |
+ FORMAT_MESSAGE_MAX_WIDTH_MASK |
+ FORMAT_MESSAGE_IGNORE_INSERTS, lib,
+ err, LANG_NEUTRAL, (wchar_t *) & param_message, 512, NULL);
+ FreeLibrary (lib);
+ OutputDebugString(L"param_message");
+ OutputDebugString(param_message);
+ if (param_message_size)
+ break;
+ }
+ }
+ if (param_message_size)
+ {
+ param_message_size = wcslen (param_message);
+ new_params =
+ (wchar_t *) realloc (params,
+ (params_size +
+ param_message_size + (perc_pos - endptr) + zero_len) * sizeof (wchar_t));
+ if (new_params)
+ {
+ params = new_params;
+ }
+ else
+ {
+ free (params);
+ params = NULL;
+ break;
+ }
+ wcsncpy (params + params_size + back_offset, endptr, perc_pos - endptr);
+ params_size += param_message_size + (perc_pos - endptr) + zero_len;
+
+ LocalFree (param_message);
+ zero_len = 0;
+ back_offset = -1;
+ }
+ endptr = new_endptr;
+ }
+ if (has_params)
+ {
+ if (*endptr)
+ {
+ int tail_size = wcslen (endptr) + zero_len;
+ new_params = (wchar_t *) realloc (params, (params_size + tail_size) * sizeof (wchar_t));
+ if (new_params)
+ {
+ params = new_params;
+ }
+ else
+ {
+ free (params);
+ params = NULL;
+ break;
+ }
+ wcscpy (params + params_size + back_offset, endptr);
+ params_size += tail_size;
+ }
+ }
+ else
+ param_ptrs[i] = 0;
+ }
+ }
+ if (param_ptrs)
+ {
+ if (params)
+ {
+ for (int i = 0; i < rec->NumStrings; i++)
+ if (param_ptrs[i])
+ msgs[i] = params + param_ptrs[i] - 1;
+ }
+ free (param_ptrs);
+ }
+ for (int i = rec->NumStrings; i < (rec->NumStrings + FILL_COUNT); i++)
+ msgs[i] = (wchar_t *)empty_string;
+ }
+ if (filename_count)
+ {
+ for (int j = 0; j < filename_count; j++)
+ {
+ wchar_t expanded_filename[MAX_PATH];
+ ExpandEnvironmentStrings(filename[j].path, expanded_filename, MAX_PATH);
+ OutputDebugString(expanded_filename);
+ lib = LoadLibrary (expanded_filename);
+ if (lib)
+ {
+ fsize =
+ FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_HMODULE |
+ FORMAT_MESSAGE_ARGUMENT_ARRAY |
+ FORMAT_MESSAGE_MAX_WIDTH_MASK, lib,
+ rec->EventID, LANG_NEUTRAL, (wchar_t *) & fmsg, 512, (char **) msgs);
+ OutputDebugString(L"FormatLogMessage.3");
+ OutputDebugString(fmsg);
+ FreeLibrary (lib);
+ if (fsize)
+ break;
+ }
+ }
+ }
+ if (fsize)
+ {
+ res = (wchar_t *) malloc ((fsize + 1) * sizeof (wchar_t));
+ if (res)
+ memcpy (res, fmsg, (fsize + 1) * sizeof(wchar_t));
+ LocalFree (fmsg);
+ OutputDebugString(L"FormatLogMessage.4");
+ OutputDebugString(res);
+ }
+ else
+ {
+ int mem_size = 1;
+ for (int i = 0; i < rec->NumStrings; i++)
+ mem_size += 2 + wcslen (msgs[i]);
+ mem_size += 2 + wcslen (GetMsg (mFileErr1)) + 9 + wcslen ((wchar_t *) (rec + 1));
+ mem_size += 2 + wcslen (GetMsg (mFileErr2));
+ res = (wchar_t *) malloc (mem_size * sizeof (wchar_t));
+ if (res)
+ {
+ wsprintf (res, GetMsg (mFileErr1), rec->EventID & 0xffff, (wchar_t *) (rec + 1));
+ wsprintf (res, L"%s%s", res, L"\r\n");
+ wsprintf (res, L"%s%s", res, GetMsg (mFileErr2));
+ wsprintf (res, L"%s%s", res, L"\r\n");
+ for (int i = 0; i < rec->NumStrings; i++)
+ {
+ wsprintf (res, L"%s%s", res, msgs[i]);
+ wsprintf (res, L"%s%s", res, L"\r\n");
+ }
+ }
+ }
+ free (params);
+ if (msgs)
+ free (msgs);
+clear_exit:
+ free (filename);
+ free (params_filename);
+ return res;
+}
+
+#undef FILL_COUNT
+#undef FILLER
+
+static wchar_t *GetComputerName (EVENTLOGRECORD * rec)
+{
+ static wchar_t CompName[SMALL_BUFFER];
+ wchar_t *SourceName = (wchar_t *) (rec + 1);
+ wsprintf (CompName, L"%s", SourceName + wcslen (SourceName) + 1);
+ return CompName;
+}
+
+static const wchar_t *GetType (DWORD type)
+{
+ switch (type)
+ {
+ case EVENTLOG_ERROR_TYPE:
+ return GetMsg (mTypeError);
+ case EVENTLOG_WARNING_TYPE:
+ return GetMsg (mTypeWarning);
+ case EVENTLOG_INFORMATION_TYPE:
+ return GetMsg (mTypeInformation);
+ case EVENTLOG_AUDIT_SUCCESS:
+ return GetMsg (mTypeSuccessAudit);
+ case EVENTLOG_AUDIT_FAILURE:
+ return GetMsg (mTypeFailureAudit);
+ }
+ return GetMsg (mTypeUnknown);
+}
+
+static BOOL CheckLogName (EventViewer * panel, const wchar_t * LogName)
+{
+ BOOL res = FALSE;
+ HANDLE evt = OpenEventLog (panel->computer_ptr, LogName); //REMOTE
+ if (evt)
+ {
+ CloseEventLog (evt);
+ res = TRUE;
+ }
+ return res;
+}
Added: trunk/nt_event2/src/ev_ver.m4
===================================================================
--- trunk/nt_event2/src/ev_ver.m4 (rev 0)
+++ trunk/nt_event2/src/ev_ver.m4 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,5 @@
+define(MAJOR,2)dnl
+define(MINOR,0)dnl
+define(BUILD,1)dnl
+define(TYPE,RC1)dnl
+define(DATE,25.09.2011)dnl
Added: trunk/nt_event2/src/evplugin.h
===================================================================
--- trunk/nt_event2/src/evplugin.h (rev 0)
+++ trunk/nt_event2/src/evplugin.h 2011-09-26 03:54:18 UTC (rev 408)
@@ -0,0 +1,229 @@
+enum {
+ mName,
+ mNameDisk,
+ mRootName,
+ mExtMain,
+ mExtError,
+ mExtWarning,
+ mExtInformation,
+ mExtAuditSuccess,
+ mExtAuditFailure,
+ mExtNameError,
+ mFileDate,
+ mFileTime,
+ mFileUser,
+ mFileComputer,
+ mFileEventID,
+ mFileSource,
+ mFileType,
+ mFileCategory,
+ mFileDescription,
+ mFileData,
+ mFileErr1,
+ mFileErr2,
+ mTypeError,
+ mTypeWarning,
+ mTypeInformation,
+ mTypeSuccessAudit,
+ mTypeFailureAudit,
+ mTypeUnknown,
+ mTitleTime,
+ mTitleSource,
+ mTitleCategory,
+ mTitleEvent,
+ mTitleUser,
+ mTitleComputer,
+ mCpyDlgCopyTitle,
+ mCpyDlgMoveTitle,
+ mCpyDlgCopyOk,
+ mCpyDlgMoveOk,
+ mCpyDlgCancel,
+ mCpyDlgCopyTox1,
+ mCpyDlgCopyTo234,
+ mCpyDlgCopyToN,
+ mCpyDlgMoveTox1,
+ mCpyDlgMoveTo234,
+ mCpyDlgMoveToN,
+ mClearLog,
+ mConfigAddToDisksMenu,
+ mConfigDisksMenuDigit,
+ mConfigAddToPluginMenu,
+ mConfigBrowseEvtFiles,
+ mConfigStripExtension,
+ mConfigRestore,
+ mConfigScan1,
+ mConfigScan2,
+ mConfigShowHeader,
+ mConfigShowDescription,
+ mConfigShowData,
+ mConfigPrefix,
+ mConfigSave,
+ mConfigCancel,
+ mSelCompTitle,
+ mSelCompLabel,
+ mSelCompFootnote,
+ mExistSource,
+ mExistDestination,
+ mExistDestAlreadyExists,
+ mExistAcceptChoice,
+ mExistOverwrite,
+ mExistSkip,
+ mExistAppend,
+ mExistCancel,
+ mRetryError,
+ mRetryFrom,
+ mRetryTo,
+ mRetryRetry,
+ mRetrySkip,
+ mRetryCancel,
+ mClearCancel,
+ mClearClear,
+ mClearSkip,
+ mOtherConnecting,
+ mOtherScanning,
+ mError,
+ mErr1,
+ mErr2,
+ mKeyBackup,
+ mKeyMove,
+ mKeyClear,
+ mKeyRemote,
+ mKeyLocal,
+ mKeyViewData,
+ mKeyEditData,
+ mOk,
+ mPanelTypeDir0,
+ mPanelSizeDir0,
+ mColonTypeDir0,
+ mColonSizeDir0,
+ mPanelFullDir0,
+ mPanelTypeDir1,
+ mPanelSizeDir1,
+ mColonTypeDir1,
+ mColonSizeDir1,
+ mPanelFullDir1,
+ mPanelTypeDir2,
+ mPanelSizeDir2,
+ mColonTypeDir2,
+ mColonSizeDir2,
+ mPanelFullDir2,
+ mPanelTypeDir3,
+ mPanelSizeDir3,
+ mColonTypeDir3,
+ mColonSizeDir3,
+ mPanelFullDir3,
+ mPanelTypeDir4,
+ mPanelSizeDir4,
+ mColonTypeDir4,
+ mColonSizeDir4,
+ mPanelFullDir4,
+ mPanelTypeDir5,
+ mPanelSizeDir5,
+ mColonTypeDir5,
+ mColonSizeDir5,
+ mPanelFullDir5,
+ mPanelTypeDir6,
+ mPanelSizeDir6,
+ mColonTypeDir6,
+ mColonSizeDir6,
+ mPanelFullDir6,
+ mPanelTypeDir7,
+ mPanelSizeDir7,
+ mColonTypeDir7,
+ mColonSizeDir7,
+ mPanelFullDir7,
+ mPanelTypeDir8,
+ mPanelSizeDir8,
+ mColonTypeDir8,
+ mColonSizeDir8,
+ mPanelFullDir8,
+...
[truncated message content] |