Add the Sikuli blocks language def xml
Support for an "any" socket type that will take any type of block as input (string, number, screenshot, etc.). Added a variable setter and getter that works on any type using this new socket. Hid the existing type-safe setters and getters (get screesnhot, get text, etc.). Those might come back later
Changed the variable labels on if, while, etc. blocks from test to the name of the block to better clarify what the block does
Add support for defining and calling functions. Also supports calling functions in other modules by adding imports.
Add custom python blocks for expressions and statements. Users can type raw python code into these blocks, and they will get compiled right alongside other types of blocks. They can also add placeholders (, , etc.) which creates arguments on the blocks that can be filled in with other blocks
Add a comment block that inserts a single line comment at any point in a program, and changed the print block to take any type as its parameter (not just a string).
First pass at integrating the blocks enviornment into the main IDE window. The basics work - opening and saving block files into tabs, adding screenshots and images, running block scripts, running unit tests, etc. Undo/Redo, Cut/Copy/Paste, Search, and others (including plenty of bugs) remain. Block scripts are now saved in a .sikuliblock bundle, along with the images it uses, just like Python scripts. Not ready for primetime, but a good progress checkpoint
Add updated openblocks framework, which fixes bugs relating to having mutliple workspaces open at the same time. This is needed in this branch since multiple workspaces can be loaded if different block files are loaded into different tabs. In particular, it lets us remove the bad hack of leaking objects when clearing a workspace to avoid clearing state in other unrelated workspaces. The changes in the framework nessesitated changing the API, so uses of the API were updated as well
Work in progress support for undo/redo. There are many bugs in the openblocks implementation that cause undo/redo to put the workspace into an inconsistant state easily
Added a "Convert to Python" menu item to turn Blocks code into Python code for editing
Change the layout of the main window to accomidate the fact that the blocks editor does not have use the command pane (i.e., the pane on the left side of a Python pane that lists commonly used Sikuli commands). Now, the tab and output panes stretch the full width of the window, and a new EditorPane is in the middle that contains everything a particular editor needs (Blocks or Python) to work. This also introduces a cleaner design with less casting and manually digging into the view hierarchy
Disable buttons and menu items that are not supported in Blocks/Python environments
Two commits grouped into one: Reimplement undo/redo using XML serialization and smart grouping, and add support for cut/copy/paste and other keyboard shortcuts
Pull in highlight ring fix from openblocks
Fix bugs relating to adding screenshot blocks: Make sure blocks are properly resized when a screenshot block is added as a child. Previously, they did not resize until the block was clicked, causing overlapping. Also, when a parent block with empty screenshot sockets is highlighted and "Take Screenshot" is pressed, add the screenshot in the first availiable socket on that block
Remove the need for a seperate Support directory alongside the binary. It previously contained the XML DTD, which was instead embedded in the XML (see comments at the top of lang_def.xml), and the placeholder screenshot icon, which is now added dynamically when blocks are dragged in
Fix regression where open tabs would not be properly restored on launch. Broke during refactoring when I integrated the blocks pane into the main window
Convert To Python command now correctly copies images and other resources to a new Python bundle so images show up and the bundle is self-contained
Remove some debug logging