Jump to content

Open source cross-platform Plist file editor: PlistEDPlus


55 posts in this topic

Recommended Posts

https://github.com/ic005k/PlistEDPlus/releases

 

Features include but are not limited to:

* Lightweight and high performance

* Open source, cross-platform (currently supports win, mac, linux)

* Humanized search function (a. Keyboard initial character search for each column of key, data type, and value within the expanded node range; b. Search box global search, one-time display of search results)

* Fully comply with and conform to the technical specifications of plist files, data types are displayed exactly the same as plist text, without any escaping

* Multi-tab view or edit files

* Multi-language support (currently supports Chinese, Russian, English)

* Drag and drop files to the software interface to open files, double-click to open files, file open history display, automatically load the last opened file

* Add, remove, paste, cut, edit entries, etc., all included in Undo, Redo policy group, support undo and restore

* Expand and collapse entries right-click menu, in different columns, with different effects

* For values of data type, the hover window automatically displays the corresponding ASCII and Base64 values

* When changing the data type, the value is automatically converted with it

* Free to select the children under a node for A->Z sorting (currently no sorting of arrays)

* Drag and drop to adjust the order of sibling items, up or down button to adjust the order of sibling items

* Rich shortcut keys

* Built-in update checking

* If the currently opened file is modified by other programs, it automatically prompts whether to reload

* Software UI adapts to various resolutions, supports winpe, linux livecd, etc.

...
 

 

plist1.thumb.png.889c2ead85b7f9070c056766859550e9.png

 

plist2.thumb.png.9d66529f84a422f70bd16f9aed851a82.png

 

Edited by ic005k

V1.0.1
1. Incorporate paste and cut into the Undo and Redo strategy groups
2. New: Move item up and move item down
3. New: "Add item at the same level" and "Add sub item" (right-click menu)
4. New: the value of bool variable is set by check box, no longer manual input
5. Improvement: The pasted position is changed to the previous position of the current item
6. Improve the editing menu and shortcut keys
7. Other minor adjustments

  • Slice pinned this topic

V1.0.2

1. New: Double-click to open the file
2. New: save prompt when closing the program
3. New: when the software is started, the file when the program was closed last time is automatically opened
4. Change: Pasted entries are no longer time stamped, but are identified by "-numbers" in the project group with duplicate entries, reducing the frequency of keystrokes when users change their names
5. Improve the status bar display, add the number of display sub-items
6. Fix: When closing a non-focused tab, the current tab is actually closed
7. Fix: In Mac dark mode, there is a problem of text ghosting in the data type edit box
8. Fix: When moving items up and down, if no item is selected, the program crashes
9. Optimization: remove the text on the check box of the bool variable value, and it exists in the form of a check box alone

V1.0.3

1. New: Preferences, on-site restore and default node icons, the above two are optional, the settings will take effect after the program is restarted
2. Optimization: Paste of array objects
3.Fix: When opening the file, if the file already exists in the tab, focus on the file instead of reopening the file

On 10/28/2020 at 3:45 AM, ic005k said:


9. Optimization: remove the text on the check box of the bool variable value, and it exists in the form of a check box alone

I may also propose to remove text and keep checkbox only even if not selected.

A sample

post-112217-0-94739200-1398657505.png

 

Those PlistEditor was good but worked only before ElCapitan, not works in modern system.

On 10/31/2020 at 3:59 PM, Slice said:

I may also propose to remove text and keep checkbox only even if not selected.

A sample

post-112217-0-94739200-1398657505.png

 

Those PlistEditor was good but worked only before ElCapitan, not works in modern system.

You always have very good ideas, thanks. I chose a compromise solution, that is, when an item is selected, a check box appears immediately. I think the text cannot be removed because it is used when searching. For example: I want to search Clover or OpenCore config.plist to see which options are enabled. More suggestions are welcome, thank you.

9 hours ago, ic005k said:

You always have very good ideas, thanks. I chose a compromise solution, that is, when an item is selected, a check box appears immediately. I think the text cannot be removed because it is used when searching. For example: I want to search Clover or OpenCore config.plist to see which options are enabled. More suggestions are welcome, thank you.

But I think search the word "true" is ambiguos. Searching has only sense for key.

6 hours ago, Slice said:

But I think search the word "true" is ambiguos. Searching has only sense for key.

For a common user, many times we can't remember the name of the key, and you can find it by searching for its enabled status. In addition, batch checking of all enabled variables also needs to be realized by searching "true". However, there may be a better way, which I will consider later.

By the way, I wrote a SSDT&DSDT editor before. I wonder if you are interested?

true.thumb.png.bab452e7ce56606c506fd414c37eb762.png

 

12 minutes ago, Slice said:

When I switch <data> -> <string> the value will not changed.

Okay, I understand. Or I will embed an automatic translation function in the program for easy reading.
I don't think it is recommended to change the data type, because the data type in Clover or OpenCore is unchanged.

1 minute ago, ic005k said:

Okay, I understand. Or I will embed an automatic translation function in the program for easy reading.
I don't think it is recommended to change the data type, because the data type in Clover or OpenCore is unchanged.

DeviceTree in macOS has no data type. It has byte array and its length.

If all bytes are in ascii range and array[length] = '\0' then assumed it is ascii string.

On 11/23/2020 at 11:41 AM, ic005k said:

V1.0.11 has realized this feature, please download the latest release.

Thanks, I tested 1.0.12 and it looks very good.

I have two notes about russian translation.

1.

Instead of "находить" must be "найти". Translation for "find".

2.

On the screen we see two similar words

Снимок экрана 2020-11-24 132905.png

The word "Отменить" should be "Не сохранять".

Hello to your russian friend.

A crash while push button "Move up"

Process:               PlistEDPlus [665]
Path:                  /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/MacOS/PlistEDPlus
Identifier:            z.PlistEDPlus
Version:               0
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           PlistEDPlus [665]
User ID:               502

Date/Time:             2020-11-29 18:28:16.499 +0300
OS Version:            macOS 11.0.1 (20B5022a)
Report Version:        12
Anonymous UUID:        DA118CAD-6323-1324-0DEA-8A4464DD8D14


Time Awake Since Boot: 910 seconds

System Integrity Protection: disabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [665]

VM Regions Near 0:
--> 
    __TEXT                      10bd1d000-10bdb0000    [  588K] r-x/r-x SM=COW  /Volumes/*/PlistEDPlus.app/Contents/MacOS/PlistEDPlus

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   z.PlistEDPlus                 	0x000000010bd38cb4 DomItem::childCount() const + 4
1   z.PlistEDPlus                 	0x000000010bd30f3b MainWindow::showMsg() + 1451
2   z.PlistEDPlus                 	0x000000010bd2bc05 MainWindow::on_actionMoveUp() + 981
3   org.qt-project.QtCore         	0x000000010cbfd2e5 0x10c9d2000 + 2274021
4   org.qt-project.QtWidgets      	0x000000010bdd99b6 QAction::activate(QAction::ActionEvent) + 310
5   org.qt-project.QtWidgets      	0x000000010becc840 0x10bdd2000 + 1026112
6   org.qt-project.QtWidgets      	0x000000010becda4f QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 271
7   org.qt-project.QtWidgets      	0x000000010bfc815f QToolButton::mouseReleaseEvent(QMouseEvent*) + 15
8   org.qt-project.QtWidgets      	0x000000010be1d7bd QWidget::event(QEvent*) + 445
9   org.qt-project.QtWidgets      	0x000000010bfc86ef QToolButton::event(QEvent*) + 319
10  org.qt-project.QtWidgets      	0x000000010bde2fea QApplicationPrivate::notify_helper(QObject*, QEvent*) + 266
11  org.qt-project.QtWidgets      	0x000000010bde5ec2 QApplication::notify(QObject*, QEvent*) + 7330
12  org.qt-project.QtCore         	0x000000010cbc9d64 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 212
13  org.qt-project.QtWidgets      	0x000000010bde3910 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 896
14  org.qt-project.QtWidgets      	0x000000010be3c99f 0x10bdd2000 + 436639
15  org.qt-project.QtWidgets      	0x000000010be3b0a5 0x10bdd2000 + 430245
16  org.qt-project.QtWidgets      	0x000000010bde2fea QApplicationPrivate::notify_helper(QObject*, QEvent*) + 266
17  org.qt-project.QtWidgets      	0x000000010bde4476 QApplication::notify(QObject*, QEvent*) + 598
18  org.qt-project.QtCore         	0x000000010cbc9d64 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 212
19  org.qt-project.QtGui          	0x000000010c3bcca5 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 3397
20  org.qt-project.QtGui          	0x000000010c3a1e5b QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 219
21  libqcocoa.dylib               	0x000000010ed8ee00 0x10ed55000 + 237056
22  libqcocoa.dylib               	0x000000010ed8f568 0x10ed55000 + 238952
23  com.apple.CoreFoundation      	0x00007fff204399fc __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
24  com.apple.CoreFoundation      	0x00007fff20439964 __CFRunLoopDoSource0 + 180
25  com.apple.CoreFoundation      	0x00007fff204396df __CFRunLoopDoSources0 + 248
26  com.apple.CoreFoundation      	0x00007fff20438111 __CFRunLoopRun + 890
27  com.apple.CoreFoundation      	0x00007fff204376be CFRunLoopRunSpecific + 563
28  com.apple.HIToolbox           	0x00007fff2869bfd0 RunCurrentEventLoopInMode + 292
29  com.apple.HIToolbox           	0x00007fff2869bc22 ReceiveNextEventCommon + 283
30  com.apple.HIToolbox           	0x00007fff2869baef _BlockUntilNextEventMatchingListInModeWithFilter + 64
31  com.apple.AppKit              	0x00007fff22c4af85 _DPSNextEvent + 883
32  com.apple.AppKit              	0x00007fff22c4974b -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1366
33  com.apple.AppKit              	0x00007fff22c3bbda -[NSApplication run] + 586
34  libqcocoa.dylib               	0x000000010ed8e1cf 0x10ed55000 + 233935
35  org.qt-project.QtCore         	0x000000010cbc5e0f QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 431
36  org.qt-project.QtCore         	0x000000010cbca372 QCoreApplication::exec() + 130
37  z.PlistEDPlus                 	0x000000010bd2188f main + 703
38  libdyld.dylib                 	0x00007fff2035c631 start + 1

Thread 1:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	0x00007fff2030ce7e mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff2030d1f0 mach_msg + 60
2   com.apple.CoreFoundation      	0x00007fff20439be7 __CFRunLoopServiceMachPort + 316
3   com.apple.CoreFoundation      	0x00007fff204382ba __CFRunLoopRun + 1315
4   com.apple.CoreFoundation      	0x00007fff204376be CFRunLoopRunSpecific + 563
5   com.apple.AppKit              	0x00007fff22dd136d _NSEventThread + 124
6   libsystem_pthread.dylib       	0x00007fff20341950 _pthread_start + 224
7   libsystem_pthread.dylib       	0x00007fff2033d47b thread_start + 15

Thread 2:
0   libsystem_pthread.dylib       	0x00007fff2033d458 start_wqthread + 0

Thread 3:
0   libsystem_pthread.dylib       	0x00007fff2033d458 start_wqthread + 0

Thread 4:
0   libsystem_pthread.dylib       	0x00007fff2033d458 start_wqthread + 0

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x00007ffee3ee0708  rbx: 0x0000000000000000  rcx: 0x00006000001dea98  rdx: 0x000000000000000d
  rdi: 0x0000000000000000  rsi: 0x0000600001a51de8  rbp: 0x00007ffee3ee0690  rsp: 0x00007ffee3ee0690
   r8: 0x00200020003a0438   r9: 0x00000000000007fb  r10: 0x0000000000001c80  r11: 0xfffffffffe78ccbc
  r12: 0x0000000000000002  r13: 0x0000600001ab6bb0  r14: 0x00006000025d1fe0  r15: 0x0000600001488220
  rip: 0x000000010bd38cb4  rfl: 0x0000000000010202  cr2: 0x0000000000000000
  
Logical CPU:     0
Error Code:      0x00000004 (no mapping for user data read)
Trap Number:     14

Thread 0 instruction stream:
  8d 74 eb 10 e8 45 d4 00-00 4c 89 f8 8b 08 83 f9  .t...E...L......
  ff 74 11 85 c9 74 05 f0-ff 08 75 08 48 89 c7 e8  .t...t....u.H...
  30 d1 00 00 4c 89 f7 44-89 e6 48 83 c4 08 5b 41  0...L..D..H...[A
  5c 41 5d 41 5e 41 5f 5d-e9 11 d1 00 00 48 83 c4  \A]A^A_].....H..
  08 5b 41 5c 41 5d 41 5e-41 5f 5d c3 55 48 89 e5  .[A\A]A^A_].UH..
  48 8b 7f 20 5d e9 32 ff-ff ff 66 90 55 48 89 e5  H.. ].2...f.UH..
 [48]8b 0f 8b 41 0c 2b 41-08 5d c3 90 55 48 89 e5  H...A.+A.]..UH..	<==
  8b 47 28 5d c3 0f 1f 80-00 00 00 00 55 48 89 e5  .G(]........UH..
  48 89 f8 48 8b 4e 08 48-89 0f 8b 11 ff c2 83 fa  H..H.N.H........
  02 73 02 5d c3 f0 ff 01-5d c3 66 90 55 48 89 e5  .s.]....].f.UH..
  48 89 f8 48 8b 4e 18 48-89 0f 8b 11 ff c2 83 fa  H..H.N.H........
  02 73 02 5d c3 f0 ff 01-5d c3 66 90 55 48 89 e5  .s.]....].f.UH..
  
Thread 0 last branch register state not available.


Binary Images:
       0x10bd1d000 -        0x10bdaffff +z.PlistEDPlus (0) <1FAC271E-554B-3A6D-ADC4-DE1A860F7F5A> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/MacOS/PlistEDPlus
       0x10bdd2000 -        0x10c218fff +org.qt-project.QtWidgets (5.15 - 5.15.0) <337D3779-8507-33D3-B134-46BD148A7B3E> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets
       0x10c382000 -        0x10c869fff +org.qt-project.QtGui (5.15 - 5.15.0) <5989F332-2058-304F-91A0-C4835E2C2B3D> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/Frameworks/QtGui.framework/Versions/5/QtGui
       0x10c98a000 -        0x10c9befff +org.qt-project.QtXml (5.15 - 5.15.0) <66656A3D-5677-3597-BD2F-A18D53C75091> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/Frameworks/QtXml.framework/Versions/5/QtXml
       0x10c9d2000 -        0x10cf3efff +org.qt-project.QtCore (5.15 - 5.15.0) <AE40C3FB-88A8-3841-B641-37A1232C7609> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore
       0x10d020000 -        0x10d023fff  libCyrillicConverter.dylib (90) <F5F71D3B-3E4A-38DA-963A-89710EAED313> /System/Library/CoreServices/Encodings/libCyrillicConverter.dylib
       0x10ed55000 -        0x10eec2fff +libqcocoa.dylib (0) <84BF58A7-22B6-3C2E-8BC8-5EB6A39D55E0> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/platforms/libqcocoa.dylib
       0x10ef10000 -        0x10ef6ffff +org.qt-project.QtDBus (5.15 - 5.15.0) <EAEB681E-A8ED-3123-96C9-84639E4250B6> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/Frameworks/QtDBus.framework/Versions/5/QtDBus
       0x10ef88000 -        0x10efb3fff +org.qt-project.QtPrintSupport (5.15 - 5.15.0) <4E619C76-8916-379E-B7E2-2D8037EF4C6D> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport
       0x10fc6e000 -        0x10fc7dfff  libobjc-trampolines.dylib (818.2) <FA7B9F33-91F6-352A-81FB-1E483E28C659> /usr/lib/libobjc-trampolines.dylib
       0x110eb0000 -        0x110ed5fff +libqmacstyle.dylib (0) <91D61321-B22D-3AC1-AC5A-2BCD52EAF71E> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/styles/libqmacstyle.dylib
       0x110ee6000 -        0x110eedfff +libqgif.dylib (0) <64246145-3AD8-38F9-BD19-3036BFFE1FED> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqgif.dylib
       0x110ef1000 -        0x110ef8fff +libqicns.dylib (0) <0E8CFCD3-B41E-3B34-9FAD-C25DC786C149> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqicns.dylib
       0x110efd000 -        0x110f02fff +libqico.dylib (0) <38CC449F-F224-3A3D-B983-671213E6C3EB> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqico.dylib
       0x110f07000 -        0x110f6bfff +libqjpeg.dylib (0) <5AA6CAFF-FC5F-3D43-98ED-744C8CB046EA> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqjpeg.dylib
       0x110f71000 -        0x110f77fff +libqmacheif.dylib (0) <96217EE4-C7BE-362A-9737-99A516D2C3F2> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqmacheif.dylib
       0x110f7c000 -        0x110f81fff +libqmacjp2.dylib (0) <F908458F-85A0-3EF4-AD5A-1C60FFAEA223> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqmacjp2.dylib
       0x110f86000 -        0x110f8afff +libqtga.dylib (0) <6C70E75C-DFAB-3F68-B84B-91A6F180EE8C> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqtga.dylib
       0x110f8e000 -        0x110ff4fff +libqtiff.dylib (0) <BBA04024-55A5-39D7-BECC-411046E60831> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqtiff.dylib
       0x110ffc000 -        0x111000fff +libqwbmp.dylib (0) <D1878089-E990-394D-9B5C-AB10735EEF9A> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqwbmp.dylib
       0x111004000 -        0x11109afff +libqwebp.dylib (0) <D864CF5B-A4B4-394F-ACAF-6B59D7D777FB> /Volumes/VOLUME/Applications/0App/PlistEDPlus.app/Contents/PlugIns/imageformats/libqwebp.dylib
       0x1122b8000 -        0x112353fff  dyld (832.7.1) <A981F692-203E-3408-9F26-614E7F425B0E> /usr/lib/dyld
    0x7fff2007a000 -     0x7fff2007bfff  libsystem_blocks.dylib (78) <987B2E76-A0ED-35E2-8B8F-855407E7446C> /usr/lib/system/libsystem_blocks.dylib
    0x7fff2007c000 -     0x7fff200b1fff  libxpc.dylib (2038.40.38) <9CED6D55-30C4-38A8-A468-FAAC42BD1819> /usr/lib/system/libxpc.dylib
    0x7fff200b2000 -     0x7fff200c9fff  libsystem_trace.dylib (1277.50.1) <6BBD97A2-ACAB-3390-8AF0-EA88D58EF778> /usr/lib/system/libsystem_trace.dylib
    0x7fff200ca000 -     0x7fff20165fff  libcorecrypto.dylib (1000.40.21) <7A030E95-7A7E-36C7-B065-8A8B91D7187D> /usr/lib/system/libcorecrypto.dylib
    0x7fff20166000 -     0x7fff20192fff  libsystem_malloc.dylib (317.40.8) <E4578227-1486-3D45-A12A-06E351EB472B> /usr/lib/system/libsystem_malloc.dylib
    0x7fff20193000 -     0x7fff201d7fff  libdispatch.dylib (1271.40.12) <B671A666-DB31-335F-923F-AC88CC5E1C30> /usr/lib/system/libdispatch.dylib
    0x7fff201d8000 -     0x7fff20210fff  libobjc.A.dylib (818.2) <497FD4E5-3B8B-3CEC-9CBE-38B7D5DCE5C8> /usr/lib/libobjc.A.dylib
    0x7fff20211000 -     0x7fff20213fff  libsystem_featureflags.dylib (28.40.2) <67BBF8CB-4378-3378-8582-81F584D77851> /usr/lib/system/libsystem_featureflags.dylib
    0x7fff20214000 -     0x7fff2029cfff  libsystem_c.dylib (1439.40.11) <E1A06160-E72A-3C04-917B-ABE4D50904DD> /usr/lib/system/libsystem_c.dylib
    0x7fff2029d000 -     0x7fff202f2fff  libc++.1.dylib (904.4) <371E3AE3-4AE6-3D12-BAB7-ECF9CB9FE534> /usr/lib/libc++.1.dylib
    0x7fff202f3000 -     0x7fff2030bfff  libc++abi.dylib (904.4) <5E25A363-5604-3984

 

×
×
  • Create New...