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>
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
,
18 void gnm_go_error_info_list_dialog_show (GtkWindow
*parent
,
20 void gnm_restore_window_geometry (GtkWindow
*dialog
,
22 void gnm_keyed_dialog (WBCGtk
*wbcg
,
25 gpointer
gnm_dialog_raise_if_exists (WBCGtk
*wbcg
,
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
,
42 GtkWidget
*gnm_create_tooltip (GtkWidget
*ref_widget
);
43 GtkWidget
*gnm_convert_to_tooltip (GtkWidget
*ref_widget
,
46 GtkBuilder
*gnm_gtk_builder_load (char const *uifile
, char const *domain
,
58 } GnmPopupMenuElement
;
60 typedef void (*GnmPopupMenuHandler
) (GnmPopupMenuElement
const *e
,
63 void gnm_create_popup_menu (GnmPopupMenuElement
const *elements
,
64 GnmPopupMenuHandler handler
,
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
,
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
,
91 GOFormat
const *format
);
92 gboolean
entry_to_float_with_format_default (GtkEntry
*entry
,
95 GOFormat
const *format
,
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
,
111 char const *primary_message
,
112 char const *secondary_message
);
114 typedef gboolean (*gnm_iter_search_t
) (GtkTreeModel
*model
, GtkTreeIter
* iter
);
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
,
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
,
135 gboolean
gnm_check_for_plugins_missing (char const **ids
, GtkWindow
*parent
);
138 gnm_cell_renderer_text_copy_background_to_cairo (GtkCellRendererText
*crt
,
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")
171 const gchar
*label_context
;
172 const gchar
*accelerator
;
173 const gchar
*tooltip
;
176 /* Fields for toggles. */
181 void gnm_action_group_add_actions (GtkActionGroup
*group
,
182 GnmActionEntry
const *actions
, size_t n
,
184 void gnm_action_group_add_action (GtkActionGroup
*group
, GtkAction
*act
);
186 void gnm_style_context_get_color (GtkStyleContext
*context
,
192 #endif /* _GNM_GUI_UTIL_H_ */