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
,
68 #define gnm_filter_modifiers(a) ((a) & (GDK_MODIFIER_MASK & (~(GDK_LOCK_MASK|GDK_MOD2_MASK|GDK_MOD5_MASK))))
70 void gnm_init_help_button (GtkWidget
*w
, char const *lnk
);
72 char *gnm_textbuffer_get_text (GtkTextBuffer
*buf
);
73 char *gnm_textview_get_text (GtkTextView
*text_view
);
74 void gnm_textview_set_text (GtkTextView
*text_view
, char const *txt
);
75 void gnm_load_pango_attributes_into_buffer (PangoAttrList
*markup
,
76 GtkTextBuffer
*buffer
,
78 PangoAttrList
*gnm_get_pango_attributes_from_buffer (GtkTextBuffer
*buffer
);
80 void focus_on_entry (GtkEntry
*entry
);
82 /* WARNING : These do not handle dates correctly
83 * We should be passing in a DateConvention */
84 #define entry_to_float(entry, the_float, update) \
85 entry_to_float_with_format (entry, the_float, update, NULL)
86 gboolean
entry_to_float_with_format (GtkEntry
*entry
,
89 GOFormat
const *format
);
90 gboolean
entry_to_float_with_format_default (GtkEntry
*entry
,
93 GOFormat
const *format
,
95 gboolean
entry_to_int (GtkEntry
*entry
, gint
*the_int
, gboolean update
);
96 void float_to_entry (GtkEntry
*entry
, gnm_float the_float
);
97 void int_to_entry (GtkEntry
*entry
, gint the_int
);
99 void gnm_link_button_and_entry (GtkWidget
*button
, GtkWidget
*entry
);
101 void gnm_widget_set_cursor_type (GtkWidget
*w
, GdkCursorType ct
);
102 void gnm_widget_set_cursor (GtkWidget
*w
, GdkCursor
*ct
);
104 int gnm_widget_measure_string (GtkWidget
*w
, const char *s
);
106 GtkWidget
* gnm_message_dialog_create (GtkWindow
* parent
,
107 GtkDialogFlags flags
,
109 char const *primary_message
,
110 char const *secondary_message
);
112 typedef gboolean (*gnm_iter_search_t
) (GtkTreeModel
*model
, GtkTreeIter
* iter
);
115 GNM_DIALOG_DESTROY_SHEET_ADDED
= 0x01,
116 GNM_DIALOG_DESTROY_SHEET_REMOVED
= 0x02,
117 GNM_DIALOG_DESTROY_SHEET_RENAMED
= 0x04,
118 GNM_DIALOG_DESTROY_SHEETS_REORDERED
= 0x08,
119 GNM_DIALOG_DESTROY_CURRENT_SHEET_REMOVED
= 0x100,
120 GNM_DIALOG_DESTROY_CURRENT_SHEET_RENAMED
= 0x200
121 } GnmDialogDestroyOptions
;
123 void gnm_dialog_setup_destroy_handlers (GtkDialog
*dialog
,
125 GnmDialogDestroyOptions what
);
127 void gnm_canvas_get_position (GocCanvas
*canvas
, int *x
, int *y
,
128 gint64 px
, gint64 py
);
129 void gnm_canvas_get_screen_position (GocCanvas
*canvas
,
133 gboolean
gnm_check_for_plugins_missing (char const **ids
, GtkWindow
*parent
);
136 gnm_cell_renderer_text_copy_background_to_cairo (GtkCellRendererText
*crt
,
141 * These macros exist to replace the old gtk+ stock items. Note, that these only
142 * cover strings with mnemonics. I.e., you must handle icons and accelerators
143 * in some other way. (So why do we have them in the first place? To ensure
144 * the user interface is as consistent as possible.)
146 #define GNM_STOCK_LABEL_CONTEXT "Stock label"
148 #define GNM_STOCK_OPEN g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_OPEN)
149 #define GNM_N_STOCK_OPEN NC_("Stock label", "_Open")
151 #define GNM_STOCK_SAVE g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_SAVE)
152 #define GNM_N_STOCK_SAVE NC_("Stock label", "_Save")
154 #define GNM_STOCK_SAVE_AS g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_SAVE_AS)
155 #define GNM_N_STOCK_SAVE_AS NC_("Stock label", "Save _As")
157 #define GNM_STOCK_CANCEL g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_CANCEL)
158 #define GNM_N_STOCK_CANCEL NC_("Stock label", "_Cancel")
160 #define GNM_STOCK_OK g_dpgettext2(GETTEXT_PACKAGE, "Stock label", GNM_N_STOCK_OK)
161 #define GNM_N_STOCK_OK NC_("Stock label", "_OK")
169 const gchar
*label_context
;
170 const gchar
*accelerator
;
171 const gchar
*tooltip
;
174 /* Fields for toggles. */
179 void gnm_action_group_add_actions (GtkActionGroup
*group
,
180 GnmActionEntry
const *actions
, size_t n
,
182 void gnm_action_group_add_action (GtkActionGroup
*group
, GtkAction
*act
);
184 void gnm_style_context_get_color (GtkStyleContext
*context
,
188 void gnm_get_link_color (GtkWidget
*widget
, GdkRGBA
*res
);
192 #endif /* _GNM_GUI_UTIL_H_ */