|
@@ -7,33 +7,34 @@ from ssat_sdk.MenuTree3.TConfig import TConfig
|
|
|
# 测试加头文件;
|
|
|
from TData import CTData
|
|
|
|
|
|
-
|
|
|
g_level = ['First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth',
|
|
|
'Seventh', 'Eighth', 'Ninth', 'Tenth', 'Eleventh', 'Twelfth']
|
|
|
|
|
|
|
|
|
+# 注意:所有不对外暴露的变量和函数需要私有化,以明确哪些接口和参数是对外的。
|
|
|
+# 这样便于后期维护时,根据对外的变量和函数来做处理。
|
|
|
class CConfigManager(TConfig, CBaseLog):
|
|
|
def __init__(self, menuTreeDir, pathManager):
|
|
|
- self.pathManager = pathManager
|
|
|
- if self.pathManager is None:
|
|
|
+ self.__pathManager = pathManager
|
|
|
+ if self.__pathManager is None:
|
|
|
self.error("路径参数错误:None")
|
|
|
# 状态:False表示路径值失败;
|
|
|
self.status = False
|
|
|
# menuTree目录;
|
|
|
- self.uiTreeDir = menuTreeDir
|
|
|
+ self.__uiTreeDir = menuTreeDir
|
|
|
# 判断是否为目录;
|
|
|
- if not os.path.isdir(self.uiTreeDir):
|
|
|
- self.error("%s 不是menuTree目录" % self.uiTreeDir)
|
|
|
+ if not os.path.isdir(self.__uiTreeDir):
|
|
|
+ self.error("%s 不是menuTree目录" % self.__uiTreeDir)
|
|
|
# 判断目录是否存在;
|
|
|
- if not os.path.exists(self.uiTreeDir):
|
|
|
- self.error("menuTree(%s)目录不存在" % self.uiTreeDir)
|
|
|
+ if not os.path.exists(self.__uiTreeDir):
|
|
|
+ self.error("menuTree(%s)目录不存在" % self.__uiTreeDir)
|
|
|
# 判断配置文件是否存在;
|
|
|
- self.configPath = os.path.join(self.uiTreeDir, "menutree.ini")
|
|
|
- if not os.path.exists(self.configPath):
|
|
|
- self.error("menutree配置文件不存在:%s" % self.configPath)
|
|
|
+ self.__configPath = os.path.join(self.__uiTreeDir, "menutree.ini")
|
|
|
+ if not os.path.exists(self.__configPath):
|
|
|
+ self.error("menutree配置文件不存在:%s" % self.__configPath)
|
|
|
self.status = True
|
|
|
# 初始化父类;
|
|
|
- TConfig.__init__(self, self.configPath)
|
|
|
+ TConfig.__init__(self, self.__configPath)
|
|
|
|
|
|
# 获取超级密码;
|
|
|
def getSuperPassword(self):
|
|
@@ -69,11 +70,13 @@ class CConfigManager(TConfig, CBaseLog):
|
|
|
|
|
|
# 获取Option的图片配置;
|
|
|
def __getICONConfig(self, optionName, is_value_sheet=False):
|
|
|
- paths = self.pathManager.get_option_paths(optionName)
|
|
|
+ # 默认值;
|
|
|
+ def_cfg = {"icon_path": "", "dcfg": {}, "dir_path": ""}
|
|
|
+ paths = self.__pathManager.get_option_paths(optionName)
|
|
|
# 判断路径节点是否空;
|
|
|
if paths.__len__() == 0:
|
|
|
- self.error("当前【%s】的路径节点空" % optionName)
|
|
|
- return False, {"icon_path": "", "dcfg": {}, "dir_path": ""}
|
|
|
+ self.error("当前【%s】的路径节点空,使用默认的配置值%s" % (optionName, def_cfg))
|
|
|
+ return False, def_cfg
|
|
|
|
|
|
# 获取first parent;
|
|
|
first_parent = paths[g_level[0]]['parent']
|
|
@@ -85,34 +88,37 @@ class CConfigManager(TConfig, CBaseLog):
|
|
|
cur_level = "value"
|
|
|
|
|
|
# option聚焦的首配图片路径;
|
|
|
- icon_path = os.path.join(self.uiTreeDir, "icon\\", cur_parent + "." + cur_level + "_" + optionName + ".png")
|
|
|
+ icon_path = os.path.join(self.__uiTreeDir, "icon\\", cur_parent + "." + cur_level + "_" + optionName + ".png")
|
|
|
# option聚焦的dir首配图片路径;
|
|
|
- icon_dir_path = os.path.join(self.uiTreeDir, "icon\\" + cur_parent + "." + cur_level + "_" + optionName + ".dir.png")
|
|
|
+ icon_dir_path = os.path.join(self.__uiTreeDir,
|
|
|
+ "icon\\" + cur_parent + "." + cur_level + "_" + optionName + ".dir.png")
|
|
|
# 图片聚焦时的定位参数;
|
|
|
opc_cfg = self.get_value_dict(cur_level, cur_parent + '.' + optionName)
|
|
|
|
|
|
- last_path = icon_path
|
|
|
# 首配图片判断是否存在,不存在取用次配图片路径;
|
|
|
if not os.path.exists(icon_path):
|
|
|
# 使用次配图片,父级配图;
|
|
|
- icon_path = os.path.join(self.uiTreeDir, "icon\\" + cur_parent + "." + cur_level + ".png")
|
|
|
- icon_dir_path = os.path.join(self.uiTreeDir, "icon\\" + cur_parent + "." + cur_level + ".dir.png")
|
|
|
+ self.warn("Option(%s)首配图片不存在:%s" % (optionName, icon_path))
|
|
|
+ icon_path = os.path.join(self.__uiTreeDir, "icon\\" + cur_parent + "." + cur_level + ".png")
|
|
|
+ icon_dir_path = os.path.join(self.__uiTreeDir, "icon\\" + cur_parent + "." + cur_level + ".dir.png")
|
|
|
opc_cfg = self.get_value_dict(cur_level, cur_parent)
|
|
|
- self.warn("Option(%s)首配图片不存在:%s,使用次配图:%s" % (optionName, icon_path))
|
|
|
+ self.warn("Option(%s)首配图片不存在,尝试使用次配图(%s):%s,配置%s" % (optionName, cur_parent, icon_path, opc_cfg))
|
|
|
# 如果次配都不存在,使用顶层配图;
|
|
|
if not os.path.exists(icon_path):
|
|
|
self.warn("Option(%s)次配图片不存在:%s" % (optionName, icon_path))
|
|
|
# 使用顶层配图(first parent)
|
|
|
- icon_path = os.path.join(self.uiTreeDir, "icon\\" + first_parent + "." + cur_level + "_" + optionName +
|
|
|
+ icon_path = os.path.join(self.__uiTreeDir,
|
|
|
+ "icon\\" + first_parent + "." + cur_level + "_" + optionName +
|
|
|
".png")
|
|
|
- icon_dir_path = os.path.join(self.uiTreeDir, "icon\\" + first_parent + "." + cur_level + "_" + optionName +
|
|
|
+ icon_dir_path = os.path.join(self.__uiTreeDir,
|
|
|
+ "icon\\" + first_parent + "." + cur_level + "_" + optionName +
|
|
|
".dir.png")
|
|
|
opc_cfg = self.get_value_dict(cur_level, first_parent)
|
|
|
-
|
|
|
+ self.warn("Option(%s)次配图片不存在,尝试使用顶层配图(%s):%s,配置%s" % (optionName, first_parent, icon_path, opc_cfg))
|
|
|
# 如果顶层配图不存在,退出;
|
|
|
if not os.path.exists(icon_path):
|
|
|
- self.error("%s对应的顶层菜单配图不存在%s" % (optionName, icon_path))
|
|
|
- return False, {"icon_path": "", "dcfg": {}, "dir_path": ""}
|
|
|
+ self.error("%s对应的顶层菜单配图不存在%s,使用默认配置%s" % (optionName, icon_path, def_cfg))
|
|
|
+ return False, def_cfg
|
|
|
# endif
|
|
|
# endif
|
|
|
# endif
|
|
@@ -133,7 +139,7 @@ class CConfigManager(TConfig, CBaseLog):
|
|
|
# 获取Option的OCR配置;
|
|
|
def getOptionOCRConfig(self, optionName):
|
|
|
ocr_dict = []
|
|
|
- paths = self.pathManager.get_option_paths(optionName)
|
|
|
+ paths = self.__pathManager.get_option_paths(optionName)
|
|
|
# 判断路径节点是否空;
|
|
|
if paths.__len__() == 0:
|
|
|
self.error("当前【%s】的路径节点空" % optionName)
|
|
@@ -142,7 +148,7 @@ class CConfigManager(TConfig, CBaseLog):
|
|
|
else:
|
|
|
# 如果状态False,退出;
|
|
|
if self.status is False:
|
|
|
- self.warn("配置文件(%s)不存在,%s使用默认的ocr配置", self.configPath, optionName)
|
|
|
+ self.warn("配置文件(%s)不存在,%s使用默认的ocr配置" % (self.__configPath, optionName))
|
|
|
ocr_dict = [{"lan": "ChinesePRC+English", "type": 4}, {"lan": "ChinesePRC+English", "type": 253},
|
|
|
{"lan": "ChinesePRC+English", "type": 10001}]
|
|
|
else:
|
|
@@ -153,17 +159,17 @@ class CConfigManager(TConfig, CBaseLog):
|
|
|
cur_level = g_level[i]
|
|
|
# 是否有当前option的ocr配置;
|
|
|
if self.has_option(cur_level, optionName + '.ocr'):
|
|
|
- self.warn("%s使用自身的ocr配置", optionName)
|
|
|
+ self.warn("%s使用自身的ocr配置" % optionName)
|
|
|
ocr_dict = self.get_dict(self.get_value(cur_level, optionName + '.ocr'))
|
|
|
break
|
|
|
# 如果option本身没有配置,获取其父节点的配置;
|
|
|
if self.has_option(cur_level, cur_parent + '.ocr'):
|
|
|
- self.warn("%s使用父节点%s的ocr配置", optionName, cur_parent)
|
|
|
+ self.warn("%s使用父节点%s的ocr配置" % (optionName, cur_parent))
|
|
|
ocr_dict = self.get_dict(self.get_value(cur_level, cur_parent + '.ocr'))
|
|
|
break
|
|
|
# 如果option父级没有配置,则获取顶层配置(first parent);
|
|
|
if self.has_option(cur_level, first_parent + '.ocr'):
|
|
|
- self.warn("%s使用顶层节点%s的ocr配置", optionName, first_parent)
|
|
|
+ self.warn("%s使用顶层节点%s的ocr配置" % (optionName, first_parent))
|
|
|
ocr_dict = self.get_dict(self.get_value(cur_level, first_parent + '.ocr'))
|
|
|
break
|
|
|
# end-for
|
|
@@ -171,14 +177,15 @@ class CConfigManager(TConfig, CBaseLog):
|
|
|
# end-if
|
|
|
self.info("%s使用的ocr配置=%" % (optionName, ocr_dict))
|
|
|
|
|
|
- # 获取Value的OCR配置;
|
|
|
- def getValueOCRConfig(self, valueName, paths):
|
|
|
- pass
|
|
|
+ # 获取ICON源屏幕的分辨率配置值;
|
|
|
+ # 该值用途:由于有些icon是在某些分辨率下截图的,但是同机芯项目可能使用同一套UI,只是分辨率不一样而已。
|
|
|
+ # 所以,根据当初的icon分辨率,可以计算出在别的分辨率下的icon区域大小;
|
|
|
+ def getICONResolutionConfig(self):
|
|
|
+ return self.get_value_dict('Screen', 'shape') if self.has_option('Screen', 'shape') else [1920, 1080]
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
tData = CTData()
|
|
|
upath = UITPathManage(tData)
|
|
|
opc = CConfigManager(r'D:\SAT\resource\MenuTree\RT2851\2851', upath)
|
|
|
- # print opc.getThresholdDict("factory")
|
|
|
print opc.getOptionICONConfig("picture")
|