## GnomeDbCanvas

GnomeDbCanvas — Base class for all the GnomeCanvas derived widgets in libgnomedb.

##

# Synopsis

    struct      GnomeDbCanvas;
    struct      GnomeDbCanvasClass;
    GnomeDbGraph* gnome_db_canvas_get_graph     (GnomeDbCanvas *canvas);
    GtkWidget*  gnome_db_canvas_set_in_scrolled_window
                                                (GnomeDbCanvas *canvas);
    void        gnome_db_canvas_declare_item    (GnomeDbCanvas *canvas,
                                                 GnomeDbCanvasItem *item);
    void        gnome_db_canvas_set_zoom_factor (GnomeDbCanvas *canvas,
                                                 gdouble n);
    gdouble     gnome_db_canvas_get_zoom_factor (GnomeDbCanvas *canvas);
    gdouble     gnome_db_canvas_fit_zoom_factor (GnomeDbCanvas *canvas);
    gboolean    gnome_db_canvas_auto_layout_enabled
                                                (GnomeDbCanvas *canvas);
    void        gnome_db_canvas_perform_auto_layout
                                                (GnomeDbCanvas *canvas,
                                                 gboolean animate,
                                                 GnomeDbCanvasLayoutAlgorithm algorithm);
    void        gnome_db_canvas_center          (GnomeDbCanvas *canvas);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkObject
                   +----GtkWidget
                         +----GtkContainer
                               +----GooCanvas
                                     +----GnomeDbCanvas
                                           +----GnomeDbCanvasDbRelations

## Implemented Interfaces

GnomeDbCanvas implements AtkImplementorIface and GtkBuildable.

## Properties

      "graph"                GnomeDbGraph         : Read / Write

## Signal Prototypes

    "drag-action"
                void        user_function      (GnomeDbCanvas *dbcanvas,
                                                gpointer arg1,
                                                gpointer arg2,
                                                gpointer user_data);

## Description

This abstract class adds some basic functionnalities on top of the GnomeCanvas canvas such as:

- synchronisation with a GdaGraph object (to be able to save the position of each canvas item) and management of the list of items drawn on the canvas.

- zoom settings

The GnomeDbCanvas widget can be used with or without any associated GdaGraph object.

## Details

### struct GnomeDbCanvas

    struct GnomeDbCanvas;

### struct GnomeDbCanvasClass

    struct GnomeDbCanvasClass {

    	GooCanvasClass      parent_class;

    	/* virtual functions */
    	void           (*create_canvas_items) (GnomeDbCanvas *canvas); /* create individual GnomeDbCanvasItem objects */
    	void           (*clean_canvas_items)  (GnomeDbCanvas *canvas); /* clean any extra structure, not the individual items */

    	void           (*graph_item_added)    (GnomeDbCanvas *canvas, GnomeDbGraphItem *item);
    	void           (*graph_item_dropped)  (GnomeDbCanvas *canvas, GnomeDbGraphItem *item);

    	GtkWidget     *(*build_context_menu)  (GnomeDbCanvas *canvas);

    	/* signals */
    	void           (*drag_action)        (GnomeDbCanvas *canvas, GnomeDbCanvasItem *from_item, GnomeDbCanvasItem *to_item);
    };

### gnome_db_canvas_get_graph ()

    GnomeDbGraph* gnome_db_canvas_get_graph     (GnomeDbCanvas *canvas);

`canvas` : |
Returns : |

### gnome_db_canvas_set_in_scrolled_window ()

    GtkWidget*  gnome_db_canvas_set_in_scrolled_window
                                                (GnomeDbCanvas *canvas);

Creates a new GtkScrolledWindow object and put `canvas` in it. `canvas` can be retrieved using a "canvas" user property of the new scrolled window.

`canvas` : | a GnomeDbCanvas widget
Returns : | the new scrolled window.

### gnome_db_canvas_declare_item ()

    void        gnome_db_canvas_declare_item    (GnomeDbCanvas *canvas,
                                                 GnomeDbCanvasItem *item);

Declares `item` to be listed by `canvas` as one of its items. This functions should be called after each GnomeDbCanvasItem is added to `canvas`.

If it was not called for one item, then that item won't be used in `canvas`'s computations (no drag and drop, cleanup, etc).

`canvas` : | a GnomeDbCanvas widget
`item` : | a GnomeDbCanvasItem object

### gnome_db_canvas_set_zoom_factor ()

    void        gnome_db_canvas_set_zoom_factor (GnomeDbCanvas *canvas,
                                                 gdouble n);

Sets the zooming factor of a canvas by specifying the number of pixels that correspond to one canvas unit. A zoom factor of 1.0 is the default value; greater than 1.0 makes a zoom in and lower than 1.0 makes a zoom out.

`canvas` : | a GnomeDbCanvas widget
`n` : | the zoom factor

### gnome_db_canvas_get_zoom_factor ()

    gdouble     gnome_db_canvas_get_zoom_factor (GnomeDbCanvas *canvas);

Get the current zooming factor of a canvas.

`canvas` : | a GnomeDbCanvas widget
Returns : | the zooming factor.

### gnome_db_canvas_fit_zoom_factor ()

    gdouble     gnome_db_canvas_fit_zoom_factor (GnomeDbCanvas *canvas);

Compute and set the correct zoom factor so that all the items on `canvas` can be displayed at once.

`canvas` : | a GnomeDbCanvas widget
Returns : | the new zooming factor.

### gnome_db_canvas_auto_layout_enabled ()

    gboolean    gnome_db_canvas_auto_layout_enabled
                                                (GnomeDbCanvas *canvas);

Tells if `canvas` has the possibility to automatically adjust its layout using the GraphViz library.

`canvas` : | a GnomeDbCanvas widget
Returns : | TRUE if `canvas` can automatically adjust its layout

### gnome_db_canvas_perform_auto_layout ()

    void        gnome_db_canvas_perform_auto_layout
                                                (GnomeDbCanvas *canvas,
                                                 gboolean animate,
                                                 GnomeDbCanvasLayoutAlgorithm algorithm);

`canvas` : |
`animate` : |
`algorithm` : |

### gnome_db_canvas_center ()

    void        gnome_db_canvas_center          (GnomeDbCanvas *canvas);

Centers the display on the layout

`canvas` : | a GnomeDbCanvas widget

## Properties

"`graph`" (GnomeDbGraph : Read / Write) |

## Signals

### The "drag-action" signal

    void        user_function                  (GnomeDbCanvas *dbcanvas,
                                                gpointer arg1,
                                                gpointer arg2,
                                                gpointer user_data);

`dbcanvas` : | the object which received the signal.
`arg1` : |
`arg2` : |
`user_data` : | user data set when the signal handler was connected.