Name
BonoboView -- View object for exporting a view of a BonoboEmbeddable component
Description
BonoboView objects are typically created on the view factory
callback of a BonoboEmbeddable object. Bonobo components should be
able to provide as many view objects as requested by the
BonoboEmbeddable object on demand.
It is the programmer's responsibility to keep the contents of all the
views displaying the same information (modulo per-view state, like
the zoom factor). Since GtkWidgets do not support linear zooming,
it is essential to understand that you cannot use GtkWidgets inside
your view - you must write custom rendering code.
An embeddable view is not a Control - by this I mean that it does not
control its own sizing, rendering or layout. It is entirely a slave
to the parent with respect to this. A View should never render
scroll bars into itself ( unless, exceptionaly if it is activated,
and allows the user to pan around a larger area ). Essentialy a
non-activated view should only show things that it will print, and
should render WYSIWYG as much as possible. Embeddable's views
scale linearly to obey the zoom level they are given.
If your component provides menus, then you use the
bonobo_view_get_remote_ui_container() to retrieve a Bonobo_UIContainer
handle to merge your menu / toolbar items into.
BonoboView objects get a chance to tell their containers their
desired size by responding to the "size_query" signal. They will
get their size assigned later. The size assignment happens on the
GtkWidget using the normal Gtk+ size allocation procedure.
Your component must support zooming to be a true embeddable. There
are two ways to support zoom.
Zoom to fit - for simple items such as images this makes sense
the item simply displays all of itself scaled to the available
size allocated to the GtkWidget.
Scaled - this obeys the zoom factor as set by the container,
it also crops the display of the image to the GtkWindow. Connect
to the "set_zoom_factor" signal. This signal gives a floating
point value that indicates the desired zoom factor set by your
container.
Details
BonoboViewClass
typedef struct {
BonoboControlClass parent_class;
POA_Bonobo_View__epv epv;
/* Signals */
void (*do_verb) (BonoboView *view,
const CORBA_char *verb_name);
void (*set_zoom_factor) (BonoboView *view, double zoom);
} BonoboViewClass; |
BONOBO_VIEW_VERB_FUNC()
#define BONOBO_VIEW_VERB_FUNC(fn) ((BonoboViewVerbFunc)(fn)) |
BonoboViewVerbFunc ()
void (*BonoboViewVerbFunc) (BonoboView *view,
const char *verb_name,
void *user_data); |
bonobo_view_construct ()
BonoboView* bonobo_view_construct (BonoboView *view,
GtkWidget *widget); |
item_creator might be NULL for widget-based views.
bonobo_view_new ()
BonoboView* bonobo_view_new (GtkWidget *widget); |
This function creates a new BonoboView object for widget
bonobo_view_set_embeddable ()
void bonobo_view_set_embeddable (BonoboView *view,
BonoboEmbeddable *embeddable); |
This function associates view with the specified GnomeEmbeddabe
object, embeddable.
bonobo_view_get_embeddable ()
BonoboEmbeddable* bonobo_view_get_embeddable
(BonoboView *view); |
bonobo_view_set_view_frame ()
void bonobo_view_set_view_frame (BonoboView *view,
Bonobo_ViewFrame view_frame); |
Sets the ViewFrame for view to view_frame.
bonobo_view_get_view_frame ()
Bonobo_ViewFrame bonobo_view_get_view_frame (BonoboView *view); |
bonobo_view_get_remote_ui_container ()
Bonobo_UIContainer bonobo_view_get_remote_ui_container
(BonoboView *view); |
bonobo_view_get_ui_component ()
BonoboUIComponent* bonobo_view_get_ui_component
(BonoboView *view); |
bonobo_view_activate_notify ()
void bonobo_view_activate_notify (BonoboView *view,
gboolean activated); |
This function notifies view's remote ViewFrame that the activation
state of view has changed.
See Also
BonoboViewFrame, BonoboEmbeddable, BonoboWidget, bonobo_widget_new()