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