1 #ifndef GNM_EXPR_ENTRY_H 2 #define GNM_EXPR_ENTRY_H 3 4 #include <gnumeric-fwd.h> 5 #include <parse-util.h> 6 7 #define GNM_EXPR_ENTRY_TYPE (gnm_expr_entry_get_type ()) 8 #define GNM_EXPR_ENTRY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNM_EXPR_ENTRY_TYPE, GnmExprEntry)) 9 #define GNM_EXPR_ENTRY_IS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_EXPR_ENTRY_TYPE)) 10 11 typedef struct GnmExprEntry_ GnmExprEntry; 12 13 typedef enum { 14 GNM_EE_SINGLE_RANGE = 1 << 0, 15 GNM_EE_FORCE_ABS_REF = 1 << 1, /* takes precedence over FORCE_REL_REF */ 16 GNM_EE_FORCE_REL_REF = 1 << 2, 17 GNM_EE_DEFAULT_ABS_REF = 1 << 3, /* lower priority than the _FORCE variants */ 18 GNM_EE_FULL_COL = 1 << 4, 19 GNM_EE_FULL_ROW = 1 << 5, 20 GNM_EE_SHEET_OPTIONAL = 1 << 6, 21 GNM_EE_FORMULA_ONLY = 1 << 7, 22 GNM_EE_CONSTANT_ALLOWED= 1 << 8, 23 GNM_EE_MASK = 0x1FF 24 } GnmExprEntryFlags; 25 26 GType gnm_expr_entry_get_type (void); 27 GnmExprEntry *gnm_expr_entry_new (WBCGtk *wbcg, 28 gboolean with_icon); 29 30 /* Widget specific methods */ 31 void gnm_expr_entry_freeze (GnmExprEntry *gee); 32 void gnm_expr_entry_thaw (GnmExprEntry *gee); 33 void gnm_expr_entry_set_flags (GnmExprEntry *gee, 34 GnmExprEntryFlags flags, 35 GnmExprEntryFlags mask); 36 void gnm_expr_entry_set_scg (GnmExprEntry *gee, 37 SheetControlGUI *scg); 38 SheetControlGUI *gnm_expr_entry_get_scg (GnmExprEntry *gee); 39 40 GtkEntry *gnm_expr_entry_get_entry (GnmExprEntry *gee); 41 gboolean gnm_expr_entry_get_rangesel (GnmExprEntry const *gee, 42 GnmRange *r, Sheet **sheet); 43 gboolean gnm_expr_entry_find_range (GnmExprEntry *gee); 44 void gnm_expr_entry_rangesel_stop (GnmExprEntry *gee, 45 gboolean clear_string); 46 47 gboolean gnm_expr_entry_can_rangesel (GnmExprEntry *gee); 48 gboolean gnm_expr_entry_is_blank (GnmExprEntry *gee); 49 gboolean gnm_expr_entry_is_cell_ref (GnmExprEntry *gee, 50 Sheet *sheet, 51 gboolean allow_multiple_cell); 52 53 char const *gnm_expr_entry_get_text (GnmExprEntry const *gee); 54 GnmValue *gnm_expr_entry_parse_as_value (GnmExprEntry *gee, Sheet *sheet); 55 GSList *gnm_expr_entry_parse_as_list (GnmExprEntry *gee, Sheet *sheet); 56 GnmExprTop const *gnm_expr_entry_parse (GnmExprEntry *gee, 57 GnmParsePos const *pp, 58 GnmParseError *perr, gboolean start_sel, 59 GnmExprParseFlags flags); 60 char *gnm_expr_entry_global_range_name (GnmExprEntry *gee, Sheet *sheet); 61 void gnm_expr_entry_load_from_text (GnmExprEntry *gee, char const *txt); 62 void gnm_expr_entry_load_from_dep (GnmExprEntry *gee, 63 GnmDependent const *dep); 64 void gnm_expr_entry_load_from_expr (GnmExprEntry *gee, 65 GnmExprTop const *texpr, 66 GnmParsePos const *pp); 67 gboolean gnm_expr_entry_load_from_range (GnmExprEntry *gee, 68 Sheet *sheet, GnmRange const *r); 69 typedef enum 70 { 71 GNM_UPDATE_CONTINUOUS, 72 GNM_UPDATE_DISCONTINUOUS, 73 GNM_UPDATE_DELAYED 74 } GnmUpdateType; 75 #define GNM_TYPE_UPDATE_TYPE (gnm_update_type_get_type()) 76 GType gnm_update_type_get_type (void); 77 78 void gnm_expr_entry_set_update_policy (GnmExprEntry *gee, 79 GnmUpdateType policy); 80 void gnm_expr_entry_grab_focus (GnmExprEntry *gee, gboolean select_all); 81 82 void gnm_expr_entry_close_tips (GnmExprEntry *gee); 83 void gnm_expr_entry_enable_tips (GnmExprEntry *gee); 84 void gnm_expr_entry_disable_tips (GnmExprEntry *gee); 85 86 /* Cell Renderer Specific Method */ 87 88 gboolean gnm_expr_entry_editing_canceled (GnmExprEntry *gee); 89 90 /* private : for internal use */ 91 void gnm_expr_entry_signal_update (GnmExprEntry *gee, gboolean user_requested); 92 93 #endif 94