1 #ifndef _GNM_GUI_UTIL_H_
2 # define _GNM_GUI_UTIL_H_
4 #include <gnumeric-fwd.h>
5 #include <goffice/goffice.h>
10 #define GNM_ACTION_DEF(name) \
11 void name (GtkAction *a, WBCGtk *wbcg)
13 GtkWidget
* gnm_go_error_info_dialog_create (GOErrorInfo
*error
);
14 void gnm_go_error_info_dialog_show (GtkWindow
*parent
,
16 void gnm_go_error_info_list_dialog_show (GtkWindow
*parent
,
18 void gnm_restore_window_geometry (GtkWindow
*dialog
,
20 void gnm_keyed_dialog (WBCGtk
*wbcg
,
23 gpointer
gnm_dialog_raise_if_exists (WBCGtk
*wbcg
,
25 void gnm_editable_enters (GtkWindow
*window
, GtkWidget
*editable
);
27 /* Utility routine as Gtk does not have any decent routine to do this */
28 int gnm_gtk_radio_group_get_selected (GSList
*radio_group
);
29 /* Utility routine as libglade does not have any decent routine to do this */
30 int gnm_gui_group_value (gpointer gui
, char const * const group
[]);
32 /* Use this on menus that are popped up */
33 void gnumeric_popup_menu (GtkMenu
*menu
, GdkEvent
*event
);
36 * Pseudo-tooltip support code.
38 void gnm_position_tooltip (GtkWidget
*tip
, int px
, int py
,
40 GtkWidget
*gnm_create_tooltip (GtkWidget
*ref_widget
);
41 GtkWidget
*gnm_convert_to_tooltip (GtkWidget
*ref_widget
,
44 GtkBuilder
*gnm_gtk_builder_load (char const *uifile
, char const *domain
,
56 } GnmPopupMenuElement
;
58 typedef void (*GnmPopupMenuHandler
) (GnmPopupMenuElement
const *e
,
61 void gnm_create_popup_menu (GnmPopupMenuElement
const *elements
,
62 GnmPopupMenuHandler handler
,
64 GDestroyNotify notify
,
69 #define gnm_filter_modifiers(a) ((a) & (GDK_MODIFIER_MASK & (~(GDK_LOCK_MASK|GDK_MOD2_MASK|GDK_MOD5_MASK))))
71 void gnm_init_help_button (GtkWidget
*w
, char const *lnk
);
73 char *gnm_textbuffer_get_text (GtkTextBuffer
*buf
);
74 char *gnm_textview_get_text (GtkTextView
*text_view
);
75 void gnm_textview_set_text (GtkTextView
*text_view
, char const *txt
);
76 void gnm_load_pango_attributes_into_buffer (PangoAttrList
*markup
,
77 GtkTextBuffer
*buffer
,
79 PangoAttrList
*gnm_get_pango_attributes_from_buffer (GtkTextBuffer
*buffer
);
81 void focus_on_entry (GtkEntry
*entry
);
83 /* WARNING : These do not handle dates correctly
84 * We should be passing in a DateConvention */
85 #define entry_to_float(entry, the_float, update) \
86 entry_to_float_with_format (entry, the_float, update, NULL)
87 gboolean
entry_to_float_with_format (GtkEntry
*entry
,
90 GOFormat
const *format
);
91 gboolean
entry_to_float_with_format_default (GtkEntry
*entry
,
94 GOFormat
const *format
,
96 gboolean
entry_to_int (GtkEntry
*entry
, gint
*the_int
, gboolean update
);
97 void float_to_entry (GtkEntry
*entry
, gnm_float the_float
);
98 void int_to_entry (GtkEntry
*entry
, gint the_int
);
100 void gnm_link_button_and_entry (GtkWidget
*button
, GtkWidget
*entry
);
102 void gnm_widget_set_cursor_type (GtkWidget
*w
, GdkCursorType ct
);
103 void gnm_widget_set_cursor (GtkWidget
*w
, GdkCursor
*ct
);
105 int gnm_widget_measure_string (GtkWidget
*w
, const char *s
);
107 GtkWidget
* gnm_message_dialog_create (GtkWindow
* parent
,
108 GtkDialogFlags flags
,
110 char const *primary_message
,
111 char const *secondary_message
);
113 typedef gboolean (*gnm_iter_search_t
) (GtkTreeModel
*model
, GtkTreeIter
* iter
);
116 GNM_DIALOG_DESTROY_SHEET_ADDED
= 0x01,
117 GNM_DIALOG_DESTROY_SHEET_REMOVED
= 0x02,
118 GNM_DIALOG_DESTROY_SHEET_RENAMED
= 0x04,
119 GNM_DIALOG_DESTROY_SHEETS_REORDERED
= 0x08,
120 GNM_DIALOG_DESTROY_CURRENT_SHEET_REMOVED
= 0x100,
121 GNM_DIALOG_DESTROY_CURRENT_SHEET_RENAMED
= 0x200
122 } GnmDialogDestroyOptions
;
124 void gnm_dialog_setup_destroy_handlers (GtkDialog
*dialog
,
126 GnmDialogDestroyOptions what
);
128 void gnm_canvas_get_position (GocCanvas
*canvas
, int *x
, int *y
,
129 gint64 px
, gint64 py
);
130 void gnm_canvas_get_screen_position (GocCanvas
*canvas
,
134 gboolean
gnm_check_for_plugins_missing (char const **ids
, GtkWindow
*parent
);
137 gnm_cell_renderer_text_copy_background_to_cairo (GtkCellRendererText
*crt
,
142 * These macros exist to replace the old gtk+ stock items. Note, that these only
143 * cover strings with mnemonics. I.e., you must handle icons and accelerators
144 * in some other way. (So why do we have them in the first place? To ensure
145 * the user interface is as consistent as possible.)
147 #define GNM_STOCK_LABEL_CONTEXT "Stock label"
149 #define GNM_STOCK_OPEN g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_OPEN)
150 #define GNM_N_STOCK_OPEN NC_("Stock label", "_Open")
152 #define GNM_STOCK_SAVE g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_SAVE)
153 #define GNM_N_STOCK_SAVE NC_("Stock label", "_Save")
155 #define GNM_STOCK_SAVE_AS g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_SAVE_AS)
156 #define GNM_N_STOCK_SAVE_AS NC_("Stock label", "Save _As")
158 #define GNM_STOCK_CANCEL g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_CANCEL)
159 #define GNM_N_STOCK_CANCEL NC_("Stock label", "_Cancel")
161 #define GNM_STOCK_OK g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_OK)
162 #define GNM_N_STOCK_OK NC_("Stock label", "_OK")
170 const gchar
*label_context
;
171 const gchar
*accelerator
;
172 const gchar
*tooltip
;
175 /* Fields for toggles. */
180 void gnm_action_group_add_actions (GtkActionGroup
*group
,
181 GnmActionEntry
const *actions
, size_t n
,
183 void gnm_action_group_add_action (GtkActionGroup
*group
, GtkAction
*act
);
185 void gnm_style_context_get_color (GtkStyleContext
*context
,
189 void gnm_get_link_color (GtkWidget
*widget
, GdkRGBA
*res
);
193 #endif /* _GNM_GUI_UTIL_H_ */