GnuCash  4.14+
gnucash-item-edit.h
Go to the documentation of this file.
1 /********************************************************************\
2  * This program is free software; you can redistribute it and/or *
3  * modify it under the terms of the GNU General Public License as *
4  * published by the Free Software Foundation; either version 2 of *
5  * the License, or (at your option) any later version. *
6  * *
7  * This program is distributed in the hope that it will be useful, *
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
10  * GNU General Public License for more details. *
11  * *
12  * You should have received a copy of the GNU General Public License*
13  * along with this program; if not, contact: *
14  * *
15  * Free Software Foundation Voice: +1-617-542-5942 *
16  * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
17  * Boston, MA 02110-1301, USA gnu@gnu.org *
18  * *
19 \********************************************************************/
20 
21 #ifndef GNUCASH_ITEM_EDIT_H
22 #define GNUCASH_ITEM_EDIT_H
23 
24 #include <gtk/gtk.h>
25 #include "gnucash-date-picker.h"
26 #include "gnucash-item-list.h"
27 #include "gnucash-sheet.h"
35 #define GNC_TYPE_ITEM_EDIT (gnc_item_edit_get_type ())
36 #define GNC_ITEM_EDIT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), GNC_TYPE_ITEM_EDIT, GncItemEdit))
37 #define GNC_ITEM_EDIT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GNC_TYPE_ITEM_EDIT, GncItemEditClass))
38 #define GNC_IS_ITEM_EDIT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), GNC_TYPE_ITEM_EDIT))
39 
40 #define GNC_TYPE_ITEM_EDIT_TB (gnc_item_edit_tb_get_type ())
41 #define GNC_ITEM_EDIT_TB(o) (G_TYPE_CHECK_INSTANCE_CAST((o), GNC_TYPE_ITEM_EDIT_TB, GncItemEditTb))
42 #define GNC_ITEM_EDIT_TB_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GNC_TYPE_ITEM_EDIT_TB, GncItemEditTbClass))
43 #define GNC_IS_ITEM_EDIT_TB(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), GNC_TYPE_ITEM_EDIT_TB))
44 
45 typedef int (*PopupGetHeight) (GtkWidget *item,
46  int space_available,
47  int row_height,
48  gpointer user_data);
49 
50 typedef int (*PopupAutosize) (GtkWidget *item,
51  int max_width,
52  gpointer user_data);
53 
54 typedef void (*PopupSetFocus) (GtkWidget *item,
55  gpointer user_data);
56 
57 typedef void (*PopupPostShow) (GtkWidget *item,
58  gpointer user_data);
59 
60 typedef int (*PopupGetWidth) (GtkWidget *item,
61  gpointer user_data);
62 
63 typedef struct _PopupToggle PopupToggle;
65 {
66  GtkWidget *ebox;
67  GtkWidget *tbutton;
68  gboolean arrow_down;
69  gboolean signals_connected;
70 };
71 
72 
73 typedef struct
74 {
75  GtkBox hbox;
76  GnucashSheet *sheet;
77 
78  /* The editor whose status we reflect on the sheet */
79  GtkWidget *editor;
80  gulong preedit_length;
81 
82  gboolean is_popup;
83  gboolean show_popup;
84 
85  PopupToggle popup_toggle;
86  GtkWidget *popup_item;
87  PopupGetHeight popup_get_height;
88  PopupAutosize popup_autosize;
89  PopupSetFocus popup_set_focus;
90  PopupPostShow popup_post_show;
91  PopupGetWidth popup_get_width;
92  gpointer popup_user_data;
93  gint popup_returned_height;
94  gulong popup_height_signal_id;
95 
96  GtkBorder padding;
97  GtkBorder margin;
98  GtkBorder border;
99  gint button_width;
100 
101  /* Where are we */
102  VirtualLocation virt_loc;
103 
104  SheetBlockStyle *style;
105 } GncItemEdit;
106 
107 typedef struct
108 {
109  GtkBoxClass parent_class;
111 
112 typedef struct
113 {
114  GtkToggleButton tb;
115  GnucashSheet *sheet;
116 } GncItemEditTb;
117 
118 typedef struct
119 {
120  GtkToggleButtonClass parent_class;
121 
122  void (* toggled) (GncItemEditTb *item_edit_tb);
124 
125 typedef enum
126 {
127  left,
128  right,
129  top,
130  bottom,
131  left_right,
132  top_bottom,
133 } Sides;
134 
135 GType gnc_item_edit_get_type (void);
136 
137 void gnc_item_edit_configure (GncItemEdit *item_edit);
138 
139 void gnc_item_edit_get_pixel_coords (GncItemEdit *item_edit,
140  int *x, int *y,
141  int *w, int *h);
142 
143 GtkWidget *gnc_item_edit_new (GnucashSheet *sheet);
144 
145 void gnc_item_edit_set_popup (GncItemEdit *item_edit,
146  GtkWidget *popup_item,
147  PopupGetHeight popup_get_height,
148  PopupAutosize popup_autosize,
149  PopupSetFocus popup_set_focus,
150  PopupPostShow popup_post_show,
151  PopupGetWidth popup_get_width,
152  gpointer popup_user_data);
153 
154 void gnc_item_edit_show_popup (GncItemEdit *item_edit);
155 void gnc_item_edit_hide_popup (GncItemEdit *item_edit);
156 
157 void gnc_item_edit_cut_clipboard (GncItemEdit *item_edit);
158 void gnc_item_edit_copy_clipboard (GncItemEdit *item_edit);
159 void gnc_item_edit_paste_clipboard (GncItemEdit *item_edit);
160 
161 gboolean gnc_item_edit_get_has_selection (GncItemEdit *item_edit);
162 void gnc_item_edit_focus_in (GncItemEdit *item_edit);
163 void gnc_item_edit_focus_out (GncItemEdit *item_edit);
164 
165 gint gnc_item_edit_get_margin (GncItemEdit *item_edit, Sides side);
166 gint gnc_item_edit_get_padding_border (GncItemEdit *item_edit, Sides side);
167 gint gnc_item_edit_get_button_width (GncItemEdit *item_edit);
168 
169 
170 GType gnc_item_edit_tb_get_type (void);
171 GtkWidget *gnc_item_edit_tb_new (GnucashSheet *sheet);
172 
174 #endif /* GNUCASH_ITEM_EDIT_H */
Public Declarations for GncItemList class.
Public declarations of GnucashRegister class.
Public declarations for GncDatePicker class.