Ok folks, the moment you have all been waiting for is here. Ok, the moment some of you have been waiting for. UrShapes is now in cvs at cvs.con-struct.sourceforge.net/con-struct in module dia-0.88.1_urshape_fork. I tried to create a patch and for some reason the resulting patch wouldn't patch correctly. Would someone be wiling to write up a step by step (from creating the patch to applying it) or at least point me to the docs? To compile: ./configure --with-urshapes make make install (it needs to be installed to find the libs) Attached is a dia diagram giving a basic layout of the objects. What can UrShapes do right now? Parse a .urshape file and somewhat draw on screen. All the basic plumbing is there now we need to expand. TODO: * Resize infrastructure is there but it needs to be implemented * SVG right now is flat (no children). I am toying with the idea of writting a backend for librsvg to support the UrShapes rendering structure. If that is not a posibilty all the SVG shapes need to be parsed as children of the SVG tag. Right now the SVG tag is ignored and the shapes are just placed as children of the current container. * the SAX based state machine needs to be cleaned up (actualy there realy no states right now) Things like aquiring CDATA from between start and end tags need to be rethought. Right now the character data is accumulated in a buffer and then used and destroyed at the end tag. Problem is this only works if there is no other tags inbetween the start and end tag. For example: <tag> -> init buffer #cdata -> place in buffer </tag> ->use buffer and destroy <tag> ->init buffer #cdata -> place in buffer <new tag> -> init buffer; creates a dangling pointer #cdata -> place in buffer </new tag>->use buffer and destroy </tag> -> trying to destroy an already destroyed buffer * Figure out how to display GtkWidgets on the dia canvas * Load and Save need to be further implemented - perhaps StdProps code can be used here but I want to also create a new way for getting properties that allows for multilevel properties (i.e. textbox.text) but that is the future. Phase 1 goals: * To get UrShapes to be able to nicely draw rectangles, lines, gtktextbox's and the single container while allowing it to be properly resized and moved around. * To facilitate saving and loading of UrShapes in .dia documents Rules for coding: * interaction between UrShapes and Dia happens only in the urshape.c file. * none of Dia's .h files should be found in any of UrShapes .h files except for urshape.h (with the exception of geometry.h) * When adding a .c file make sure to add it to the Makefile.am in the dia/objects/urshapes directory and run automake and ./configure --with-urshapes at the top level Dia directory * Add test .urshape files to dia/urshapes/test directory and add it to the Makefile.am file in the same directory. You must also add an entry to the UrShapes.sheet file in the dia/sheets directory. The objects name must match the id attribute of the <shape> tag within your .urshape file. If you failed to provide an id the cdata within the <name> tag is used for backwards compatability with the custom shapes. Happy hacking --J5
Attachment:
urshape_starting_point.dia
Description: application/dia