At 17:01 30.06.01 +0200, Michael Maluck wrote: >Hi all, > >tried to get some object properties of "UML Class" objects in the >python dia console. > >i comiled dia 0.88.1 from source with the --with-python option. >dia.active_display().diagram.layers[0].properties.get("obj_pos") returns >always None. Doesn't it give a runtime-error AttributeError: properties ? dia.active_display().diagram.layers[0].objects[0].properties['obj_pos'].value works: <DiaPoint object at ...> [Though there are probably Dia objects, which do not support the property api yet] >The has_key method says that the property exists. It is also listed >in keys(). The main problem is, that the layer object has no properties, because it isn't a DiaObject as one may expect. The property api is only supported by most objects within the diagram, like dia.active_display().diagram.layers[0].objects[0].type <DiaObjectType 'Standard - Text'> >i doesn't matter which property i want to get. it doesn't work for all. >any ideas? > There is probably no senseful way to write Dia Extensions in Python without being able to read and understand the C-Sources >are there any docs for the python plugin? NAFAIK. I've attached a small interface description extracted from the C-Source, no real documentation :( >is it possible to use the dia api not only in the python dia console? > Yes. There are two examples how to write an export filter in Python, but again I don't think it would be much fun to write one, without being able to debug or 'investigate the limitations in' the Python-Plugin as well. The Plugin will probably remain such limited as it is, at least until it (and first the Dia Object System) is converted to Gtk+2.0 especially the GObject system, because the current access does not allow to ref-count the objects, to easily back-propagate property changes, etc. ... Hans
dia.active_display() DiaDisplay dia.diagrams() DiaDiagram[n] dia.get_object_type(string) DiaObjectType 'name_of_object_type dia.load(string) 'filename dia.register_export(string,string,object) 'name,extension,DiaRenderer dia.register_callback(string,string,function) 'description,menupath,callback(DiaDiagramData,int) dia.update_all() DiaArrow type int width double length double DiaBezPoint p1 DiaPoint p2 DiaPoint p3 DiaPoint DiaColor red double green double blue double DiaConnectionPoint connected DiaObject[n] object DiaObject pos double[n] '(x,y) DiaDiagram raise_layer() lower_layer() add_layer(string[,int]) DiaLayer 'name, optional poisition set_active_layer(DiaLayer) delete_layer(DiaLayer) select(DiaObject) is_selected(DiaObject) int unselect(DiaObject) remove_all_selected() update_extents() get_sorted_selected() DiaObject[n] get_sorted_selected_remove() add_update(double,double,double,double) add_update_all() flush() find_clicked_object((double,double),double) DiaObject '(x,y), distance find_closest_handle(double,double) DiaHandle find_closest_connectionpoint(double,double) (DiaHandle,DiaObject) 'x,y group_selected() ungroup_selected() save([string]) int 'optional filename DiaDiagramData extents DiaRectangle bg_color DiaColor paper <not implemented> grid.width double[2] grid.visible int[2] hguides double[n] vguides double[n] layers DiaLayer[n] active_layer DiaLayer selected DiaObject[n] DiaDisplay diagram DiaDiagram origin double[2] 'todo? DiaPoint visible double[4] 'todo? DiaRectangle zoom_factor double add_update_all() flush() set_origion(double,double) zoom(double,double,double) 'pt.x, pt.x, factor resize_canvas(int,int) 'width, height close() set_title(string) scroll(double,double) 'delta x,y scroll_up() scroll_down() scroll_left() scroll_right() DiaError write(object) 'writes obeject as string DiaExportFilter <see export-object.py or export-render.py or pydia-render.c> DiaFont name string DiaHandle connect_type int connected_to DiaConnectionPoint id int pos double[2] '(x,y) type int DiaImage width int height int rgb_data char[widht*height*3] mask_data char[widht*height] filename string DiaLayer extents double[4] '(top,left,bottom,right) name string objects DiaObject[n] visible int destroy() object_index() int add_object(DiaObject[,int]) 'object, optional index 'at' remove_object(DiaObject) find_objects_in_rectangle(double,double,double,double) DiaObject 'top,left,right,bottom find_closest_object(double,double,double) DiaObject 'x,y,maxdist find_closest_connection_point(double,double) (double,DiaConnectionPoint) '(distance, cpoint) update_extents() DiaObject bounding_box DiaRectangle connections DiaConnectionPoint[n] handles DiaHandle[n] properties DiaProperties type DiaObjectType destroy() distance_from(double,double) double copy() DiaObject move(double,double) 'x,y move_handle(DiaHandle,(double,double),int,int) 'handle, (point.x, point.y), reason, modifiers DiaObjectType name string version int create(double,double[,int]) (DiaObject,DiaHandle,DiaHandle) 'x,y,optional user_data pointer DiaPoint x double y double DiaProperties <dictionary interface> DiaProperty name string type int 'type enumeration value <object> 'as (Dia)Python object DiaRectangle top <int|double> left <int|double> right <int|double> bottom <int|double>
-------- Hans "at" Breuer "dot" Org ----------- Tell me what you need, and I'll tell you how to get along without it. -- Dilbert