{"text_format":"2","workbook":"xlsx","n_sheets":1,"sheets":["TMenu"],"not_rendered":{"charts":0,"images":0,"macros":0,"external_links":0,"defined_names":0,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"run_cost":"one","rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"TMenu","index":0,"n_rows":40,"n_cols":6,"rows_kept":40,"cut":false,"hidden":false,"merged":[[29,0,35,0],[25,5,25,8],[26,5,26,8],[36,0,44,0],[0,0,2,1],[3,0,11,0],[17,0,26,0],[8,5,8,8],[17,5,17,8],[21,5,21,8],[22,5,22,8],[23,5,23,8],[5,5,5,8],[6,5,6,8],[7,5,7,8],[0,2,1,8],[2,5,2,8],[3,5,3,8],[4,5,4,8],[24,5,24,8]]}
["                     CTMenu \n函数接口",null,"对外接口的对象。脚本调用时统一使用CTMenu的外部接口。"]
[]
[null,null,"参数","描述","示例","局限性"]
["对外接口","setOptionValue","optionName      要设置的option；\noptionValue     option要设置的值；\n\n返回：Boolean","设置指定的option的值为optionValue"]
[null,"checkOptionValue","optionParent：无意义参数('source')，仅做为兼容旧脚本而保留的参数；\noptionName      目标信源;\n\n返回：Boolean","设置信源optionName。"]
[null,"setSourceValue","option：value表中的value name字段；\nvalue：value表中的value字段；\nsourceWaitTime：切换到某个信源时等待的时间，默认=1.0秒, \nMax_Try：默认=10；单方向遍历次数\n\n返回：Boolean","根据value表value name字段对应路径表中的option字段逆向查找出一条菜单路径，根据这条路径从头逐层菜单焦点定位到尾，最后在value name层级设置value值；"]
[null,"openOption","option：路径表中的option字段；\n\n返回：Boolean","打开路径表中指定的option层级菜单；"]
[null,"checkChannelList","channelList：目标频道列表；\nMax_Try：默认值=15；单方向遍历次数\n\n返回：Boolean,[]\n如果有频道没找到，返回False，并返回没找到的频道列表。如果全部找到返回True。","检测频道列表是否与目标频道列表一致；"]
[null,"inputUnlock","std_str：判断的标准文字\npassword：要输入的密码，默认=''，表示使用配置文件中的super；","在某加锁频道中，按OK弹出密码框，输入密码解锁"]
[null,"focusOptionValue","optionName      要设置的option；\noptionValue     option要设置的值；\n\n返回：Boolean","聚焦到指定option的value上，不设置不打开不返回。\n 注意：如果optionValue是数值类型，将不会变更值。"]
[null,"getOptionValue","optionName      要获取值的option;\n\n返回：Boolean, str/int/float","获取当前option节点的value值。"]
[null,"focusOption","option：路径表中的option字段；\nMax_Try：默认值=15；单方向遍历次数\n\n返回值：True 成功，False失败","根据各级菜单表的option字段，逆向查找出一条菜单路径，根据这条路径从头逐层菜单焦点定位到尾，聚焦到option"]
[null,"moveToOption","参数：optionName      目标option.\n\n返回：Boolean","当焦点已经在option层级上时，移动到指定的option上。\n\n\n注意：该函数不是从根节点开始移动到目标节点，而是假定焦点已经在目标节点层级菜单上。"]
[null,"takePicture","返回：截图路径","脚本的tmp路径下截一张图"]
[null,"back2Home","返回：Boolean","将当前opa所在层级按照toparent_key的配置逐步退出所有菜单"]
[null,"setOpa","参数：opa    以COptionAction类声明的对象","将Tmenu中的self.__opa替换为传入的opa。非特殊情况下，不建议使用。\n\nopa是基于COptionAction类声明的对象，通过opa对象来实现寻径、执行路径等操作。"]
[null,"setCurPos","参数   pos     当前所处的层级（position）","将Tmenu中的self.__pos替换为传入的pos。非特殊情况下，不建议使用。\n\n由于有部分情况下，pos变化跟不上使用需求，需要手动将指定层级参数set进去。"]
["内部函数（外部不可调用）","__isValueEqual","参数：\nsrcValue：源值，excel表格中读取的value值。\ntagValue：目标值，ocr识别的结果值。\n\n返回：Boolean","判断两值(for_ocr与ocr识别结果)是否相等;"]
[null,"__move2TargetNode","参数：\nopa：COptionAction对象;\nmoveDirection：移动方向，True表示调用move_key[1](向下或向右), False表示调用move_key[0]；\nmaxTry：最大移动次数，防止死循环。\n\n返回：Boolean","顺着某一方向移动到目标节点上（目标节点可以是optionValue，所以同时也存在选择型value设值的功能）"]
[null,"__exitUsbSource","opa：COptionAction对象；\n\n返回：Boolean","退出 usb 信源界面;"]
[null,"__move2SourceNode","opa：COptionAction对象;\nmoveDirection：移动方向，True表示调用move_key[1](向下或向右), False表示调用move_key[0]；\nmaxTry：最大移动次数，防止死循环。\n\n返回：Boolean","移动到目标信源节点上。"]
[null,"__focusOption","opa：COptionAction对象；\n\n返回：Boolean","聚焦到指定option中。"]
[null,"__openOption","opa：COptionAction对象；\n\n返回：Boolean","进入到指定的option中。"]
[]
[]
[]
[]
[]
[]
["属性（外部可调用）","exData","CExtraData 对象，用于控制文件的加载，一般不需要使用"]
[null,"optionExcel","COptionExcel 对象，用于读取excel文件"]
[null,"optionConfig","COptionConfig 对象，用于读取config参数"]
[null,"opa","当前的 COptionAction 对象，通过传入的option和optionValue创建"]
[null,"pos","当前pos层级"]
[]
[]
["内部参数（外部不可调用）","__lastOpa","上一个opa对象"]
[null,"__curOpa","当前的opa对象，可以用属性和setOpa进行读取和更改"]
[null,"__optionConfig","COptionConfig 对象，可以通过属性调用，不可更改"]
[null,"__optionExcel","COptionExcel 对象，可以通过属性调用，不可更改"]