Started infrastructure to listen to button events
[gregoa/zavai.git] / src / app_powerbutton.vala
1 /*
2  * app_powerbutton - zavai power button handling
3  *
4  * Copyright (C) 2009  Enrico Zini <enrico@enricozini.org>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 using GLib;
22
23 namespace zavai {
24 namespace ui {
25 namespace powerbutton {
26
27 /*
28 public class RaiseIcon : Gtk.StatusIcon
29 {
30         public RaiseIcon()
31         {
32                 activate += on_activate;
33                 zavai.app.visibility_changed += on_visibility_changed;
34                 update_icon();
35         }
36
37         private void on_visibility_changed(bool visible)
38         {
39                 update_icon();
40         }
41
42         private void on_activate()
43         {
44                 zavai.app.toggle_visibility();
45                 update_icon();
46         }
47
48         protected void update_icon()
49         {
50                 string name = zavai.config.icondir + "/";
51                 if (!zavai.app.visibility)
52                         name += "zavai_on.png";
53                 else
54                         name += "zavai_off.png";
55                 set_from_file(name);
56         }
57 }
58
59 public class CloseOrBack : Gtk.StatusIcon
60 {
61         public CloseOrBack()
62         {
63                 activate += on_activate;
64                 zavai.app.visibility_changed += on_visibility_changed;
65                 update_icon();
66         }
67
68         private void on_visibility_changed(bool visible)
69         {
70                 update_icon();
71         }
72
73         private void on_activate()
74         {
75                 if (zavai.app.visibility)
76                 {
77                         // Back
78                 } else {
79                         // Close current app
80                         Gdk.Window w = zavai.app.get_screen().get_active_window();
81                         if (w != zavai.app.window)
82                         {
83                                 w.destroy();
84                         }
85                 }
86         }
87
88         protected void update_icon()
89         {
90                 string name = zavai.config.icondir + "/";
91                 if (!zavai.app.visibility)
92                         name += "quit_on.png";
93                 else
94                         name += "quit_off.png";
95                 set_from_file(name);
96         }
97 }
98
99 public class WindowList : Applet
100 {
101         Wnck.Tasklist selector;
102
103         public WindowList(string label)
104         {
105                 _label = label;
106                 selector = new Wnck.Tasklist(Wnck.Screen.get_default());
107                 pack_start(selector, true, true, 0);
108         }
109 }
110 */
111
112 /*
113 RaiseIcon raise_icon;
114 CloseOrBack close_or_back;
115 WindowList window_list;
116 Launcher launcher;
117 */
118
119 public void init()
120 {
121     zavai.registry.gets("input.buttons").request("powerbutton");
122
123     /*
124         raise_icon = new RaiseIcon();
125         raise_icon.set_visible(true);
126
127         close_or_back = new CloseOrBack();
128         close_or_back.set_visible(true);
129
130         window_list = new WindowList("Current apps");
131         zavai.registry.register_applet("wm.list", window_list);
132         zavai.registry.getmenu("menu.main").add_applet("wm.list");
133
134         try {
135                 launcher = new Launcher("Run program");
136         } catch (Error e) {
137                 zavai.log.error("Not running launcher: " + e.message);
138                 launcher = null;
139         }
140
141         if (launcher != null)
142         {
143                 zavai.registry.register_applet("wm.launcher", launcher);
144                 zavai.registry.getmenu("menu.main").add_applet("wm.launcher");
145         }
146     */
147 }
148
149 }
150 }
151 }