Bug 793125 - Crash due to popup menus left attached too long
[evolution.git] / src / calendar / gui / e-comp-editor.h
blobf5876c4fb3da6dc4d73f38b7e5f2150a4fd64703
1 /*
2 * Copyright (C) 2015 Red Hat, Inc. (www.redhat.com)
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by
6 * the Free Software Foundation.
8 * This program is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #ifndef E_COMP_EDITOR_H
19 #define E_COMP_EDITOR_H
21 #include <gtk/gtk.h>
22 #include <libecal/libecal.h>
24 #include <e-util/e-util.h>
25 #include <shell/e-shell.h>
27 #include <calendar/gui/e-comp-editor-page.h>
28 #include <calendar/gui/e-comp-editor-property-part.h>
30 /* Standard GObject macros */
32 #define E_TYPE_COMP_EDITOR \
33 (e_comp_editor_get_type ())
34 #define E_COMP_EDITOR(obj) \
35 (G_TYPE_CHECK_INSTANCE_CAST \
36 ((obj), E_TYPE_COMP_EDITOR, ECompEditor))
37 #define E_COMP_EDITOR_CLASS(cls) \
38 (G_TYPE_CHECK_CLASS_CAST \
39 ((cls), E_TYPE_COMP_EDITOR, ECompEditorClass))
40 #define E_IS_COMP_EDITOR(obj) \
41 (G_TYPE_CHECK_INSTANCE_TYPE \
42 ((obj), E_TYPE_COMP_EDITOR))
43 #define E_IS_COMP_EDITOR_CLASS(cls) \
44 (G_TYPE_CHECK_CLASS_TYPE \
45 ((cls), E_TYPE_COMP_EDITOR))
46 #define E_COMP_EDITOR_GET_CLASS(obj) \
47 (G_TYPE_INSTANCE_GET_CLASS \
48 ((obj), E_TYPE_COMP_EDITOR, ECompEditorClass))
50 G_BEGIN_DECLS
52 typedef enum {
53 E_COMP_EDITOR_FLAG_IS_NEW = 1 << 0,
54 E_COMP_EDITOR_FLAG_IS_ALL_DAY_EVENT = 1 << 1,
55 E_COMP_EDITOR_FLAG_WITH_ATTENDEES = 1 << 2,
56 E_COMP_EDITOR_FLAG_ORGANIZER_IS_USER = 1 << 3,
57 E_COMP_EDITOR_FLAG_DELEGATE = 1 << 4
58 } ECompEditorFlags;
60 typedef struct _ECompEditor ECompEditor;
61 typedef struct _ECompEditorClass ECompEditorClass;
62 typedef struct _ECompEditorPrivate ECompEditorPrivate;
64 struct _ECompEditor {
65 GtkWindow parent;
67 ECompEditorPrivate *priv;
70 struct _ECompEditorClass {
71 GtkWindowClass parent_class;
73 const gchar *help_section;
74 const gchar *title_format_with_attendees; /* should contain only one '%s', for the component summary */
75 const gchar *title_format_without_attendees; /* should contain only one '%s', for the component summary */
76 const gchar *icon_name; /* to be set as window icon */
78 /* Virtual functions */
79 void (* sensitize_widgets) (ECompEditor *comp_editor,
80 gboolean force_insensitive);
81 void (* fill_widgets) (ECompEditor *comp_editor,
82 icalcomponent *component);
83 gboolean (* fill_component) (ECompEditor *comp_editor,
84 icalcomponent *component);
86 /* Signals */
87 void (* times_changed) (ECompEditor *comp_editor);
88 void (* object_created) (ECompEditor *comp_editor);
89 void (* editor_closed) (ECompEditor *comp_editor,
90 gboolean saved);
93 GType e_comp_editor_get_type (void) G_GNUC_CONST;
94 void e_comp_editor_sensitize_widgets (ECompEditor *comp_editor);
95 void e_comp_editor_fill_widgets (ECompEditor *comp_editor,
96 icalcomponent *component);
97 gboolean e_comp_editor_fill_component (ECompEditor *comp_editor,
98 icalcomponent *component);
99 void e_comp_editor_set_validation_error
100 (ECompEditor *comp_editor,
101 ECompEditorPage *error_page,
102 GtkWidget *error_widget,
103 const gchar *error_message);
104 EShell * e_comp_editor_get_shell (ECompEditor *comp_editor);
105 GSettings * e_comp_editor_get_settings (ECompEditor *comp_editor);
106 ESource * e_comp_editor_get_origin_source (ECompEditor *comp_editor);
107 icalcomponent * e_comp_editor_get_component (ECompEditor *comp_editor);
108 guint32 e_comp_editor_get_flags (ECompEditor *comp_editor);
109 void e_comp_editor_set_flags (ECompEditor *comp_editor,
110 guint32 flags);
111 EFocusTracker * e_comp_editor_get_focus_tracker (ECompEditor *comp_editor);
112 GtkUIManager * e_comp_editor_get_ui_manager (ECompEditor *comp_editor);
113 GtkAction * e_comp_editor_get_action (ECompEditor *comp_editor,
114 const gchar *action_name);
115 GtkActionGroup *e_comp_editor_get_action_group (ECompEditor *comp_editor,
116 const gchar *group_name);
117 GtkWidget * e_comp_editor_get_managed_widget
118 (ECompEditor *comp_editor,
119 const gchar *widget_path);
120 const gchar * e_comp_editor_get_alarm_email_address
121 (ECompEditor *comp_editor);
122 void e_comp_editor_set_alarm_email_address
123 (ECompEditor *comp_editor,
124 const gchar *alarm_email_address);
125 const gchar * e_comp_editor_get_cal_email_address
126 (ECompEditor *comp_editor);
127 void e_comp_editor_set_cal_email_address
128 (ECompEditor *comp_editor,
129 const gchar *cal_email_address);
130 gboolean e_comp_editor_get_changed (ECompEditor *comp_editor);
131 void e_comp_editor_set_changed (ECompEditor *comp_editor,
132 gboolean changed);
133 void e_comp_editor_ensure_changed (ECompEditor *comp_editor);
134 gboolean e_comp_editor_get_updating (ECompEditor *comp_editor);
135 void e_comp_editor_set_updating (ECompEditor *comp_editor,
136 gboolean updating);
137 ECalClient * e_comp_editor_get_source_client (ECompEditor *comp_editor);
138 void e_comp_editor_set_source_client (ECompEditor *comp_editor,
139 ECalClient *client);
140 ECalClient * e_comp_editor_get_target_client (ECompEditor *comp_editor);
141 void e_comp_editor_set_target_client (ECompEditor *comp_editor,
142 ECalClient *client);
143 const gchar * e_comp_editor_get_title_suffix (ECompEditor *comp_editor);
144 void e_comp_editor_set_title_suffix (ECompEditor *comp_editor,
145 const gchar *title_suffix);
146 void e_comp_editor_set_time_parts (ECompEditor *comp_editor,
147 ECompEditorPropertyPart *dtstart_part,
148 ECompEditorPropertyPart *dtend_part);
149 void e_comp_editor_get_time_parts (ECompEditor *comp_editor,
150 ECompEditorPropertyPart **out_dtstart_part,
151 ECompEditorPropertyPart **out_dtend_part);
152 void e_comp_editor_add_page (ECompEditor *comp_editor,
153 const gchar *label,
154 ECompEditorPage *page);
155 ECompEditorPage *
156 e_comp_editor_get_page (ECompEditor *comp_editor,
157 GType page_type);
158 GSList * e_comp_editor_get_pages (ECompEditor *comp_editor);
159 void e_comp_editor_select_page (ECompEditor *comp_editor,
160 ECompEditorPage *page);
161 EAlert * e_comp_editor_add_information (ECompEditor *comp_editor,
162 const gchar *primary_text,
163 const gchar *secondary_text);
164 EAlert * e_comp_editor_add_warning (ECompEditor *comp_editor,
165 const gchar *primary_text,
166 const gchar *secondary_text);
167 EAlert * e_comp_editor_add_error (ECompEditor *comp_editor,
168 const gchar *primary_text,
169 const gchar *secondary_text);
170 void e_comp_editor_ensure_start_before_end
171 (ECompEditor *comp_editor,
172 ECompEditorPropertyPart *start_datetime,
173 ECompEditorPropertyPart *end_datetime,
174 gboolean change_end_datetime);
175 ECompEditor * e_comp_editor_open_for_component
176 (GtkWindow *parent,
177 EShell *shell,
178 ESource *origin_source,
179 const icalcomponent *component,
180 guint32 flags /* bit-or of ECompEditorFlags */);
181 ECompEditor * e_comp_editor_find_existing_for (ESource *origin_source,
182 const icalcomponent *component);
184 G_END_DECLS
186 #endif /* E_COMP_EDITOR_H */