A a base for a Clutter authoring environment.
ClutterSmith is highly experimental no stability or future backwards compatibility for the project files is guaranteed. It can currently be used to create json files for use with any Clutter supported language binding. The javascript integration with gjs goes beyond what can be statically decalred in a .json file. It should be possible to also use some javascript driven features also from other languages.
Compile and install as normal, the following dependencies are needed:
gobject-introspection gir-repository clutter nbtk (the mx branch) clutter-gst gjs
GObject introspection files are expected to have been generated and installed for mx and clutter. A good way to download the sources needed is to run the jhbuild bootstrap of gnome-shell (see http://live.gnome.org/GnomeShell).
ClutterSmith needs to be installed before it works, it currently launches in browse mode on a tutorial. Note that the default project is read only since it is installed in a system location. To edit a project launch cluttersmith with a working directory or an existing json file as the argument.
This outline is a summary of interactions in cluttersmith, some prefixed with a - are not implemented yet. This is development planning sheet and not a user guide, many of the things listed here will probably change. The actions are organized based on the context where it is possible to perform these actions.
actions regardsless of selection status -undo -redo
select all
if content in paste buffer paste ^V
add template click in template panel (should be drag and drop) goto scene click scene in scene list (or edit scene title) add scene edit title entry in toolbar change directory edit working dir entry in toolbar enter container double click selected item which is a container edit item double click item (like text)
when have none select one click at an the item select many lasso select, starting outside any item
when have any add one to selection shift+click at an item toggle selection status ctrl+click at an item add many shift+lasso select as in none toggle many ctrl+lasso select as in none select none
raise pgup lower pgdn home send to front end send to back
selection keynav cursor keys (shift to extend, ctrl to slide|move?) ctrl+shift to align (using cursor dir to determine side to be aligned?)
cut ^X copy ^C delete delete -create template should take the paste buffer and add a new template
move individual item drag, starting in item with snapping multiple items drag starting in one item -with snapping resize individual item drag resize handle in lower right of item with swapping -multiple items drag resize handle on lower right of items -with swapping
select none group ungroup
when have one duplicate ^D if container make group ^G ungroup shift^G if link change destination
when have many group make box creates a box container -align -distribute
Visualisations for selected actor properties child properties -layout properties callbacks javascript code not fully functional -visual coding snippets/blocks,with ui elements as js placeholders -go to scene -load scene modally -animation triggering the animations of a scene should be named.. (perhaps using named transitions would be good?)
It should be possible to program using visual blocks representing blocks of javascript code.
change_scene (gui_string_scene_name); set_size (gui_string_actor_id, gui_int_width, gui_int_height); set_position (gui_string_actor_id, gui_int_x, gui_int_y); set_sub_scene (gui_string_actor_id, gui_string_scene_name);