⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 face.py

📁 porting scintilla to qt
💻 PY
字号:
# Module for reading and parsing Scintilla.iface fileimport stringdef sanitiseLine(line):	if line[-1:] == '\n': line = line[:-1]	if string.find(line, "##") != -1:		line = line[:string.find(line, "##")]	line = string.strip(line)	return line	def decodeFunction(featureVal):	retType, rest = string.split(featureVal, " ", 1)	nameIdent, params = string.split(rest, "(")	name, value = string.split(nameIdent, "=")	params, rest = string.split(params, ")")	param1, param2 = string.split(params, ",")[0:2]	return retType, name, value, param1, param2	def decodeEvent(featureVal):	retType, rest = string.split(featureVal, " ", 1)	nameIdent, params = string.split(rest, "(")	name, value = string.split(nameIdent, "=")	return retType, name, value	def decodeParam(p):	param = string.strip(p)	type = ""	name = ""	value = ""	if " " in param:		type, nv = string.split(param, " ")		if "=" in nv:			name, value = string.split(nv, "=")		else:			name = nv	return type, name, valueclass Face:	def __init__(self):		self.order = []		self.features = {}		self.values = {}		self.events = {}			def ReadFromFile(self, name):		currentCategory = ""		currentComment = []		currentCommentFinished = 0		file = open(name)		for line in file.readlines():			line = sanitiseLine(line)			if line:				if line[0] == "#":					if line[1] == " ":						if currentCommentFinished:							currentComment = []							currentCommentFinished = 0						currentComment.append(line[2:])				else:					currentCommentFinished = 1					featureType, featureVal = string.split(line, " ", 1)					if featureType in ["fun", "get", "set"]:						retType, name, value, param1, param2 = decodeFunction(featureVal)						p1 = decodeParam(param1)						p2 = decodeParam(param2)						self.features[name] = { 							"FeatureType": featureType, 							"ReturnType": retType,							"Value": value, 							"Param1Type": p1[0], "Param1Name": p1[1], "Param1Value": p1[2], 							"Param2Type": p2[0],	"Param2Name": p2[1], "Param2Value": p2[2],							"Category": currentCategory, "Comment": currentComment						}						if self.values.has_key(value):							raise "Duplicate value " + value + " " + name						self.values[value] = 1						self.order.append(name)					elif featureType == "evt":						retType, name, value = decodeEvent(featureVal)						self.features[name] = { 							"FeatureType": featureType, 							"ReturnType": retType,							"Value": value, 							"Category": currentCategory, "Comment": currentComment						}						if self.events.has_key(value):							raise "Duplicate event " + value + " " + name						self.events[value] = 1						self.order.append(name)					elif featureType == "cat":						currentCategory = featureVal					elif featureType == "val":						name, value = string.split(featureVal, "=", 1)						self.features[name] = { 							"FeatureType": featureType, 							"Category": currentCategory, 							"Value": value }						self.order.append(name)					elif featureType == "enu" or featureType == "lex":						name, value = string.split(featureVal, "=", 1)						self.features[name] = { 							"FeatureType": featureType, 							"Category": currentCategory, 							"Value": value }						self.order.append(name)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -