123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- # -*- coding:utf-8 -*-
- from TData import CTData
- from UIT_tree import UITTree
- from UIT_treeConstant import TreeConst
- from ssat_sdk.utils.string_util import strcmp
- from UIT_log import error,info,debug
- import os, sys, time
- from collections import OrderedDict
- DEBUG = True
- INFO = True
- ERROR = True
- g_level = TreeConst.G_LEVEL
- class UITPathManage():
- def __init__(self, uitData):
- self.uitData = uitData
- self.valueParams = self.uitData.UITree.valueParams
- self.pathParams = self.uitData.UITree.pathParams
- def get_menu_paths(self, option, value):
- if type(option) == str:
- option = unicode(option)
- if type(value) == str:
- value = unicode(value)
- # pp必须不排序;
- vp, pp = {}, OrderedDict()
- if option in self.valueParams.values:
- vp = {"option": option, "value": value, "enter_key": self.valueParams.values[option]["enter_key"],
- "move_key": self.valueParams.values[option]["move_key"]}
- # 找到value对应的ocr;
- for item in self.valueParams.values[option]["value"]:
- if "range(" in item["value"]:
- vp["value_for_ocr"] = item["value_for_ocr"].split(';')
- break
- elif item["value"].lower() == value.lower():
- vp["value_for_ocr"] = item["value_for_ocr"].split(';')
- break
- # 首先,字典不排序,需要倒序;
- paths = reversed(self.pathParams.paths)
- for level in paths:
- found = False
- for parent in self.pathParams.paths[level]:
- # print parent,self.pathParams.paths[level][parent],'\r\n'
- for item in self.pathParams.paths[level][parent]["value"]:
- # print item
- if item["option"].lower() == option.lower():
- pp[level] = {
- "parent": parent,
- "move_key": self.pathParams.paths[level][parent][TreeConst.Option_MoveKey],
- "enter_key": self.pathParams.paths[level][parent][TreeConst.Option_EnterKey],
- "others": self.pathParams.paths[level][parent][TreeConst.Option_Others],
- "option": item[TreeConst.Option_Name],
- "option_for_ocr": item[TreeConst.Option_ForOCR].split(';'),
- "option_move_key": item[TreeConst.Option_MoveKey],
- "option_enter_key": item[TreeConst.Option_EnterKey],
- "option_others": item[TreeConst.Option_Others]
- }
- option = parent
- found = True
- break
- if found:
- break
- else:
- if parent == option:
- for item in self.pathParams.paths[level][parent]["value"]:
- # print item
- if item["option"].lower() == value.lower():
- pp[level] = {
- "parent": parent,
- "move_key": self.pathParams.paths[level][parent][TreeConst.Option_MoveKey],
- "enter_key": self.pathParams.paths[level][parent][TreeConst.Option_EnterKey],
- "others": self.pathParams.paths[level][parent][TreeConst.Option_Others],
- "option": item["option"],
- "option_for_ocr": item["option_for_ocr"].split(';'),
- "option_move_key": item[TreeConst.Option_MoveKey],
- "option_enter_key": item[TreeConst.Option_EnterKey],
- "option_others": item[TreeConst.Option_Others]
- }
- option = parent
- found = True
- break
- # endif
- # endfor
- break
- # endif
- # 需要对path倒序使用;
- return vp, pp
- def get_option_paths(self, option):
- # pp必须不排序;
- pp = OrderedDict()
- # 首先,字典不排序,需要倒序;
- paths = reversed(self.pathParams.paths)
- for level in paths:
- found = False
- for parent in self.pathParams.paths[level]:
- # print parent,self.pathParams.paths[level][parent],'\r\n'
- for item in self.pathParams.paths[level][parent]["value"]:
- # print item
- if item["option"].lower() == option.lower():
- pp[level] = {
- "parent": parent,
- "move_key": self.pathParams.paths[level][parent][TreeConst.Option_MoveKey],
- "enter_key": self.pathParams.paths[level][parent][TreeConst.Option_EnterKey],
- "others": self.pathParams.paths[level][parent][TreeConst.Option_Others],
- "option": item[TreeConst.Option_Name],
- "option_for_ocr": item[TreeConst.Option_ForOCR].split(';'),
- "option_move_key": item[TreeConst.Option_MoveKey],
- "option_enter_key": item[TreeConst.Option_EnterKey],
- "option_others": item[TreeConst.Option_Others]
- }
- option = parent
- found = True
- break
- if found:
- break
- else:
- if parent == option:
- for item in self.pathParams.paths[level][parent]["value"]:
- # print item
- if item["option"].lower() == option.lower():
- pp[level] = {
- "parent": parent,
- "move_key": self.pathParams.paths[level][parent][TreeConst.Option_MoveKey],
- "enter_key": self.pathParams.paths[level][parent][TreeConst.Option_EnterKey],
- "others": self.pathParams.paths[level][parent][TreeConst.Option_Others],
- "option": item[TreeConst.Option_Name],
- "option_for_ocr": item[TreeConst.Option_ForOCR].split(';'),
- "option_move_key": item[TreeConst.Option_MoveKey],
- "option_enter_key": item[TreeConst.Option_EnterKey],
- "option_others": item[TreeConst.Option_Others]
- }
- option = parent
- found = True
- break
- # endif
- # endfor
- break
- # endif
- # endfor
- # endfor
- # 需要对path倒序使用;
- # dict_pp = OrderedDict()
- # # 逆序路径key;
- # revpp = reversed(pp)
- # for path in revpp:
- # dict_pp[path] = {"parent": pp[path]['parent'],"move_key": pp[path]['move_key'],"enter_key": pp[path]['enter_key'],"others":pp[path]['others'],"option": pp[path]['option'],"option_for_ocr": pp[path]['option_for_ocr']}
- # # 返回逆序后的结果;
- # return dict_pp
- return pp
- def checkOptionPath(self, optionName):
- optionPath = ""
- optionPathResult = "Fail"
- path_params = self.get_option_paths(optionName)
- # 如果传入的option不存在则直接返回
- if path_params.__len__() <= 0:
- optionPathResult = "NoExit"
- optionPath = u"表格中不存在到达Option: %s 的路径" % str(optionName)
- return optionPath, optionPathResult
- else:
- optionPath = str(path_params)
- # 逆序路径key;
- revpp = reversed(path_params)
- level_count = 0
- for level in revpp:
- if str(level) == str(g_level[level_count]):
- level_count = level_count + 1
- else:
- # 如果执行路径不是按照First、Second......执行则返回执行出错
- return optionPath, optionPathResult
- optionPathResult = "Pass"
- return optionPath, optionPathResult
- def checkRunOptionPath(self, path_params):
- optionPathResult = "Fail"
- # 如果传入的option不存在则直接返回
- if path_params.__len__() <= 0:
- optionPathResult = "NoExit"
- return optionPathResult
- else:
- optionPath = str(path_params)
- # 逆序路径key;
- revpp = reversed(path_params)
- level_count = 0
- for level in revpp:
- if str(level) == str(g_level[level_count]):
- level_count = level_count + 1
- else:
- # 如果执行路径不是按照First、Second......执行则返回执行出错
- return optionPathResult
- optionPathResult = "Pass"
- return optionPathResult
- if __name__ == "__main__":
- uiData = CTData()
- pathManage = UITPathManage(uiData)
- vp,pp = pathManage.get_menu_paths("hdmi1","hdmi1")
- vp,pp = pathManage.get_menu_paths("dynamic_contrast","on")
- print "vp:", vp
- print "pp:",pp
- chkPP=pathManage.checkRunOptionPath(pp)
- print "check pp:",chkPP
- pp = pathManage.get_option_paths("dynamic_contrast")
- print "pp:",pp
- chkPP = pathManage.checkRunOptionPath(pp)
- print "check pp:",chkPP
- optionPath, optionPathResult = pathManage.checkOptionPath("dynamic_contrast")
- print "optionPath:",optionPath
- print "optionPathResult:", optionPathResult
|