1 /* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 #ifndef _GNM_APPLICATION_H_
3 # define _GNM_APPLICATION_H_
6 #include <glib-object.h>
10 #define GNM_APP_TYPE (gnm_app_get_type ())
11 typedef gboolean (*GnmWbIterFunc
) (Workbook
*wb
, gpointer data
);
13 GType
gnm_app_get_type (void);
14 GObject
*gnm_app_get_app (void);
16 /* List of active workbooks */
17 void gnm_app_workbook_list_add (Workbook
*wb
);
18 void gnm_app_workbook_list_remove (Workbook
*wb
);
19 GList
* gnm_app_workbook_list (void);
20 Workbook
*gnm_app_workbook_get_by_name (char const *name
,
22 Workbook
*gnm_app_workbook_get_by_index (int i
);
24 GSList
*gnm_app_history_get_list (int max_elements
);
25 void gnm_app_history_add (char const *filename
, const char *mimetype
);
27 void gnm_app_sanity_check (void);
29 void gnm_app_recalc (void);
30 void gnm_app_recalc_start (void);
31 void gnm_app_recalc_finish (void);
32 void gnm_app_recalc_clear_caches (void);
35 void *gnm_app_create_opener_filter (GList
*openers
);
37 double gnm_app_display_dpi_get (gboolean horizontal
);
38 double gnm_app_dpi_to_pixels (void);
41 void gnm_app_clipboard_clear (gboolean drop_selection
);
42 void gnm_app_clipboard_invalidate_sheet (Sheet
*sheet
);
43 void gnm_app_clipboard_cut_copy (WorkbookControl
*wbc
, gboolean is_cut
,
44 SheetView
*sv
, GnmRange
const *area
,
45 gboolean animate_range
);
46 void gnm_app_clipboard_cut_copy_obj (WorkbookControl
*wbc
, gboolean is_cut
,
47 SheetView
*sv
, GSList
*objects
);
48 void gnm_app_clipboard_unant (void);
49 gboolean
gnm_app_clipboard_is_empty (void);
50 gboolean
gnm_app_clipboard_is_cut (void);
51 Sheet
*gnm_app_clipboard_sheet_get (void);
52 SheetView
*gnm_app_clipboard_sheet_view_get (void);
53 GnmCellRegion
*gnm_app_clipboard_contents_get (void);
54 GnmRange
const *gnm_app_clipboard_area_get (void);
56 /**********************************************************************
57 * Temporary home for extra actions until we rework this in 1.5
61 typedef void (*GnmActionHandler
) (GnmAction
const *action
, WorkbookControl
*wbc
,
64 char *id
; /* id of the function that will handle this */
65 char *label
; /* untranslated, gettext domain will be passed later */
66 char *icon_name
; /* optionally NULL */
67 /* simplistic for now :
68 * is the action always available (File -> New) or only available
69 * when we are not editing (Cell -> Format)
70 * Later on this needs to be more comprehensive with things like
71 * per-sheetobject flags
73 gboolean always_available
;
75 GnmActionHandler handler
;
85 GType
gnm_action_get_type (void);
86 GnmAction
*gnm_action_new (char const *name
, char const *label
,
87 char const *icon
, gboolean always_available
,
88 GnmActionHandler handler
);
89 void gnm_action_free (GnmAction
*action
);
91 GType
gnm_app_extra_ui_get_type (void);
92 GnmAppExtraUI
*gnm_app_add_extra_ui (char const *group_name
,
93 GSList
*actions
, const char *layout
,
96 void gnm_app_remove_extra_ui (GnmAppExtraUI
*extra_ui
);
97 void gnm_app_foreach_extra_ui (GFunc func
, gpointer data
);
99 /**********************************************************************/
101 /* internal implementation util */
102 void _gnm_app_flag_windows_changed (void);
106 #endif /* _GNM_APPLICATION_H_ */