summaryrefslogtreecommitdiff
path: root/applets/notification_area/na-tray-manager.h
blob: d1d585fe0d3afc64f18095dda3e3466599103f61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* na-tray-manager.h
 * Copyright (C) 2002 Anders Carlsson <andersca@gnu.org>
 * Copyright (C) 2003-2006 Vincent Untz
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 *
 * Used to be: eggtraymanager.h
 */

#ifndef __NA_TRAY_MANAGER_H__
#define __NA_TRAY_MANAGER_H__

#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
#endif
#include <gtk/gtk.h>

#include "na-tray-child.h"

G_BEGIN_DECLS

#define NA_TYPE_TRAY_MANAGER			(na_tray_manager_get_type ())
#define NA_TRAY_MANAGER(obj)			(G_TYPE_CHECK_INSTANCE_CAST ((obj), NA_TYPE_TRAY_MANAGER, NaTrayManager))
#define NA_TRAY_MANAGER_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST ((klass), NA_TYPE_TRAY_MANAGER, NaTrayManagerClass))
#define NA_IS_TRAY_MANAGER(obj)			(G_TYPE_CHECK_INSTANCE_TYPE ((obj), NA_TYPE_TRAY_MANAGER))
#define NA_IS_TRAY_MANAGER_CLASS(klass)		(G_TYPE_CHECK_CLASS_TYPE ((klass), NA_TYPE_TRAY_MANAGER))
#define NA_TRAY_MANAGER_GET_CLASS(obj)		(G_TYPE_INSTANCE_GET_CLASS ((obj), NA_TYPE_TRAY_MANAGER, NaTrayManagerClass))

typedef struct _NaTrayManager	    NaTrayManager;
typedef struct _NaTrayManagerClass  NaTrayManagerClass;

struct _NaTrayManager
{
  GObject parent_instance;

#ifdef GDK_WINDOWING_X11
  GdkAtom selection_atom;
  Atom    opcode_atom;
#if GTK_CHECK_VERSION (3, 0, 0)
  Atom message_data_atom;
#endif
#endif

  GtkWidget *invisible;
  GdkScreen *screen;
  GtkOrientation orientation;
  gint padding;
  gint icon_size;
#if GTK_CHECK_VERSION (3, 0, 0)
  GdkRGBA fg;
  GdkRGBA error;
  GdkRGBA warning;
  GdkRGBA success;
#else
  GdkColor fg;
  GdkColor error;
  GdkColor warning;
  GdkColor success;
#endif

  GList *messages;
  GHashTable *socket_table;
};

struct _NaTrayManagerClass
{
  GObjectClass parent_class;

  void (* tray_icon_added)   (NaTrayManager      *manager,
			      NaTrayChild        *child);
  void (* tray_icon_removed) (NaTrayManager      *manager,
			      NaTrayChild        *child);

  void (* message_sent)      (NaTrayManager      *manager,
			      NaTrayChild        *child,
			      const gchar        *message,
			      glong               id,
			      glong               timeout);

  void (* message_cancelled) (NaTrayManager      *manager,
			      NaTrayChild        *child,
			      glong               id);

  void (* lost_selection)    (NaTrayManager      *manager);
};

GType           na_tray_manager_get_type        (void);

gboolean        na_tray_manager_check_running   (GdkScreen          *screen);
NaTrayManager  *na_tray_manager_new             (void);
gboolean        na_tray_manager_manage_screen   (NaTrayManager      *manager,
						 GdkScreen          *screen);
void            na_tray_manager_set_orientation (NaTrayManager      *manager,
						 GtkOrientation      orientation);
GtkOrientation  na_tray_manager_get_orientation (NaTrayManager      *manager);
void            na_tray_manager_set_padding     (NaTrayManager      *manager,
						 gint                padding);
void            na_tray_manager_set_icon_size   (NaTrayManager      *manager,
						 gint                padding);
void            na_tray_manager_set_colors      (NaTrayManager      *manager,
#if GTK_CHECK_VERSION (3, 0, 0)
						 GdkRGBA            *fg,
						 GdkRGBA            *error,
						 GdkRGBA            *warning,
						 GdkRGBA            *success);
#else
						 GdkColor           *fg,
						 GdkColor           *error,
						 GdkColor           *warning,
						 GdkColor           *success);
#endif


G_END_DECLS

#endif /* __NA_TRAY_MANAGER_H__ */