From a39f53ed482a7e5d247b1c3287e3b407e92a572b Mon Sep 17 00:00:00 2001 From: Ali Kazemkhanloo Date: Fri, 12 Jun 2020 18:22:09 +0430 Subject: [PATCH] show dictionary preview instead of counting children --- Scripts/plistwindow.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Scripts/plistwindow.py b/Scripts/plistwindow.py index 9ca00e2c..cb45b7b5 100644 --- a/Scripts/plistwindow.py +++ b/Scripts/plistwindow.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -import sys, os, plistlib, base64, binascii, datetime, tempfile, shutil, re, itertools, math +import sys, os, plistlib, base64, binascii, datetime, tempfile, shutil, re, itertools, math, json from collections import OrderedDict try: # Python 2 @@ -26,6 +26,15 @@ unicode = str +# serializer: +from json import JSONEncoder +class MyEncoder(JSONEncoder): + def default(self, o): + if(isinstance(o,plistlib.Data)): + return o.data.encode('hex') + return self.default(o) + + class EntryPopup(tk.Entry): def __init__(self, parent, master, text, cell, column, **kw): tk.Entry.__init__(self, parent, **kw) @@ -1689,7 +1698,8 @@ def add_node(self, value, parentNode="", key=None): children = "1 child" if len(value) == 1 else "{} children".format(len(value)) values = (self.get_type(value),children,"" if parentNode == "" else self.drag_code) elif isinstance(value,dict): - children = "1 key/value pair" if len(value) == 1 else "{} key/value pairs".format(len(value)) + + children = json.dumps(value,cls=MyEncoder) values = (self.get_type(value),children,"" if parentNode == "" else self.drag_code) else: values = (self.get_type(value),value,"" if parentNode == "" else self.drag_code)