X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/b364d6bc1f22a2a7ea522272e4ba916cd9e545a3..020b155be89ee1825309eb6d8d1958f3b46c310d:/src/viklayer.h diff --git a/src/viklayer.h b/src/viklayer.h index cd6291f6..f08658ae 100644 --- a/src/viklayer.h +++ b/src/viklayer.h @@ -18,12 +18,18 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ -#include -#include "vikwindow.h" - #ifndef _VIKING_LAYER_H #define _VIKING_LAYER_H +#include +#include +#include +#include + +#include "vikwindow.h" +#include "viktreeview.h" +#include "vikviewport.h" + #define VIK_LAYER_TYPE (vik_layer_get_type ()) #define VIK_LAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIK_LAYER_TYPE, VikLayer)) #define VIK_LAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIK_LAYER_TYPE, VikLayerClass)) @@ -109,8 +115,8 @@ typedef struct { gint16 group; const gchar *title; guint8 widget_type; - const gpointer widget_data; - const gpointer extra_widget_data; + gpointer widget_data; + gpointer extra_widget_data; } VikLayerParam; enum { @@ -169,6 +175,8 @@ typedef gboolean (*VikLayerFuncProperties) (VikLayer *,VikViewpo typedef void (*VikLayerFuncDraw) (VikLayer *,VikViewport *); typedef void (*VikLayerFuncChangeCoordMode) (VikLayer *,VikCoordMode); +typedef void (*VikLayerFuncSetMenuItemsSelection) (VikLayer *,guint16); +typedef guint16 (*VikLayerFuncGetMenuItemsSelection) (VikLayer *); typedef void (*VikLayerFuncAddMenuItems) (VikLayer *,GtkMenu *,gpointer); /* gpointer is a VikLayersPanel */ typedef gboolean (*VikLayerFuncSublayerAddMenuItems) (VikLayer *,GtkMenu *,gpointer, /* first gpointer is a VikLayersPanel */ gint,gpointer,GtkTreeIter *); @@ -202,6 +210,14 @@ typedef void (*VikLayerFuncFreeCopiedItem) (gint, gpointer); */ typedef void (*VikLayerFuncDragDropRequest) (VikLayer *, VikLayer *, GtkTreeIter *, GtkTreePath *); +typedef enum { + VIK_MENU_ITEM_PROPERTY=1, + VIK_MENU_ITEM_CUT=2, + VIK_MENU_ITEM_COPY=4, + VIK_MENU_ITEM_PASTE=8, + VIK_MENU_ITEM_DELETE=16, + VIK_MENU_ITEM_ALL=0xff +} VikStdLayerMenuItem; typedef struct _VikLayerInterface VikLayerInterface; @@ -219,6 +235,9 @@ struct _VikLayerInterface { gchar ** params_groups; guint8 params_groups_count; + /* menu items to be created */ + VikStdLayerMenuItem menu_items_selection; + VikLayerFuncCreate create; VikLayerFuncRealize realize; VikLayerFuncPostRead post_read; @@ -228,6 +247,9 @@ struct _VikLayerInterface { VikLayerFuncDraw draw; VikLayerFuncChangeCoordMode change_coord_mode; + VikLayerFuncSetMenuItemsSelection set_menu_selection; + VikLayerFuncGetMenuItemsSelection get_menu_selection; + VikLayerFuncAddMenuItems add_menu_items; VikLayerFuncSublayerAddMenuItems sublayer_add_menu_items; VikLayerFuncSublayerRenameRequest sublayer_rename_request; @@ -267,6 +289,8 @@ gboolean vik_layer_set_param (VikLayer *layer, guint16 id, VikLayerParamData dat void vik_layer_emit_update ( VikLayer *vl ); /* GUI */ +void vik_layer_set_menu_items_selection(VikLayer *l, guint16 selection); +guint16 vik_layer_get_menu_items_selection(VikLayer *l); void vik_layer_add_menu_items ( VikLayer *l, GtkMenu *menu, gpointer vlp ); VikLayer *vik_layer_create ( gint type, gpointer vp, GtkWindow *w, gboolean interactive ); gboolean vik_layer_properties ( VikLayer *layer, gpointer vp );