~cszikszoy/do-plugins/pastebin

« back to all changes in this revision

Viewing changes to GNOME-Session/src/PowerManagement.cs

  • Committer: David Siegel
  • Date: 2008-01-24 04:48:52 UTC
  • Revision ID: dave@ja7gggggggg9-20080124044852-9vnlo01h9kkyz12a
Added Epiphany plugin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* PowerManagement.cs
2
 
 *
3
 
 * GNOME Do is the legal property of its developers. Please refer to the
4
 
 * COPYRIGHT file distributed with this
5
 
 * source distribution.
6
 
 *
7
 
 * This program is free software: you can redistribute it and/or modify
8
 
 * it under the terms of the GNU General Public License as published by
9
 
 * the Free Software Foundation, either version 3 of the License, or
10
 
 * (at your option) any later version.
11
 
 *
12
 
 * This program is distributed in the hope that it will be useful,
13
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
 
 * GNU General Public License for more details.
16
 
 *
17
 
 * You should have received a copy of the GNU General Public License
18
 
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19
 
 */
20
 
 
21
 
using System;
22
 
using System.Diagnostics;
23
 
 
24
 
using NDesk.DBus;
25
 
using org.freedesktop.DBus;
26
 
 
27
 
namespace GNOME.Session
28
 
{
29
 
 
30
 
        class PowerManagement
31
 
        {
32
 
                [Interface ("org.freedesktop.PowerManagement")]
33
 
                interface IPowerManagement
34
 
                {
35
 
                        void Shutdown ();
36
 
                        void Reboot ();
37
 
                        void Hibernate ();
38
 
                        void Suspend ();
39
 
                }
40
 
 
41
 
                private const string ObjectPath = "/org/freedesktop/PowerManagement";
42
 
                private const string BusName = "org.freedesktop.PowerManagement";
43
 
 
44
 
                private static IPowerManagement BusInstance
45
 
                {
46
 
                        get {
47
 
                                try {
48
 
                                        return Bus.Session.GetObject<IPowerManagement> (BusName,
49
 
                                                        new ObjectPath (ObjectPath));
50
 
                                } catch {
51
 
                                        return null;
52
 
                                }
53
 
                        }
54
 
                }
55
 
 
56
 
                public static void Shutdown ()
57
 
                {
58
 
                        try {
59
 
                                BusInstance.Shutdown ();
60
 
                        } catch {
61
 
                                Console.Error.WriteLine ("Could not find PowerManagement on D-Bus.");
62
 
                        }
63
 
                }
64
 
 
65
 
                public static void Hibernate ()
66
 
                {
67
 
                        try {
68
 
                                BusInstance.Hibernate ();
69
 
                        } catch {
70
 
                                Console.Error.WriteLine ("Could not find PowerManagement on D-Bus.");
71
 
                        }
72
 
                }
73
 
 
74
 
                public static void Reboot ()
75
 
                {
76
 
                        try {
77
 
                                BusInstance.Reboot ();
78
 
                        } catch {
79
 
                                Console.Error.WriteLine ("Could not find PowerManagement on D-Bus.");
80
 
                        }
81
 
                }
82
 
 
83
 
                public static void Suspend ()
84
 
                {
85
 
                        try {
86
 
                                BusInstance.Suspend ();
87
 
                        } catch {
88
 
                                Console.Error.WriteLine ("Could not find PowerManagement on D-Bus.");
89
 
                        }
90
 
                }
91
 
 
92
 
                public static void Logout ()
93
 
                {
94
 
                        try {
95
 
                                Process.Start ("gnome-session-save", "--kill --silent");
96
 
                        } catch (Exception e) {
97
 
                                Console.Error.WriteLine ("Could not end GNOME session: " + e.Message);
98
 
                        }
99
 
                }
100
 
        }
101
 
}