Kaynağa Gözat

wallet/pyapi: show property dependencies

darkfi 1 yıl önce
ebeveyn
işleme
58ad1fe237

+ 2 - 0
bin/darkwallet/gui/print_tree.py

@@ -79,6 +79,8 @@ def print_node_info(parent_path, depth, indent):
         prop_type = PropertyType.to_str(prop.type)
 
         print(f"{ws}{prop.name}: {prop_type}{prop_val}")
+        if prop.depends:
+            print(f"{ws}    depends: {prop.depends}")
 
     #for sig in api.get_signals(parent_id):
     #    print(f"{ws}~{sig}")

+ 10 - 2
bin/darkwallet/pydrk/api.py

@@ -14,7 +14,8 @@ Property = namedtuple("Property", [
     "array_len",
     "min_val",
     "max_val",
-    "enum_items"
+    "enum_items",
+    "depends"
 ])
 
 class Command:
@@ -375,6 +376,11 @@ class Api:
 
         enum_read_fn = lambda cur: serial.decode_arr(cur, serial.decode_str)
 
+        def depend_read_fn(cur):
+            i = serial.read_u32(cur)
+            local_name = serial.decode_str(cur)
+            return (i, local_name)
+
         for _ in range(props_len):
             prop_name = serial.decode_str(cur)
             # We need prop_type below
@@ -404,7 +410,9 @@ class Api:
                 # max_val 
                 serial.decode_opt(cur, prop_read_fn),
                 # enum_items 
-                serial.decode_opt(cur, enum_read_fn)
+                serial.decode_opt(cur, enum_read_fn),
+                # depends
+                serial.decode_arr(cur, depend_read_fn)
             )
             props.append(prop)
         return props

+ 3 - 0
bin/darkwallet/src/net.rs

@@ -195,6 +195,9 @@ impl ZeroMQAdapter {
                     prop.min_val.encode(&mut reply).unwrap();
                     prop.max_val.encode(&mut reply).unwrap();
                     prop.enum_items.encode(&mut reply).unwrap();
+
+                    let depends: Vec<_> = prop.get_depends().into_iter().map(|d| (d.i as u32, d.local_name)).collect();
+                    depends.encode(&mut reply).unwrap();
                 }
             }
             Command::GetPropertyValue => {