1 /*
2  * Copyright (C) 2020 Purism SPC
3  *
4  * SPDX-License-Identifier: LGPL-2.1+
5  *
6  * Author: Alexander Mikhaylenko <alexander.mikhaylenko@puri.sm>
7  */
8 
9 #pragma once
10 
11 #if !defined(_HANDY_INSIDE) && !defined(HANDY_COMPILATION)
12 #error "Only <handy.h> can be included directly."
13 #endif
14 
15 #include "hdy-version.h"
16 
17 #include <gtk/gtk.h>
18 
19 G_BEGIN_DECLS
20 
21 #define HDY_TYPE_TAB_PAGE (hdy_tab_page_get_type())
22 
23 HDY_AVAILABLE_IN_1_2
24 G_DECLARE_FINAL_TYPE (HdyTabPage, hdy_tab_page, HDY, TAB_PAGE, GObject)
25 
26 HDY_AVAILABLE_IN_1_2
27 GtkWidget *hdy_tab_page_get_child (HdyTabPage *self);
28 
29 HDY_AVAILABLE_IN_1_2
30 HdyTabPage *hdy_tab_page_get_parent (HdyTabPage *self);
31 
32 HDY_AVAILABLE_IN_1_2
33 gboolean hdy_tab_page_get_selected (HdyTabPage *self);
34 
35 HDY_AVAILABLE_IN_1_2
36 gboolean hdy_tab_page_get_pinned (HdyTabPage *self);
37 
38 HDY_AVAILABLE_IN_1_2
39 const gchar *hdy_tab_page_get_title (HdyTabPage  *self);
40 HDY_AVAILABLE_IN_1_2
41 void         hdy_tab_page_set_title (HdyTabPage  *self,
42                                      const gchar *title);
43 
44 HDY_AVAILABLE_IN_1_2
45 const gchar *hdy_tab_page_get_tooltip (HdyTabPage  *self);
46 HDY_AVAILABLE_IN_1_2
47 void         hdy_tab_page_set_tooltip (HdyTabPage  *self,
48                                        const gchar *tooltip);
49 
50 HDY_AVAILABLE_IN_1_2
51 GIcon *hdy_tab_page_get_icon (HdyTabPage *self);
52 HDY_AVAILABLE_IN_1_2
53 void   hdy_tab_page_set_icon (HdyTabPage *self,
54                               GIcon      *icon);
55 
56 HDY_AVAILABLE_IN_1_2
57 gboolean hdy_tab_page_get_loading (HdyTabPage *self);
58 HDY_AVAILABLE_IN_1_2
59 void     hdy_tab_page_set_loading (HdyTabPage *self,
60                                    gboolean    loading);
61 
62 HDY_AVAILABLE_IN_1_2
63 GIcon *hdy_tab_page_get_indicator_icon (HdyTabPage *self);
64 HDY_AVAILABLE_IN_1_2
65 void   hdy_tab_page_set_indicator_icon (HdyTabPage *self,
66                                         GIcon      *indicator_icon);
67 
68 HDY_AVAILABLE_IN_1_2
69 gboolean hdy_tab_page_get_indicator_activatable (HdyTabPage *self);
70 HDY_AVAILABLE_IN_1_2
71 void     hdy_tab_page_set_indicator_activatable (HdyTabPage *self,
72                                                  gboolean    activatable);
73 
74 HDY_AVAILABLE_IN_1_2
75 gboolean hdy_tab_page_get_needs_attention (HdyTabPage *self);
76 HDY_AVAILABLE_IN_1_2
77 void     hdy_tab_page_set_needs_attention (HdyTabPage *self,
78                                            gboolean    needs_attention);
79 
80 #define HDY_TYPE_TAB_VIEW (hdy_tab_view_get_type())
81 
82 HDY_AVAILABLE_IN_1_2
83 G_DECLARE_FINAL_TYPE (HdyTabView, hdy_tab_view, HDY, TAB_VIEW, GtkBin)
84 
85 HDY_AVAILABLE_IN_1_2
86 HdyTabView *hdy_tab_view_new (void);
87 
88 HDY_AVAILABLE_IN_1_2
89 gint hdy_tab_view_get_n_pages (HdyTabView *self);
90 HDY_AVAILABLE_IN_1_2
91 gint hdy_tab_view_get_n_pinned_pages (HdyTabView *self);
92 
93 HDY_AVAILABLE_IN_1_2
94 gboolean hdy_tab_view_get_is_transferring_page (HdyTabView *self);
95 
96 HDY_AVAILABLE_IN_1_2
97 HdyTabPage *hdy_tab_view_get_selected_page (HdyTabView *self);
98 HDY_AVAILABLE_IN_1_2
99 void        hdy_tab_view_set_selected_page (HdyTabView *self,
100                                             HdyTabPage *selected_page);
101 
102 HDY_AVAILABLE_IN_1_2
103 gboolean hdy_tab_view_select_previous_page (HdyTabView *self);
104 HDY_AVAILABLE_IN_1_2
105 gboolean hdy_tab_view_select_next_page     (HdyTabView *self);
106 
107 HDY_AVAILABLE_IN_1_2
108 GIcon *hdy_tab_view_get_default_icon (HdyTabView *self);
109 HDY_AVAILABLE_IN_1_2
110 void   hdy_tab_view_set_default_icon (HdyTabView *self,
111                                       GIcon      *default_icon);
112 
113 HDY_AVAILABLE_IN_1_2
114 GMenuModel *hdy_tab_view_get_menu_model (HdyTabView *self);
115 HDY_AVAILABLE_IN_1_2
116 void        hdy_tab_view_set_menu_model (HdyTabView *self,
117                                          GMenuModel *menu_model);
118 
119 HDY_AVAILABLE_IN_1_2
120 GtkWidget *hdy_tab_view_get_shortcut_widget (HdyTabView *self);
121 HDY_AVAILABLE_IN_1_2
122 void       hdy_tab_view_set_shortcut_widget (HdyTabView *self,
123                                              GtkWidget  *widget);
124 
125 HDY_AVAILABLE_IN_1_2
126 void hdy_tab_view_set_page_pinned (HdyTabView *self,
127                                    HdyTabPage *page,
128                                    gboolean    pinned);
129 
130 HDY_AVAILABLE_IN_1_2
131 HdyTabPage *hdy_tab_view_get_page (HdyTabView *self,
132                                    GtkWidget  *child);
133 
134 HDY_AVAILABLE_IN_1_2
135 HdyTabPage *hdy_tab_view_get_nth_page (HdyTabView *self,
136                                        gint        position);
137 
138 HDY_AVAILABLE_IN_1_2
139 gint hdy_tab_view_get_page_position (HdyTabView *self,
140                                      HdyTabPage *page);
141 
142 HDY_AVAILABLE_IN_1_2
143 HdyTabPage *hdy_tab_view_add_page (HdyTabView *self,
144                                    GtkWidget  *child,
145                                    HdyTabPage *parent);
146 
147 HDY_AVAILABLE_IN_1_2
148 HdyTabPage *hdy_tab_view_insert  (HdyTabView *self,
149                                   GtkWidget  *child,
150                                   gint        position);
151 HDY_AVAILABLE_IN_1_2
152 HdyTabPage *hdy_tab_view_prepend (HdyTabView *self,
153                                   GtkWidget  *child);
154 HDY_AVAILABLE_IN_1_2
155 HdyTabPage *hdy_tab_view_append  (HdyTabView *self,
156                                   GtkWidget  *child);
157 
158 HDY_AVAILABLE_IN_1_2
159 HdyTabPage *hdy_tab_view_insert_pinned  (HdyTabView *self,
160                                          GtkWidget  *child,
161                                          gint        position);
162 HDY_AVAILABLE_IN_1_2
163 HdyTabPage *hdy_tab_view_prepend_pinned (HdyTabView *self,
164                                          GtkWidget  *child);
165 HDY_AVAILABLE_IN_1_2
166 HdyTabPage *hdy_tab_view_append_pinned  (HdyTabView *self,
167                                          GtkWidget  *child);
168 
169 HDY_AVAILABLE_IN_1_2
170 void hdy_tab_view_close_page        (HdyTabView *self,
171                                      HdyTabPage *page);
172 HDY_AVAILABLE_IN_1_2
173 void hdy_tab_view_close_page_finish (HdyTabView *self,
174                                      HdyTabPage *page,
175                                      gboolean    confirm);
176 
177 HDY_AVAILABLE_IN_1_2
178 void hdy_tab_view_close_other_pages  (HdyTabView *self,
179                                       HdyTabPage *page);
180 HDY_AVAILABLE_IN_1_2
181 void hdy_tab_view_close_pages_before (HdyTabView *self,
182                                       HdyTabPage *page);
183 HDY_AVAILABLE_IN_1_2
184 void hdy_tab_view_close_pages_after  (HdyTabView *self,
185                                       HdyTabPage *page);
186 
187 HDY_AVAILABLE_IN_1_2
188 gboolean hdy_tab_view_reorder_page     (HdyTabView *self,
189                                         HdyTabPage *page,
190                                         gint        position);
191 HDY_AVAILABLE_IN_1_2
192 gboolean hdy_tab_view_reorder_backward (HdyTabView *self,
193                                         HdyTabPage *page);
194 HDY_AVAILABLE_IN_1_2
195 gboolean hdy_tab_view_reorder_forward  (HdyTabView *self,
196                                         HdyTabPage *page);
197 HDY_AVAILABLE_IN_1_2
198 gboolean hdy_tab_view_reorder_first    (HdyTabView *self,
199                                         HdyTabPage *page);
200 HDY_AVAILABLE_IN_1_2
201 gboolean hdy_tab_view_reorder_last     (HdyTabView *self,
202                                         HdyTabPage *page);
203 
204 HDY_AVAILABLE_IN_1_2
205 void hdy_tab_view_transfer_page (HdyTabView *self,
206                                  HdyTabPage *page,
207                                  HdyTabView *other_view,
208                                  gint        position);
209 
210 HDY_AVAILABLE_IN_1_2
211 GListModel *hdy_tab_view_get_pages (HdyTabView *self);
212 
213 G_END_DECLS
214