_nsis.py
8.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
###############################################################################
# Name: nsis.py #
# Purpose: Define NSIS syntax for highlighting and other features #
# Author: Cody Precord <cprecord@editra.org> #
# Copyright: (c) 2007 Cody Precord <staff@editra.org> #
# License: wxWindows License #
###############################################################################
"""
FILE: nsis.py
AUTHOR: Cody Precord
@summary: Lexer configuration module for Nullsoft Installer Scripts.
@todo: Add User Defined KW
"""
__author__ = "Cody Precord <cprecord@editra.org>"
__svnid__ = "$Id: _nsis.py 68798 2011-08-20 17:17:05Z CJP $"
__revision__ = "$Revision: 68798 $"
#-----------------------------------------------------------------------------#
# Imports
import wx.stc as stc
# Local Imports
import syndata
#-----------------------------------------------------------------------------#
#---- Keyword Specifications ----#
# NSIS Functions
NSIS_FUNCT = (0, "!addincludedir !addplugindir MakeNSIS Portions Contributors: "
"Abort AddBrandingImage AddSize AutoCloseWindow BGFont "
"BrandingText BringToFront Call CallInstDLL Caption ChangeUI "
"ClearErrors ComponentText GetDLLVersion GetDLLVersionLocal "
"GetFileTime GetFileTimeLocal CopyFiles CRCCheck FileRead "
"CreateFont CreateShortCut SetDatablockOptimize DeleteINISec "
"DeleteINIStr DeleteRegKey DeleteRegValue Delete DetailPrint "
"DirText DirShow DirVar DirVerify GetInstDirError BGGradient"
"AllowRootDirInstall CheckBitmap EnableWindow EnumRegKey "
"EnumRegValue Exch Exec ExecWait ExecShell ExpandEnvStrings "
"FindWindow FindClose FindFirst FindNext File FileBufSize "
"FlushINI ReserveFile FileClose FileErrorText FileOpen IntCmp "
"FileWrite FileReadByte FileWriteByte FileSeek Function Page "
"GetDlgItem GetFullPathName GetTempFileName HideWindow Icon "
"IfErrors IfFileExists IfRebootFlag IfSilent InstallDirRegKey "
"InstallColors InstallDir InstProgressFlags InstType IntOp "
"IntCmpU IntFmt IsWindow Goto LangString LangStringUP Return "
"LicenseForceSelection LicenseLangString LicenseText "
"LoadLanguageFile LogSet LogText MessageBox Nop Name OutFile "
"PageCallbacks PageEx PageExEnd Pop Push Quit ReadINIStr "
"ReadRegDWORD ReadRegStr ReadEnvStr Reboot RegDLL Rename "
"RMDir Section SectionEnd SectionIn SubSection SectionGroup "
"SubSectionEnd SectionGroupEnd SearchPath SectionSetFlags "
"SectionGetFlags SectionSetInstTypes SectionGetInstTypes "
"SectionGetText SectionSetText SectionGetSize SectionSetSize "
"GetCurInstType SetCurInstType InstTypeSetText SetCompress"
"SendMessage SetAutoClose SetCtlColors SetBrandingImage "
"SetCompressor SetCompressorDictSize SetCompressionLevel "
"SetDateSave SetDetailsView SetDetailsPrint SetErrors "
"GetErrorLevel SetFileAttributes SetFont SetOutPath "
"SetPluginUnload SetRebootFlag SetShellVarContext SetSilent "
"ShowInstDetails ShowUninstDetails ShowWindow SilentInstall "
"SilentUnInstall Sleep StrCmp StrCpy StrLen SubCaption "
"UninstallExeName UninstallCaption UninstallIcon UninstPage "
"UninstallText UninstallSubCaption UnRegDLL WindowIcon "
"WriteRegBin WriteRegDWORD WriteRegStr WriteRegExpandStr "
"WriteUninstaller XPStyle !packhdr !system !execute !echo "
"!include !cd !ifdef !ifndef !endif !define !undef !else "
"!warning !error !verbose !macro !macroend !insertmacro "
"!ifmacrondef MiscButtonText DetailsButtonText "
"InstallButtonText SpaceTexts CompletedText InitPluginsDir "
"GetLabelAddress GetCurrentAddress !AddPluginDir LockWindow "
"AllowSkipFiles Var VIAddVersionKey VIProductVersion "
"ShowUnInstDetails WriteIniStr CreateDirectory FunctionEnd "
"IfAbort LicenseData LicenseBkColor InstTypeGetText "
"SetErrorLevel SetOverwrite WriteINIStr !AddIncludeDir "
"!ifmacrodef UninstallButtonText GetFunctionAddress ")
# NSIS Variables/Constants
NSIS_VAR = (1, "$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $R0 $R1 $R2 $R3 $R4 $R5 $R6 $R7 "
"$R8 $R9 $\t $\" $\' $\` $VARNAME $0, $INSTDIR $OUTDIR $CMDLINE "
"$LANGUAGE $PROGRAMFILES $COMMONFILES $DESKTOP $EXEDIR "
"${NSISDIR} $WINDIR $SYSDIR $TEMP $STARTMENU $SMPROGRAMS "
"$SMSTARTUP $QUICKLAUNCH $DOCUMENTS $SENDTO $RECENT $FAVORITES "
"$MUSIC $PICTURES $VIDEOS $NETHOOD $FONTS $TEMPLATES $APPDATA "
"$PRINTHOOD $INTERNET_CACHE $COOKIES $HISTORY $PROFILE "
"$ADMINTOOLS $RESOURCES $RESOURCES_LOCALIZED $CDBURN_AREA "
"$HWNDPARENT $PLUGINSDIR $$ $\r $\n")
# NSIS Lables (Attributes)
NSIS_LBL = (2, "ARCHIVE FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_HIDDEN LEFT "
"FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_OFFLINE lastused HKCR "
"FILE_ATTRIBUTE_SYSTEM FILE_ATTRIBUTE_TEMPORARY HIDDEN HKCC "
"HKCU HKDD HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG IDYES SYSTEM "
"HKEY_DYN_DATA HKEY_LOCAL_MACHINE MB_ICONQUESTION OFFLINE "
"HKLM HKPD HKU IDABORT IDCANCEL IDIGNORE IDNO IDOK IDRETRY "
"MB_ABORTRETRYIGNORE MB_DEFBUTTON1 MB_DEFBUTTON2 MB_DEFBUTTON3 "
"MB_DEFBUTTON4 MB_ICONEXCLAMATION MB_ICONINFORMATION normal off "
"MB_ICONSTOP MB_OK MB_OKCANCEL MB_RETRYCANCEL MB_RIGHT listonly "
"MB_SETFOREGROUND MB_TOPMOST MB_YESNO MB_YESNOCANCEL NORMAL "
"READONLY SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWNORMAL "
"TEMPORARY auto colored false force hide ifnewer nevershow "
"on show silent silentlog smooth true try lzma zlib bzip2 none "
"textonly both top left bottom right license components "
"instfiles uninstConfirm custom all leave current ifdiff "
"RIGHT CENTER dlg_id ALT CONTROL EXT SHIFT open print manual "
"alwaysoff FILE_ATTRIBUTE_READONLY HKEY_CURRENT_USER directory "
"HKEY_PERFORMANCE_DATA HKEY_USERS ")
# NSIS User Defined (Not sure need help)
NSIS_DEF = (3, "")
#---- Syntax Style Specs ----#
SYNTAX_ITEMS = [ (stc.STC_NSIS_DEFAULT, 'default_style'),
(stc.STC_NSIS_COMMENT, 'comment_style'),
(stc.STC_NSIS_FUNCTION, 'funct_style'),
(stc.STC_NSIS_FUNCTIONDEF, 'keyword_style'),
(stc.STC_NSIS_IFDEFINEDEF, 'pre_style'),
(stc.STC_NSIS_LABEL, 'class_style'),
(stc.STC_NSIS_MACRODEF, 'pre_style'),
(stc.STC_NSIS_NUMBER, 'number_style'),
(stc.STC_NSIS_SECTIONDEF, 'keyword_style'),
(stc.STC_NSIS_STRINGDQ, 'string_style'),
(stc.STC_NSIS_STRINGLQ, 'string_style'),
(stc.STC_NSIS_STRINGRQ, 'string_style'),
(stc.STC_NSIS_STRINGVAR, 'string_style'),
(stc.STC_NSIS_SUBSECTIONDEF, 'keyword_style'),
(stc.STC_NSIS_USERDEFINED, 'pre_style'),
(stc.STC_NSIS_VARIABLE, 'scalar_style') ]
#---- Extra Properties ----#
FOLD = ("fold", "1")
#-----------------------------------------------------------------------------#
class SyntaxData(syndata.SyntaxDataBase):
"""SyntaxData object for NSIS"""
def __init__(self, langid):
super(SyntaxData, self).__init__(langid)
# Setup
self.SetLexer(stc.STC_LEX_NSIS)
def GetKeywords(self):
"""Returns Specified Keywords List """
return [NSIS_FUNCT, NSIS_VAR, NSIS_LBL]
def GetSyntaxSpec(self):
"""Syntax Specifications """
return SYNTAX_ITEMS
def GetProperties(self):
"""Returns a list of Extra Properties to set """
return [FOLD]
def GetCommentPattern(self):
"""Returns a list of characters used to comment a block of code """
return [u';']