Proto commits in robertknight/Qt-Inspector

These 8 commits are when the Protocol Buffers files have changed:

Commit:10827a6
Author:Robert Knight
Committer:Robert Knight

Restructure source tree and tidy up CMakeLists.txt * Move code for injected library into lib/ subdir * Use CMAKE_AUTOMOC * Adapt the library name depending on the platform The inspector does not currently work on current Mac systems because gdb is no longer available

The documentation is generated from this commit.

Commit:2bc10ef
Author:Robert Knight

Speed up inspector startup. * Fetch the 'skeleton' of the whole object tree in a single request on startup. The skeleton consits of the basic object properties and child IDs of each object. * Fetch the type-specific properties of each object only when an object is selected. * Separate out on-demand loading of basic object attributes in ExternalObjectProxy and on-demand loading of object properties. Serialization of certain types of property value was the expensive operation previously. That is now done only when necessary for the selected object.

Commit:8a78497
Author:Robert Knight

Preserve QVariant types and contents better when transporting them back and forth from the inspector process to the target process. Use QDataStream + QBuffer to serialize/de-serialize QVariant property values to/from byte streams.

Commit:3be362f
Author:Robert Knight

Pass the native address from the target process to the inspector for display. This means that the object pointers shown in the inspector are now correct for the QObject* in the target process, instead of being the address of the object's proxy in the inspector process.

Commit:7289838
Author:Robert Knight
Committer:Robert Knight

Implement widget picking in the target process. * Add a new request type indicating that the target process should start a widget picking process. * Turn WidgetPicker into an abstract base class and move the existing code to a DirectWidgetPicker implementation. * Add ExternalWidgetPicker class which implements out-of-process widget picking using TargetApplicationProxy to submit a pick request to the target process. Widget picking is currently synchronous on the inspector process side. In other words, the inspector cannot be used again until the user picks a widget in the target process.

Commit:e7fdfa0
Author:Robert Knight

Support writing property updates back to the target process. * Add a new WritePropertyRequest request type to the inspector protocol and implement support for it in the inspector server. * When the user changes a property, issue a WritePropertyRequest to the target application.

Commit:b900cec
Author:Robert Knight
Committer:Robert Knight

Make properties in the inspector writable or read-only using property metadata supplied by the injected helper library. * Replace QString -> QVariant property map in ObjectProxy with a Property struct which can support additional metadata. * Add isWritable property to QtObject_Property protobuf message, fill it in on the target process side and write it to the proxy on the inspector side.

Commit:f1d93fe
Author:Robert Knight

Add Protocol buffers IDL file for request/response messages between the inspector and the target application.