📄 maskededit.py
字号:
## ---------- ---------- ---------- ---------- ---------- ---------- ----------
## Constants for identifying control keys and classes of keys:
WXK_CTRL_A = (ord('A')+1) - ord('A') ## These keys are not already defined in wx
WXK_CTRL_C = (ord('C')+1) - ord('A')
WXK_CTRL_S = (ord('S')+1) - ord('A')
WXK_CTRL_V = (ord('V')+1) - ord('A')
WXK_CTRL_X = (ord('X')+1) - ord('A')
WXK_CTRL_Z = (ord('Z')+1) - ord('A')
nav = (
wx.WXK_BACK, wx.WXK_LEFT, wx.WXK_RIGHT, wx.WXK_UP, wx.WXK_DOWN, wx.WXK_TAB,
wx.WXK_HOME, wx.WXK_END, wx.WXK_RETURN, wx.WXK_PRIOR, wx.WXK_NEXT
)
control = (
wx.WXK_BACK, wx.WXK_DELETE, wx.WXK_INSERT, WXK_CTRL_A, WXK_CTRL_C, WXK_CTRL_S, WXK_CTRL_V,
WXK_CTRL_X, WXK_CTRL_Z
)
## ---------- ---------- ---------- ---------- ---------- ---------- ----------
## Constants for masking. This is where mask characters
## are defined.
## maskchars used to identify valid mask characters from all others
## #- allow numeric 0-9 only
## A- allow uppercase only. Combine with forceupper to force lowercase to upper
## a- allow lowercase only. Combine with forcelower to force upper to lowercase
## X- allow any character (string.letters, string.punctuation, string.digits)
## Note: locale settings affect what "uppercase", lowercase, etc comprise.
##
maskchars = ("#","A","a","X","C","N",'*','&')
ansichars = ""
for i in xrange(32, 256):
ansichars += chr(i)
months = '(01|02|03|04|05|06|07|08|09|10|11|12)'
charmonths = '(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC|jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)'
charmonths_dict = {'jan': 1, 'feb': 2, 'mar': 3, 'apr': 4, 'may': 5, 'jun': 6,
'jul': 7, 'aug': 8, 'sep': 9, 'oct': 10, 'nov': 11, 'dec': 12}
days = '(01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)'
hours = '(0\d| \d|1[012])'
milhours = '(00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23)'
minutes = """(00|01|02|03|04|05|06|07|08|09|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)"""
seconds = minutes
am_pm_exclude = 'BCDEFGHIJKLMNOQRSTUVWXYZ\x8a\x8c\x8e\x9f\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde'
states = "AL,AK,AZ,AR,CA,CO,CT,DE,DC,FL,GA,GU,HI,ID,IL,IN,IA,KS,KY,LA,MA,ME,MD,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,PR,RI,SC,SD,TN,TX,UT,VA,VT,VI,WA,WV,WI,WY".split(',')
state_names = ['Alabama','Alaska','Arizona','Arkansas',
'California','Colorado','Connecticut',
'Delaware','District of Columbia',
'Florida','Georgia','Hawaii',
'Idaho','Illinois','Indiana','Iowa',
'Kansas','Kentucky','Louisiana',
'Maine','Maryland','Massachusetts','Michigan',
'Minnesota','Mississippi','Missouri','Montana',
'Nebraska','Nevada','New Hampshire','New Jersey',
'New Mexico','New York','North Carolina','North Dakokta',
'Ohio','Oklahoma','Oregon',
'Pennsylvania','Puerto Rico','Rhode Island',
'South Carolina','South Dakota',
'Tennessee','Texas','Utah',
'Vermont','Virginia',
'Washington','West Virginia',
'Wisconsin','Wyoming']
## ---------- ---------- ---------- ---------- ---------- ---------- ----------
## The following dictionary defines the current set of autoformats:
masktags = {
"USPHONEFULLEXT": {
'mask': "(###) ###-#### x:###",
'formatcodes': 'F^->',
'validRegex': "^\(\d{3}\) \d{3}-\d{4}",
'description': "Phone Number w/opt. ext"
},
"USPHONETIGHTEXT": {
'mask': "###-###-#### x:###",
'formatcodes': 'F^->',
'validRegex': "^\d{3}-\d{3}-\d{4}",
'description': "Phone Number\n (w/hyphens and opt. ext)"
},
"USPHONEFULL": {
'mask': "(###) ###-####",
'formatcodes': 'F^->',
'validRegex': "^\(\d{3}\) \d{3}-\d{4}",
'description': "Phone Number only"
},
"USPHONETIGHT": {
'mask': "###-###-####",
'formatcodes': 'F^->',
'validRegex': "^\d{3}-\d{3}-\d{4}",
'description': "Phone Number\n(w/hyphens)"
},
"USSTATE": {
'mask': "AA",
'formatcodes': 'F!V',
'validRegex': "([ACDFGHIKLMNOPRSTUVW] |%s)" % string.join(states,'|'),
'choices': states,
'choiceRequired': True,
'description': "US State Code"
},
"USSTATENAME": {
'mask': "ACCCCCCCCCCCCCCCCCCC",
'formatcodes': 'F_',
'validRegex': "([ACDFGHIKLMNOPRSTUVW] |%s)" % string.join(state_names,'|'),
'choices': state_names,
'choiceRequired': True,
'description': "US State Name"
},
"USDATETIMEMMDDYYYY/HHMMSS": {
'mask': "##/##/#### ##:##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + months + '/' + days + '/' + '\d{4} ' + hours + ':' + minutes + ':' + seconds + ' (A|P)M',
'description': "US Date + Time"
},
"USDATETIMEMMDDYYYY-HHMMSS": {
'mask': "##-##-#### ##:##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + months + '-' + days + '-' + '\d{4} ' + hours + ':' + minutes + ':' + seconds + ' (A|P)M',
'description': "US Date + Time\n(w/hypens)"
},
"USDATE24HRTIMEMMDDYYYY/HHMMSS": {
'mask': "##/##/#### ##:##:##",
'formatcodes': 'DF',
'validRegex': '^' + months + '/' + days + '/' + '\d{4} ' + milhours + ':' + minutes + ':' + seconds,
'description': "US Date + 24Hr (Military) Time"
},
"USDATE24HRTIMEMMDDYYYY-HHMMSS": {
'mask': "##-##-#### ##:##:##",
'formatcodes': 'DF',
'validRegex': '^' + months + '-' + days + '-' + '\d{4} ' + milhours + ':' + minutes + ':' + seconds,
'description': "US Date + 24Hr Time\n(w/hypens)"
},
"USDATETIMEMMDDYYYY/HHMM": {
'mask': "##/##/#### ##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + months + '/' + days + '/' + '\d{4} ' + hours + ':' + minutes + ' (A|P)M',
'description': "US Date + Time\n(without seconds)"
},
"USDATE24HRTIMEMMDDYYYY/HHMM": {
'mask': "##/##/#### ##:##",
'formatcodes': 'DF',
'validRegex': '^' + months + '/' + days + '/' + '\d{4} ' + milhours + ':' + minutes,
'description': "US Date + 24Hr Time\n(without seconds)"
},
"USDATETIMEMMDDYYYY-HHMM": {
'mask': "##-##-#### ##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + months + '-' + days + '-' + '\d{4} ' + hours + ':' + minutes + ' (A|P)M',
'description': "US Date + Time\n(w/hypens and w/o secs)"
},
"USDATE24HRTIMEMMDDYYYY-HHMM": {
'mask': "##-##-#### ##:##",
'formatcodes': 'DF',
'validRegex': '^' + months + '-' + days + '-' + '\d{4} ' + milhours + ':' + minutes,
'description': "US Date + 24Hr Time\n(w/hyphens and w/o seconds)"
},
"USDATEMMDDYYYY/": {
'mask': "##/##/####",
'formatcodes': 'DF',
'validRegex': '^' + months + '/' + days + '/' + '\d{4}',
'description': "US Date\n(MMDDYYYY)"
},
"USDATEMMDDYY/": {
'mask': "##/##/##",
'formatcodes': 'DF',
'validRegex': '^' + months + '/' + days + '/\d\d',
'description': "US Date\n(MMDDYY)"
},
"USDATEMMDDYYYY-": {
'mask': "##-##-####",
'formatcodes': 'DF',
'validRegex': '^' + months + '-' + days + '-' +'\d{4}',
'description': "MM-DD-YYYY"
},
"EUDATEYYYYMMDD/": {
'mask': "####/##/##",
'formatcodes': 'DF',
'validRegex': '^' + '\d{4}'+ '/' + months + '/' + days,
'description': "YYYY/MM/DD"
},
"EUDATEYYYYMMDD.": {
'mask': "####.##.##",
'formatcodes': 'DF',
'validRegex': '^' + '\d{4}'+ '.' + months + '.' + days,
'description': "YYYY.MM.DD"
},
"EUDATEDDMMYYYY/": {
'mask': "##/##/####",
'formatcodes': 'DF',
'validRegex': '^' + days + '/' + months + '/' + '\d{4}',
'description': "DD/MM/YYYY"
},
"EUDATEDDMMYYYY.": {
'mask': "##.##.####",
'formatcodes': 'DF',
'validRegex': '^' + days + '.' + months + '.' + '\d{4}',
'description': "DD.MM.YYYY"
},
"EUDATEDDMMMYYYY.": {
'mask': "##.CCC.####",
'formatcodes': 'DF',
'validRegex': '^' + days + '.' + charmonths + '.' + '\d{4}',
'description': "DD.Month.YYYY"
},
"EUDATEDDMMMYYYY/": {
'mask': "##/CCC/####",
'formatcodes': 'DF',
'validRegex': '^' + days + '/' + charmonths + '/' + '\d{4}',
'description': "DD/Month/YYYY"
},
"EUDATETIMEYYYYMMDD/HHMMSS": {
'mask': "####/##/## ##:##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + '\d{4}'+ '/' + months + '/' + days + ' ' + hours + ':' + minutes + ':' + seconds + ' (A|P)M',
'description': "YYYY/MM/DD HH:MM:SS"
},
"EUDATETIMEYYYYMMDD.HHMMSS": {
'mask': "####.##.## ##:##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + '\d{4}'+ '.' + months + '.' + days + ' ' + hours + ':' + minutes + ':' + seconds + ' (A|P)M',
'description': "YYYY.MM.DD HH:MM:SS"
},
"EUDATETIMEDDMMYYYY/HHMMSS": {
'mask': "##/##/#### ##:##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + days + '/' + months + '/' + '\d{4} ' + hours + ':' + minutes + ':' + seconds + ' (A|P)M',
'description': "DD/MM/YYYY HH:MM:SS"
},
"EUDATETIMEDDMMYYYY.HHMMSS": {
'mask': "##.##.#### ##:##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + days + '.' + months + '.' + '\d{4} ' + hours + ':' + minutes + ':' + seconds + ' (A|P)M',
'description': "DD.MM.YYYY HH:MM:SS"
},
"EUDATETIMEYYYYMMDD/HHMM": {
'mask': "####/##/## ##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + '\d{4}'+ '/' + months + '/' + days + ' ' + hours + ':' + minutes + ' (A|P)M',
'description': "YYYY/MM/DD HH:MM"
},
"EUDATETIMEYYYYMMDD.HHMM": {
'mask': "####.##.## ##:## AM",
'excludeChars': am_pm_exclude,
'formatcodes': 'DF!',
'validRegex': '^' + '\d{4}'+ '.' + months + '.' + days + ' ' + hours + ':' + minutes + ' (A|P)M',
'description': "YYYY.MM.DD HH:MM"
},
"EUDATETIMEDDMMYYYY/HHMM": {
'mask': "##/##/#### ##:## AM",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -