]> git.meshlink.io Git - catta/blob - avahi-ui/avahi-ui.h
Allow overwriting of pretty service names. Add new tool bshell as combination of...
[catta] / avahi-ui / avahi-ui.h
1 #ifndef fooavahiuihfoo
2 #define fooavahiuihfoo
3
4 /* $Id$ */
5
6 /***
7   This file is part of avahi.
8
9   avahi is free software; you can redistribute it and/or modify it
10   under the terms of the GNU Lesser General Public License as
11   published by the Free Software Foundation; either version 2.1 of the
12   License, or (at your option) any later version.
13
14   avahi is distributed in the hope that it will be useful, but WITHOUT
15   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16   or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
17   Public License for more details.
18
19   You should have received a copy of the GNU Lesser General Public
20   License along with avahi; if not, write to the Free Software
21   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22   USA.
23 ***/
24
25 #include <gtk/gtkwidget.h>
26 #include <gtk/gtkdialog.h>
27
28 #include <avahi-client/client.h>
29
30 /** \file avahi-ui.h A Gtk dialog for browsing for services */
31
32 G_BEGIN_DECLS
33
34 #ifndef DOXYGEN_SHOULD_SKIP_THIS
35
36 #define AUI_TYPE_SERVICE_DIALOG            (aui_service_dialog_get_type())
37 #define AUI_SERVICE_DIALOG(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), AUI_TYPE_SERVICE_DIALOG, AuiServiceDialog))
38 #define AUI_SERVICE_DIALOG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), AUI_TYPE_SERVICE_DIALOG, AuiServiceDialogClass))
39 #define AUI_IS_SERVICE_DIALOG(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), AUI_TYPE_SERVICE_DIALOG))
40 #define AUI_IS_SERVICE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), AUI_TYPE_SERVICE_DIALOG))
41 #define AUI_SERVICE_DIALOG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), AUI_TYPE_SERVICE_DIALOG, AuiServiceDialogClass))
42
43 typedef struct _AuiServiceDialogPrivate AuiServiceDialogPrivate;
44 typedef struct _AuiServiceDialogClass  AuiServiceDialogClass;
45
46 struct _AuiServiceDialogClass {
47     GtkDialogClass parent_class;
48
49     /* Padding for future expansion */
50     void (*_aui_reserved1)(void);
51     void (*_aui_reserved2)(void);
52     void (*_aui_reserved3)(void);
53     void (*_aui_reserved4)(void);
54 };
55
56 struct _AuiServiceDialog {
57     GtkDialog parent_instance;
58     AuiServiceDialogPrivate *priv;
59 };
60
61 /* ServiceDialog */
62 GType aui_service_dialog_get_type(void) G_GNUC_CONST;
63
64 #endif
65
66 /** The GTK service dialog structure */
67 typedef struct _AuiServiceDialog AuiServiceDialog;
68
69 /** @{ \name Construction */
70
71 /** Create a new service browser dialog with the specific title,
72  * parent window and the speicified buttons. The buttons are specified
73  * in a similar way to GtkFileChooserDialog. Please note that at least
74  * one button has to respond GTK_RESPONSE_ACCEPT. */
75 GtkWidget* aui_service_dialog_new(
76         const gchar *title,
77         GtkWindow *parent,
78         const gchar *first_button_text, ...) G_GNUC_NULL_TERMINATED;
79
80 /** \cond fulldocs */
81 GtkWidget *aui_service_dialog_new_valist(
82         const gchar *title,
83         GtkWindow *parent,
84         const gchar *first_button_text,
85         va_list varargs);
86 /** \endcond */
87
88 /** @} */
89
90 /** @{ \name Service types to browse for */
91
92 /** Select the service types to browse for. Takes a NULL terminated list of DNS-SD service types. i.e. _http._tcp */
93 void aui_service_dialog_set_browse_service_types(AuiServiceDialog *d, const gchar *type, ...) G_GNUC_NULL_TERMINATED;
94 /** Same as aui_service_dialog_set_browse_service_types() but take a NULL terminated array */
95 void aui_service_dialog_set_browse_service_typesv(AuiServiceDialog *d, const gchar *const*type);
96 /** Return the service types currently browsed for. i.e. what was previously set with aui_service_dialog_set_browse_service_types() */
97 const gchar*const* aui_service_dialog_get_browse_service_types(AuiServiceDialog *d);
98 /** Overwrite the pretty name shown in the service type column. \since 0.6.22 */
99 void aui_service_dialog_set_service_type_name(AuiServiceDialog *d, const gchar *type, const gchar *name);
100
101 /** @} */
102
103 /** @{ \name Domain to browse in */
104
105 /** Set the domain to browse in */
106 void aui_service_dialog_set_domain(AuiServiceDialog *d, const gchar *domain);
107 /** Query the domain that is browsed in */
108 const gchar* aui_service_dialog_get_domain(AuiServiceDialog *d);
109
110 /** @} */
111
112 /** @{ \name Selected service item */
113
114 /** Set the service type for the service to select */
115 void aui_service_dialog_set_service_type(AuiServiceDialog *d, const gchar *name);
116
117 /** Query the service type of the currently selected service */
118 const gchar* aui_service_dialog_get_service_type(AuiServiceDialog *d);
119
120 /** Set the service name for the service to select */
121 void aui_service_dialog_set_service_name(AuiServiceDialog *d, const gchar *name);
122
123 /** Query the service name of the currently select service */
124 const gchar* aui_service_dialog_get_service_name(AuiServiceDialog *d);
125
126 /** @} */
127
128 /** @{ \name Resolved service information */
129
130 /** Return the IP address of the selected service. (Only valid if host name resolving has not been disabled via aui_service_dialog_set_resolve_host_name()) */
131 const AvahiAddress* aui_service_dialog_get_address(AuiServiceDialog *d);
132
133 /** Return the IP port number of the selected service */
134 guint16 aui_service_dialog_get_port(AuiServiceDialog *d);
135
136 /** Return the host name of the selected service */
137 const gchar* aui_service_dialog_get_host_name(AuiServiceDialog *d);
138
139 /** Return the TXT metadata of the selected service */
140 const AvahiStringList *aui_service_dialog_get_txt_data(AuiServiceDialog *d);
141
142 /** @} */
143
144 /** @{ \name Resolving settings */
145
146 /** Disable/Enable automatic service resolving. Disabling this feature
147  * will require you to resolve the selected service on our own. I.e. the port
148  * number, the TXT data and the host name/IP address will not be
149  * available after a service has been selected. This functionality
150  * offers a certain optimization in the traffic imposed on the
151  * network. Most people will not want to touch this. */
152 void aui_service_dialog_set_resolve_service(AuiServiceDialog *d, gboolean resolve);
153
154 /** Query the last status of aui_service_dialog_set_resolve_service() */
155 gboolean aui_service_dialog_get_resolve_service(AuiServiceDialog *d);
156
157 /** Disable/Enable automatic host name resolving. Disabling this
158  * feature will cause aui_service_dialog_get_address() return NULL in
159  * all case because avahi-ui will not resolve the host name of the
160  * selected service to an address. This is a slight optimization
161  * regarding the traffic imposed by this query to the network. By
162  * default, avahi-ui will resolve the host names of selected services. */
163 void aui_service_dialog_set_resolve_host_name(AuiServiceDialog *d, gboolean resolve);
164
165 /** Query the last status of aui_service_dialog_set_resolve_host_name() */
166 gboolean aui_service_dialog_get_resolve_host_name(AuiServiceDialog *d);
167
168 /** @} */
169
170 /** @{ \name Address family */
171
172 /** Select the address family to look for services of. This can be
173 used to look only for IPv6 services or only for IPv4 services. By
174 default avahi-ui will browse for both IPv4 and IPv6 services.*/
175 void aui_service_dialog_set_address_family(AuiServiceDialog *d, AvahiProtocol proto);
176
177 /** Query the address family we're looking for. */
178 AvahiProtocol aui_service_dialog_get_address_family(AuiServiceDialog *d);
179
180 /** @} */
181
182 G_END_DECLS
183
184 #endif