Browse Source

完成对UIT_PathManage的转换及优化处理。

scbc.sat2 5 năm trước cách đây
mục cha
commit
318132d149
1 tập tin đã thay đổi với 119 bổ sung8 xóa
  1. 119 8
      ssat_sdk/MenuTree3/OptionExcel.py

+ 119 - 8
ssat_sdk/MenuTree3/OptionExcel.py

@@ -464,27 +464,31 @@ class COptionExcel(CBaseLog):
     def getOptionValueInfo(self, optionName, value=""):
         # 编码转换;
         if type(optionName) == str:
-            option = unicode(optionName)
+            optionName = unicode(optionName)
 
         # option/value name是否在value表中的;
         if optionName not in self.__valueParams.values:
             return []
 
-        optValues = self.__valueParams.values[option]["value"]
+        optValues = self.__valueParams.values[optionName]["value"]
         valueList = []
         valueOcrList = []
         for item in optValues:
             valueList.append(item["value"])
             valueOcrList.append(item["value_for_ocr"])
 
-        vp = {"option": option, "value": valueList, "value_for_ocr": valueOcrList,
-              "enter_key": self.valueParams.values[option]["enter_key"],
-              "move_key": self.valueParams.values[option]["move_key"],
-              "others": self.valueParams.values[option]['others']}
+        vp = {
+            "option": optionName,
+            "value": valueList,
+            "value_for_ocr": valueOcrList,
+            "enter_key": self.__valueParams.values[optionName]["enter_key"],
+            "move_key": self.__valueParams.values[optionName]["move_key"],
+            "others": self.__valueParams.values[optionName]['others']
+        }
         # 找到value对应的ocr;
         if value != "":
             vp["value"] = value
-            for item in self.valueParams.values[option]["value"]:
+            for item in self.__valueParams.values[optionName]["value"]:
                 if "range(" in item["value"]:
                     vp["value_for_ocr"] = item["value_for_ocr"].split(';')
                     break
@@ -604,6 +608,110 @@ class COptionExcel(CBaseLog):
 
         return valueList
 
+    '''
+    函数:获取指定option的路径。
+    参数:
+    返回:
+    示例:
+    
+    测试:。
+    '''
+    def getOptionPaths(self, optionName):
+        # 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() == optionName.lower():
+                        pp[level] = {
+                            "parent": parent,
+                            "move_key": self.__pathParams.paths[level][parent][xlsc.move_key],
+                            "enter_key": self.__pathParams.paths[level][parent][xlsc.enter_key],
+                            "others": self.__pathParams.paths[level][parent][xlsc.others],
+                            "option": item[xlsc.option],
+                            "option_for_ocr": item[xlsc.option_for_ocr].split(';'),
+                            "option_move_key": item[xlsc.move_key],
+                            "option_enter_key": item[xlsc.enter_key],
+                            "option_others": item[xlsc.others]
+                        }
+                        optionName = parent
+                        found = True
+                        break
+                if found:
+                    break
+                else:
+                    if parent == optionName:
+                        for item in self.__pathParams.paths[level][parent]["value"]:
+                            # print item
+                            if item["option"].lower() == optionName.lower():
+                                pp[level] = {
+                                    "parent": parent,
+                                    "move_key": self.__pathParams.paths[level][parent][xlsc.move_key],
+                                    "enter_key": self.__pathParams.paths[level][parent][xlsc.enter_key],
+                                    "others": self.__pathParams.paths[level][parent][xlsc.others],
+                                    "option": item[xlsc.option],
+                                    "option_for_ocr": item[xlsc.option_for_ocr].split(';'),
+                                    "option_move_key": item[xlsc.move_key],
+                                    "option_enter_key": item[xlsc.enter_key],
+                                    "option_others": item[xlsc.others]
+                                }
+                                optionName = 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 getOptionPathsAndValue(self, optionName, value):
+        if value.__len__() == 0:
+            self.error('value空,执行退出')
+            return {}, OrderedDict()
+
+        vp = self.getOptionValueInfo(optionName, value)
+        pp = self.getOptionPaths(optionName)
+
+        return  vp, pp
+
+    def checkOptionPaths(self, optionNameOrPaths):
+        optionPathResult = "Fail"
+        path_params = optionNameOrPaths
+        if type(optionNameOrPaths) == str:
+            path_params = self.getOptionPaths(optionNameOrPaths)
+        # 如果传入的option不存在则直接返回
+        if path_params.__len__() <= 0:
+            optionPathResult = "NoExit"
+            optionPath = u"表格中不存在到达Option:   %s   的路径" % str(optionNameOrPaths)
+            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
 
 if __name__ == "__main__":
     exData = CExtraData()
@@ -620,4 +728,7 @@ if __name__ == "__main__":
     # print "getOptionValueInfo", opxls.getOptionValueInfo('picture')
     # print "getOptionValueText", opxls.getOptionValueText('picture', 'sharpness')
     # print "getOptionInfo", opxls.getOptionInfo('picture_reset')
-    print "getOptionAllValueName", opxls.getOptionAllValueName('r_gain')
+    # print "getOptionAllValueName", opxls.getOptionAllValueName('r_gain')
+    ##########################################
+    # print "getOptionPaths", opxls.getOptionPaths('sharpness')
+    print "checkOptionPaths", opxls.checkOptionPaths('sharpness')