Proposal of a Bonobo::Zoomable interface



Hi guys,

since CVS is down this afternoon I made up my mind about
zooming a bit.

Currently, there is no good zooming interface in Bonobo.
I mean, there is this "set_zoom_level" signal on a BonoboView,
but there is no way for a container application to

a) find out whether a component supports zooming
b) ask the component for its current zoom factor
c) ask the component about its zooming capabilities, for instance
   if it has a minimum/maximum zoom factor, if it only supports
   fixed zoom levels etc.

The Nautilus folks solved this problem with their Nautilus::Zoomable
interface and I think it would be nice to have something similar to
it in Bonobo:

====
module Bonobo {

typedef double ZoomLevel;
typedef sequence<ZoomLevel> ZoomLevelList;
	
interface Zoomable : Bonobo::Unknown {
	/* Set this attribute to make the thing zoom. */
	attribute double zoom_level;

	/* Information about the type of zooming that's supported. */
	readonly attribute double min_zoom_level;
	readonly attribute double max_zoom_level;
	readonly attribute boolean has_min_zoom_level;
	readonly attribute boolean has_max_zoom_level;
	readonly attribute boolean is_continuous;
	readonly attribute ZoomLevelList preferred_zoom_levels;
		
	/* High level operations.
	 * These can cause a change in the zoom level.
	 * The zoomable itself must decide what the concepts
	 * "one level in", "one level out", and "to fit" mean.
	 */
	oneway void zoom_in ();
	oneway void zoom_out ();
	oneway void zoom_to_fit ();
};

};
====

This is basically copied from Nautilus::Zoomable, but I added a way to
find out whether there is a minimum/maximum zoom level (`has_min_zoom_level').

How do you like this ?

-- 
Martin Baulig
martin gnome org (private)
baulig suse de (work)




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]