Kodi Development  20.0
for Binary and Script based Add-Ons
window.h
1 /*
2  * Copyright (C) 2005-2020 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #ifndef C_API_GUI_WINDOW_H
10 #define C_API_GUI_WINDOW_H
11 
12 #include "definitions.h"
13 #include "input/action_ids.h"
14 
15 #include <stddef.h>
16 
17 #define ADDON_MAX_CONTEXT_ENTRIES 20
18 #define ADDON_MAX_CONTEXT_ENTRY_NAME_LENGTH 80
19 
20 #ifdef __cplusplus
21 extern "C"
22 {
23 #endif /* __cplusplus */
24 
25  typedef struct gui_context_menu_pair
26  {
27  unsigned int id;
28  char name[ADDON_MAX_CONTEXT_ENTRY_NAME_LENGTH];
30 
32  {
33  /* Window creation functions */
34  KODI_GUI_WINDOW_HANDLE(*create)
35  (KODI_HANDLE kodiBase,
36  const char* xml_filename,
37  const char* default_skin,
38  bool as_dialog,
39  bool is_media);
40  void (*destroy)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
41 
42  void (*set_callbacks)(KODI_HANDLE kodiBase,
43  KODI_GUI_WINDOW_HANDLE handle,
44  KODI_GUI_CLIENT_HANDLE clienthandle,
45  bool (*CBInit)(KODI_GUI_CLIENT_HANDLE),
46  bool (*CBFocus)(KODI_GUI_CLIENT_HANDLE, int),
47  bool (*CBClick)(KODI_GUI_CLIENT_HANDLE, int),
48  bool (*CBOnAction)(KODI_GUI_CLIENT_HANDLE, enum ADDON_ACTION),
49  void (*CBGetContextButtons)(
50  KODI_GUI_CLIENT_HANDLE, int, gui_context_menu_pair*, unsigned int*),
51  bool (*CBOnContextButton)(KODI_GUI_CLIENT_HANDLE, int, unsigned int));
52  bool (*show)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
53  bool (*close)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
54  bool (*do_modal)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
55 
56  /* Window control functions */
57  bool (*set_focus_id)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
58  int (*get_focus_id)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
59  void (*set_control_label)(KODI_HANDLE kodiBase,
60  KODI_GUI_WINDOW_HANDLE handle,
61  int control_id,
62  const char* label);
63  void (*set_control_visible)(KODI_HANDLE kodiBase,
64  KODI_GUI_WINDOW_HANDLE handle,
65  int control_id,
66  bool visible);
67  void (*set_control_selected)(KODI_HANDLE kodiBase,
68  KODI_GUI_WINDOW_HANDLE handle,
69  int control_id,
70  bool selected);
71 
72  /* Window property functions */
73  void (*set_property)(KODI_HANDLE kodiBase,
74  KODI_GUI_WINDOW_HANDLE handle,
75  const char* key,
76  const char* value);
77  void (*set_property_int)(KODI_HANDLE kodiBase,
78  KODI_GUI_WINDOW_HANDLE handle,
79  const char* key,
80  int value);
81  void (*set_property_bool)(KODI_HANDLE kodiBase,
82  KODI_GUI_WINDOW_HANDLE handle,
83  const char* key,
84  bool value);
85  void (*set_property_double)(KODI_HANDLE kodiBase,
86  KODI_GUI_WINDOW_HANDLE handle,
87  const char* key,
88  double value);
89  char* (*get_property)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, const char* key);
90  int (*get_property_int)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, const char* key);
91  bool (*get_property_bool)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, const char* key);
92  double (*get_property_double)(KODI_HANDLE kodiBase,
93  KODI_GUI_WINDOW_HANDLE handle,
94  const char* key);
95  void (*clear_properties)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
96  void (*clear_property)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, const char* key);
97 
98  /* List item functions */
99  void (*clear_item_list)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
100  void (*add_list_item)(KODI_HANDLE kodiBase,
101  KODI_GUI_WINDOW_HANDLE handle,
102  KODI_GUI_LISTITEM_HANDLE item,
103  int list_position);
104  void (*remove_list_item_from_position)(KODI_HANDLE kodiBase,
105  KODI_GUI_WINDOW_HANDLE handle,
106  int list_position);
107  void (*remove_list_item)(KODI_HANDLE kodiBase,
108  KODI_GUI_WINDOW_HANDLE handle,
109  KODI_GUI_LISTITEM_HANDLE item);
110  KODI_GUI_LISTITEM_HANDLE(*get_list_item)
111  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int list_position);
112  void (*set_current_list_position)(KODI_HANDLE kodiBase,
113  KODI_GUI_WINDOW_HANDLE handle,
114  int list_position);
115  int (*get_current_list_position)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
116  int (*get_list_size)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
117  void (*set_container_property)(KODI_HANDLE kodiBase,
118  KODI_GUI_WINDOW_HANDLE handle,
119  const char* key,
120  const char* value);
121  void (*set_container_content)(KODI_HANDLE kodiBase,
122  KODI_GUI_WINDOW_HANDLE handle,
123  const char* value);
124  int (*get_current_container_id)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
125 
126  /* Various functions */
127  void (*mark_dirty_region)(KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle);
128 
129  /* GUI control access functions */
130  KODI_GUI_CONTROL_HANDLE(*get_control_button)
131  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
132  KODI_GUI_CONTROL_HANDLE(*get_control_edit)
133  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
134  KODI_GUI_CONTROL_HANDLE(*get_control_fade_label)
135  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
136  KODI_GUI_CONTROL_HANDLE(*get_control_image)
137  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
138  KODI_GUI_CONTROL_HANDLE(*get_control_label)
139  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
140  KODI_GUI_CONTROL_HANDLE(*get_control_progress)
141  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
142  KODI_GUI_CONTROL_HANDLE(*get_control_radio_button)
143  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
144  KODI_GUI_CONTROL_HANDLE(*get_control_render_addon)
145  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
146  KODI_GUI_CONTROL_HANDLE(*get_control_settings_slider)
147  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
148  KODI_GUI_CONTROL_HANDLE(*get_control_slider)
149  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
150  KODI_GUI_CONTROL_HANDLE(*get_control_spin)
151  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
152  KODI_GUI_CONTROL_HANDLE(*get_control_text_box)
153  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
154  KODI_GUI_CONTROL_HANDLE(*get_control_dummy1)
155  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
156  KODI_GUI_CONTROL_HANDLE(*get_control_dummy2)
157  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
158  KODI_GUI_CONTROL_HANDLE(*get_control_dummy3)
159  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
160  KODI_GUI_CONTROL_HANDLE(*get_control_dummy4)
161  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
162  KODI_GUI_CONTROL_HANDLE(*get_control_dummy5)
163  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
164  KODI_GUI_CONTROL_HANDLE(*get_control_dummy6)
165  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
166  KODI_GUI_CONTROL_HANDLE(*get_control_dummy7)
167  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
168  KODI_GUI_CONTROL_HANDLE(*get_control_dummy8)
169  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
170  KODI_GUI_CONTROL_HANDLE(*get_control_dummy9)
171  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
172  KODI_GUI_CONTROL_HANDLE(*get_control_dummy10)
173  (KODI_HANDLE kodiBase, KODI_GUI_WINDOW_HANDLE handle, int control_id);
174  /* This above used to add new get_control_* functions */
176 
177 #ifdef __cplusplus
178 } /* extern "C" */
179 #endif /* __cplusplus */
180 
181 #endif /* !C_API_GUI_WINDOW_H */
ADDON_ACTION
Definition: action_ids.h:19
Definition: window.h:26