Introspection: update bless api
[gnumeric.git] / src / gui-util.h
bloba8ad2cb464b8f365dcc11f65cc02c0316e43415b
1 /* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 #ifndef _GNM_GUI_UTIL_H_
3 # define _GNM_GUI_UTIL_H_
5 #include "gnumeric-fwd.h"
6 #include <goffice/goffice.h>
7 #include "numbers.h"
8 #include <gtk/gtk.h>
10 G_BEGIN_DECLS
12 #define GNM_ACTION_DEF(name) \
13 void name (GtkAction *a, WBCGtk *wbcg)
15 GtkWidget* gnm_go_error_info_dialog_create (GOErrorInfo *error);
16 void gnm_go_error_info_dialog_show (GtkWindow *parent,
17 GOErrorInfo *error);
18 void gnm_go_error_info_list_dialog_show (GtkWindow *parent,
19 GSList *errs);
20 void gnm_restore_window_geometry (GtkWindow *dialog,
21 const char *key);
22 void gnm_keyed_dialog (WBCGtk *wbcg,
23 GtkWindow *dialog,
24 char const *key);
25 gpointer gnm_dialog_raise_if_exists (WBCGtk *wbcg,
26 char const *key);
27 void gnm_editable_enters (GtkWindow *window, GtkWidget *editable);
29 /* Utility routine as Gtk does not have any decent routine to do this */
30 int gnm_gtk_radio_group_get_selected (GSList *radio_group);
31 /* Utility routine as libglade does not have any decent routine to do this */
32 int gnm_gui_group_value (gpointer gui, char const * const group[]);
34 /* Use this on menus that are popped up */
35 void gnumeric_popup_menu (GtkMenu *menu, GdkEvent *event);
38 * Pseudo-tooltip support code.
40 void gnm_position_tooltip (GtkWidget *tip, int px, int py,
41 gboolean horizontal);
42 GtkWidget *gnm_create_tooltip (GtkWidget *ref_widget);
43 GtkWidget *gnm_convert_to_tooltip (GtkWidget *ref_widget,
44 GtkWidget *widget);
46 GtkBuilder *gnm_gtk_builder_load (char const *uifile, char const *domain,
47 GOCmdContext *cc);
49 typedef struct {
50 char const *name;
51 char const *pixmap;
52 int display_filter;
53 int sensitive_filter;
55 int index;
57 char *allocated_name;
58 } GnmPopupMenuElement;
60 typedef void (*GnmPopupMenuHandler) (GnmPopupMenuElement const *e,
61 gpointer user_data);
63 void gnm_create_popup_menu (GnmPopupMenuElement const *elements,
64 GnmPopupMenuHandler handler,
65 gpointer user_data,
66 int display_filter,
67 int sensitive_filter,
68 GdkEvent *event);
70 #define gnm_filter_modifiers(a) ((a) & (GDK_MODIFIER_MASK & (~(GDK_LOCK_MASK|GDK_MOD2_MASK|GDK_MOD5_MASK))))
72 void gnm_init_help_button (GtkWidget *w, char const *lnk);
74 char *gnm_textbuffer_get_text (GtkTextBuffer *buf);
75 char *gnm_textview_get_text (GtkTextView *text_view);
76 void gnm_textview_set_text (GtkTextView *text_view, char const *txt);
77 void gnm_load_pango_attributes_into_buffer (PangoAttrList *markup,
78 GtkTextBuffer *buffer,
79 gchar const *str);
80 PangoAttrList *gnm_get_pango_attributes_from_buffer (GtkTextBuffer *buffer);
82 void focus_on_entry (GtkEntry *entry);
84 /* WARNING : These do not handle dates correctly
85 * We should be passing in a DateConvention */
86 #define entry_to_float(entry, the_float, update) \
87 entry_to_float_with_format (entry, the_float, update, NULL)
88 gboolean entry_to_float_with_format (GtkEntry *entry,
89 gnm_float *the_float,
90 gboolean update,
91 GOFormat const *format);
92 gboolean entry_to_float_with_format_default (GtkEntry *entry,
93 gnm_float *the_float,
94 gboolean update,
95 GOFormat const *format,
96 gnm_float num);
97 gboolean entry_to_int (GtkEntry *entry, gint *the_int, gboolean update);
98 void float_to_entry (GtkEntry *entry, gnm_float the_float);
99 void int_to_entry (GtkEntry *entry, gint the_int);
101 void gnm_link_button_and_entry (GtkWidget *button, GtkWidget *entry);
103 void gnm_widget_set_cursor_type (GtkWidget *w, GdkCursorType ct);
104 void gnm_widget_set_cursor (GtkWidget *w, GdkCursor *ct);
106 int gnm_widget_measure_string (GtkWidget *w, const char *s);
108 GtkWidget * gnm_message_dialog_create (GtkWindow * parent,
109 GtkDialogFlags flags,
110 GtkMessageType type,
111 char const *primary_message,
112 char const *secondary_message);
114 typedef gboolean (*gnm_iter_search_t) (GtkTreeModel *model, GtkTreeIter* iter);
116 typedef enum {
117 GNM_DIALOG_DESTROY_SHEET_ADDED = 0x01,
118 GNM_DIALOG_DESTROY_SHEET_REMOVED = 0x02,
119 GNM_DIALOG_DESTROY_SHEET_RENAMED = 0x04,
120 GNM_DIALOG_DESTROY_SHEETS_REORDERED = 0x08,
121 GNM_DIALOG_DESTROY_CURRENT_SHEET_REMOVED = 0x100,
122 GNM_DIALOG_DESTROY_CURRENT_SHEET_RENAMED = 0x200
123 } GnmDialogDestroyOptions;
125 void gnm_dialog_setup_destroy_handlers (GtkDialog *dialog,
126 WBCGtk *wbcg,
127 GnmDialogDestroyOptions what);
129 void gnm_canvas_get_position (GocCanvas *canvas, int *x, int *y,
130 gint64 px, gint64 py);
131 void gnm_canvas_get_screen_position (GocCanvas *canvas,
132 double x, double y,
133 int *ix, int *iy);
135 gboolean gnm_check_for_plugins_missing (char const **ids, GtkWindow *parent);
137 void
138 gnm_cell_renderer_text_copy_background_to_cairo (GtkCellRendererText *crt,
139 cairo_t *cr);
143 * These macros exist to replace the old gtk+ stock items. Note, that these only
144 * cover strings with mnemonics. I.e., you must handle icons and accelerators
145 * in some other way. (So why do we have them in the first place? To ensure
146 * the user interface is as consistent as possible.)
148 #define GNM_STOCK_LABEL_CONTEXT "Stock label"
150 #define GNM_STOCK_OPEN g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_OPEN)
151 #define GNM_N_STOCK_OPEN NC_("Stock label", "_Open")
153 #define GNM_STOCK_SAVE g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_SAVE)
154 #define GNM_N_STOCK_SAVE NC_("Stock label", "_Save")
156 #define GNM_STOCK_SAVE_AS g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_SAVE_AS)
157 #define GNM_N_STOCK_SAVE_AS NC_("Stock label", "Save _As")
159 #define GNM_STOCK_CANCEL g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_CANCEL)
160 #define GNM_N_STOCK_CANCEL NC_("Stock label", "_Cancel")
162 #define GNM_STOCK_OK g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_OK)
163 #define GNM_N_STOCK_OK NC_("Stock label", "_OK")
166 typedef struct
168 const gchar *name;
169 const gchar *icon;
170 const gchar *label;
171 const gchar *label_context;
172 const gchar *accelerator;
173 const gchar *tooltip;
174 GCallback callback;
176 /* Fields for toggles. */
177 guint toggle : 1;
178 guint is_active : 1;
179 } GnmActionEntry;
181 void gnm_action_group_add_actions (GtkActionGroup *group,
182 GnmActionEntry const *actions, size_t n,
183 gpointer user);
184 void gnm_action_group_add_action (GtkActionGroup *group, GtkAction *act);
186 void gnm_style_context_get_color (GtkStyleContext *context,
187 GtkStateFlags state,
188 GdkRGBA *color);
190 G_END_DECLS
192 #endif /* _GNM_GUI_UTIL_H_ */