Put all the BlockItems in a single QGraphicsWebView.
Refactor MyBlock creation functions to MyBlock and remove _getFuncOpAddrs.
Move ownership of asmFormatter object to mainWin.
Remove SonareGraphScene.r2core attribute.
Separate creation of GraphBlocks from graphItem and layout.
Move assembly formatting to template with filter functions.
Move asmOps property to MyBlock.
Begin cleanup of layout code and removal of GraphBlock class.
Add _getBlockRect() method.
Create edges using shortest-paths algorithm. (but they still overlap)
Shortest-path algorithm (almost) without overlapping edges.
Check intersections between edge graph and block rects more efficiently.
Expand rects used for edge graph intersections to make room for edge arrows.

Also, separate rect outline spacing value from the expansion value above.
Sort endpoints by Y values before calculating shortest paths.
Code cleanup: Remove old edge layout code and GraphBlock class.
Make getBlockSize/Rect methods public.
Minor code cleanup (Bunch some related code together).
Move edge layout code into separate classes.
Use A* algorithm with custom cost to prefer straight edges.
Refactor _updateSceneRect method, and parent edgeItems directly to scene so they don't get clipped.