1 /* ide-buffer-addin.h
2  *
3  * Copyright 2017-2019 Christian Hergert <chergert@redhat.com>
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  *
18  * SPDX-License-Identifier: GPL-3.0-or-later
19  */
20 
21 #pragma once
22 
23 #if !defined (IDE_CODE_INSIDE) && !defined (IDE_CODE_COMPILATION)
24 # error "Only <libide-code.h> can be included directly."
25 #endif
26 
27 #include <libide-core.h>
28 
29 #include "ide-code-types.h"
30 
31 G_BEGIN_DECLS
32 
33 #define IDE_TYPE_BUFFER_ADDIN (ide_buffer_addin_get_type())
34 
35 IDE_AVAILABLE_IN_3_32
36 G_DECLARE_INTERFACE (IdeBufferAddin, ide_buffer_addin, IDE, BUFFER_ADDIN, GObject)
37 
38 struct _IdeBufferAddinInterface
39 {
40   GTypeInterface parent_iface;
41 
42   void     (*load)                 (IdeBufferAddin       *self,
43                                     IdeBuffer            *buffer);
44   void     (*unload)               (IdeBufferAddin       *self,
45                                     IdeBuffer            *buffer);
46   void     (*file_loaded)          (IdeBufferAddin       *self,
47                                     IdeBuffer            *buffer,
48                                     GFile                *file);
49   void     (*save_file)            (IdeBufferAddin       *self,
50                                     IdeBuffer            *buffer,
51                                     GFile                *file);
52   void     (*file_saved)           (IdeBufferAddin       *self,
53                                     IdeBuffer            *buffer,
54                                     GFile                *file);
55   void     (*language_set)         (IdeBufferAddin       *self,
56                                     IdeBuffer            *buffer,
57                                     const gchar          *language_id);
58   void     (*change_settled)       (IdeBufferAddin       *self,
59                                     IdeBuffer            *buffer);
60   void     (*style_scheme_changed) (IdeBufferAddin       *self,
61                                     IdeBuffer            *buffer);
62   void     (*settle_async)         (IdeBufferAddin       *self,
63                                     GCancellable         *cancellable,
64                                     GAsyncReadyCallback   callback,
65                                     gpointer              user_data);
66   gboolean (*settle_finish)        (IdeBufferAddin       *self,
67                                     GAsyncResult         *result,
68                                     GError              **error);
69 };
70 
71 IDE_AVAILABLE_IN_3_32
72 void            ide_buffer_addin_load                 (IdeBufferAddin       *self,
73                                                        IdeBuffer            *buffer);
74 IDE_AVAILABLE_IN_3_32
75 void            ide_buffer_addin_unload               (IdeBufferAddin       *self,
76                                                        IdeBuffer            *buffer);
77 IDE_AVAILABLE_IN_3_32
78 void            ide_buffer_addin_file_loaded          (IdeBufferAddin       *self,
79                                                        IdeBuffer            *buffer,
80                                                        GFile                *file);
81 IDE_AVAILABLE_IN_3_32
82 void            ide_buffer_addin_save_file            (IdeBufferAddin       *self,
83                                                        IdeBuffer            *buffer,
84                                                        GFile                *file);
85 IDE_AVAILABLE_IN_3_32
86 void            ide_buffer_addin_file_saved           (IdeBufferAddin       *self,
87                                                        IdeBuffer            *buffer,
88                                                        GFile                *file);
89 IDE_AVAILABLE_IN_3_32
90 void            ide_buffer_addin_language_set         (IdeBufferAddin       *self,
91                                                        IdeBuffer            *buffer,
92                                                        const gchar          *language_id);
93 IDE_AVAILABLE_IN_3_32
94 void            ide_buffer_addin_change_settled       (IdeBufferAddin       *self,
95                                                        IdeBuffer            *buffer);
96 IDE_AVAILABLE_IN_3_32
97 void            ide_buffer_addin_style_scheme_changed (IdeBufferAddin       *self,
98                                                        IdeBuffer            *buffer);
99 IDE_AVAILABLE_IN_3_32
100 void            ide_buffer_addin_settle_async         (IdeBufferAddin       *self,
101                                                        GCancellable         *cancellable,
102                                                        GAsyncReadyCallback   callback,
103                                                        gpointer              user_data);
104 IDE_AVAILABLE_IN_3_32
105 gboolean        ide_buffer_addin_settle_finish        (IdeBufferAddin       *self,
106                                                        GAsyncResult         *result,
107                                                        GError              **error);
108 IDE_AVAILABLE_IN_3_32
109 IdeBufferAddin *ide_buffer_addin_find_by_module_name  (IdeBuffer            *buffer,
110                                                        const gchar          *module_name);
111 
112 G_END_DECLS
113