@@ -36,9 +36,9 @@ def parse_args(args: list[str]) -> argparse.Namespace:
36
36
tree_command .add_argument ("--with-address" , action = "store_true" , help = "Print address of ui" )
37
37
38
38
tree_command .add_argument ("--window" , type = str , help = "Specify the target window" )
39
- tree_command .add_argument ("--view" , type = str , help = "Specify the target view" )
40
- tree_command .add_argument ("--vc" , type = str , help = "Specify the target viewController" )
41
- tree_command .add_argument ("--layer" , type = str , help = "Specify the target CALayer" )
39
+ tree_command .add_argument ("--view" , type = str , help = "Specify the target view (property or address) " )
40
+ tree_command .add_argument ("--vc" , type = str , help = "Specify the target viewController (property or address) " )
41
+ tree_command .add_argument ("--layer" , type = str , help = "Specify the target CALayer (property or address) " )
42
42
43
43
return parser .parse_args (args )
44
44
@@ -78,14 +78,16 @@ def tree(args: argparse.Namespace, debugger: lldb.SBDebugger, result: lldb.SBCom
78
78
typealias NSUIApplication = NSApplication
79
79
"""
80
80
81
+ resolve_adress (args )
82
+
81
83
script += util .read_script_file ('swift/tree.swift' )
82
- if args .window :
84
+ if args .window is not None :
83
85
script += f"\n windowHierarchy({ args .window } , mode: \" { mode } \" , depth: { depth } , address: { with_address } )"
84
- elif args .view :
86
+ elif args .view is not None :
85
87
script += f"\n viewHierarchy({ args .view } , mode: \" { mode } \" , depth: { depth } , address: { with_address } )"
86
- elif args .vc :
88
+ elif args .vc is not None :
87
89
script += f"\n viewControllerHierarchy({ args .vc } , mode: \" { mode } \" , depth: { depth } , address: { with_address } )"
88
- elif args .layer :
90
+ elif args .layer is not None :
89
91
script += f"\n layerHierarchy({ args .layer } , mode: \" { mode } \" , depth: { depth } , address: { with_address } )"
90
92
else :
91
93
script += f"\n windowHierarchy(NSUIApplication.shared.keyWindow, mode: \" { mode } \" , depth: { depth } , address: { with_address } )"
@@ -94,3 +96,17 @@ def tree(args: argparse.Namespace, debugger: lldb.SBDebugger, result: lldb.SBCom
94
96
debugger ,
95
97
script
96
98
)
99
+
100
+
101
+ def resolve_adress (args : argparse .Namespace ):
102
+ try :
103
+ if args .window is not None :
104
+ args .window = f"Unmanaged<NSUIWindow>.fromOpaque(.init(bitPattern: { args .window } )!).takeUnretainedValue()"
105
+ elif args .view is not None :
106
+ args .view = f"Unmanaged<NSUIView>.fromOpaque(.init(bitPattern: { args .view } )!).takeUnretainedValue()"
107
+ elif args .vc is not None :
108
+ args .vc = f"Unmanaged<NSUIViewController>.fromOpaque(.init(bitPattern: { args .vc } )!).takeUnretainedValue()"
109
+ elif args .layer is not None :
110
+ args .layer = f"Unmanaged<CALayer>.fromOpaque(.init(bitPattern: { args .layer } )!).takeUnretainedValue()"
111
+ except ValueError :
112
+ pass
0 commit comments