UIT_PathManage.py 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. # -*- coding:utf-8 -*-
  2. from TData import CTData
  3. from UIT_tree import UITTree
  4. from UIT_treeConstant import TreeConst
  5. from ssat_sdk.utils.string_util import strcmp
  6. from UIT_log import error,info,debug
  7. import os, sys, time
  8. from collections import OrderedDict
  9. DEBUG = True
  10. INFO = True
  11. ERROR = True
  12. g_level = TreeConst.G_LEVEL
  13. class UITPathManage():
  14. def __init__(self, uitData):
  15. self.uitData = uitData
  16. self.valueParams = self.uitData.UITree.valueParams
  17. self.pathParams = self.uitData.UITree.pathParams
  18. def get_menu_paths(self, option, value):
  19. if type(option) == str:
  20. option = unicode(option)
  21. if type(value) == str:
  22. value = unicode(value)
  23. # pp必须不排序;
  24. vp, pp = {}, OrderedDict()
  25. if option in self.valueParams.values:
  26. vp = {"option": option, "value": value, "enter_key": self.valueParams.values[option]["enter_key"],
  27. "move_key": self.valueParams.values[option]["move_key"]}
  28. # 找到value对应的ocr;
  29. for item in self.valueParams.values[option]["value"]:
  30. if "range(" in item["value"]:
  31. vp["value_for_ocr"] = item["value_for_ocr"].split(';')
  32. break
  33. elif item["value"].lower() == value.lower():
  34. vp["value_for_ocr"] = item["value_for_ocr"].split(';')
  35. break
  36. # 首先,字典不排序,需要倒序;
  37. paths = reversed(self.pathParams.paths)
  38. for level in paths:
  39. found = False
  40. for parent in self.pathParams.paths[level]:
  41. # print parent,self.pathParams.paths[level][parent],'\r\n'
  42. for item in self.pathParams.paths[level][parent]["value"]:
  43. # print item
  44. if item["option"].lower() == option.lower():
  45. pp[level] = {
  46. "parent": parent,
  47. "move_key": self.pathParams.paths[level][parent][TreeConst.Option_MoveKey],
  48. "enter_key": self.pathParams.paths[level][parent][TreeConst.Option_EnterKey],
  49. "others": self.pathParams.paths[level][parent][TreeConst.Option_Others],
  50. "option": item[TreeConst.Option_Name],
  51. "option_for_ocr": item[TreeConst.Option_ForOCR].split(';'),
  52. "option_move_key": item[TreeConst.Option_MoveKey],
  53. "option_enter_key": item[TreeConst.Option_EnterKey],
  54. "option_others": item[TreeConst.Option_Others]
  55. }
  56. option = parent
  57. found = True
  58. break
  59. if found:
  60. break
  61. else:
  62. if parent == option:
  63. for item in self.pathParams.paths[level][parent]["value"]:
  64. # print item
  65. if item["option"].lower() == value.lower():
  66. pp[level] = {
  67. "parent": parent,
  68. "move_key": self.pathParams.paths[level][parent][TreeConst.Option_MoveKey],
  69. "enter_key": self.pathParams.paths[level][parent][TreeConst.Option_EnterKey],
  70. "others": self.pathParams.paths[level][parent][TreeConst.Option_Others],
  71. "option": item["option"],
  72. "option_for_ocr": item["option_for_ocr"].split(';'),
  73. "option_move_key": item[TreeConst.Option_MoveKey],
  74. "option_enter_key": item[TreeConst.Option_EnterKey],
  75. "option_others": item[TreeConst.Option_Others]
  76. }
  77. option = parent
  78. found = True
  79. break
  80. # endif
  81. # endfor
  82. break
  83. # endif
  84. # 需要对path倒序使用;
  85. return vp, pp
  86. def get_option_paths(self, option):
  87. # pp必须不排序;
  88. pp = OrderedDict()
  89. # 首先,字典不排序,需要倒序;
  90. paths = reversed(self.pathParams.paths)
  91. for level in paths:
  92. found = False
  93. for parent in self.pathParams.paths[level]:
  94. # print parent,self.pathParams.paths[level][parent],'\r\n'
  95. for item in self.pathParams.paths[level][parent]["value"]:
  96. # print item
  97. if item["option"].lower() == option.lower():
  98. pp[level] = {
  99. "parent": parent,
  100. "move_key": self.pathParams.paths[level][parent][TreeConst.Option_MoveKey],
  101. "enter_key": self.pathParams.paths[level][parent][TreeConst.Option_EnterKey],
  102. "others": self.pathParams.paths[level][parent][TreeConst.Option_Others],
  103. "option": item[TreeConst.Option_Name],
  104. "option_for_ocr": item[TreeConst.Option_ForOCR].split(';'),
  105. "option_move_key": item[TreeConst.Option_MoveKey],
  106. "option_enter_key": item[TreeConst.Option_EnterKey],
  107. "option_others": item[TreeConst.Option_Others]
  108. }
  109. option = parent
  110. found = True
  111. break
  112. if found:
  113. break
  114. else:
  115. if parent == option:
  116. for item in self.pathParams.paths[level][parent]["value"]:
  117. # print item
  118. if item["option"].lower() == option.lower():
  119. pp[level] = {
  120. "parent": parent,
  121. "move_key": self.pathParams.paths[level][parent][TreeConst.Option_MoveKey],
  122. "enter_key": self.pathParams.paths[level][parent][TreeConst.Option_EnterKey],
  123. "others": self.pathParams.paths[level][parent][TreeConst.Option_Others],
  124. "option": item[TreeConst.Option_Name],
  125. "option_for_ocr": item[TreeConst.Option_ForOCR].split(';'),
  126. "option_move_key": item[TreeConst.Option_MoveKey],
  127. "option_enter_key": item[TreeConst.Option_EnterKey],
  128. "option_others": item[TreeConst.Option_Others]
  129. }
  130. option = parent
  131. found = True
  132. break
  133. # endif
  134. # endfor
  135. break
  136. # endif
  137. # endfor
  138. # endfor
  139. # 需要对path倒序使用;
  140. # dict_pp = OrderedDict()
  141. # # 逆序路径key;
  142. # revpp = reversed(pp)
  143. # for path in revpp:
  144. # 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']}
  145. # # 返回逆序后的结果;
  146. # return dict_pp
  147. return pp
  148. def checkOptionPath(self, optionName):
  149. optionPath = ""
  150. optionPathResult = "Fail"
  151. path_params = self.get_option_paths(optionName)
  152. # 如果传入的option不存在则直接返回
  153. if path_params.__len__() <= 0:
  154. optionPathResult = "NoExit"
  155. optionPath = u"表格中不存在到达Option: %s 的路径" % str(optionName)
  156. return optionPath, optionPathResult
  157. else:
  158. optionPath = str(path_params)
  159. # 逆序路径key;
  160. revpp = reversed(path_params)
  161. level_count = 0
  162. for level in revpp:
  163. if str(level) == str(g_level[level_count]):
  164. level_count = level_count + 1
  165. else:
  166. # 如果执行路径不是按照First、Second......执行则返回执行出错
  167. return optionPath, optionPathResult
  168. optionPathResult = "Pass"
  169. return optionPath, optionPathResult
  170. def checkRunOptionPath(self, path_params):
  171. optionPathResult = "Fail"
  172. # 如果传入的option不存在则直接返回
  173. if path_params.__len__() <= 0:
  174. optionPathResult = "NoExit"
  175. return optionPathResult
  176. else:
  177. optionPath = str(path_params)
  178. # 逆序路径key;
  179. revpp = reversed(path_params)
  180. level_count = 0
  181. for level in revpp:
  182. if str(level) == str(g_level[level_count]):
  183. level_count = level_count + 1
  184. else:
  185. # 如果执行路径不是按照First、Second......执行则返回执行出错
  186. return optionPathResult
  187. optionPathResult = "Pass"
  188. return optionPathResult
  189. if __name__ == "__main__":
  190. uiData = CTData()
  191. pathManage = UITPathManage(uiData)
  192. vp,pp = pathManage.get_menu_paths("hdmi1","hdmi1")
  193. vp,pp = pathManage.get_menu_paths("dynamic_contrast","on")
  194. print "vp:", vp
  195. print "pp:",pp
  196. chkPP=pathManage.checkRunOptionPath(pp)
  197. print "check pp:",chkPP
  198. pp = pathManage.get_option_paths("dynamic_contrast")
  199. print "pp:",pp
  200. chkPP = pathManage.checkRunOptionPath(pp)
  201. print "check pp:",chkPP
  202. optionPath, optionPathResult = pathManage.checkOptionPath("dynamic_contrast")
  203. print "optionPath:",optionPath
  204. print "optionPathResult:", optionPathResult