fa1d4d037bb163a3f839a2a3e34dc985e83afe3a
[led-pattern-ed] / src / led-pattern-editor.vala
1 /* This file is part of LED Pattern Editor.
2  *
3  * Copyright (C) 2010 Philipp Zabel
4  *
5  * LED Pattern Editor is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * LED Pattern Editor is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with LED Pattern Editor. If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 public static Osso.Status execute (Osso.Context osso, void* data, bool user_activated) {
20         var window = data as Gtk.Window;
21
22         var list = mce_ini_parse ();
23
24         var dialog = new LedPatternDialog (list, osso);
25         dialog.set_transient_for (window);
26
27         int response = dialog.run ();
28         dialog.destroy ();
29         string command = null;
30         if (response == Gtk.ResponseType.OK) {
31                 mce_ini_store (list);
32                 Hildon.Banner.show_information (window, null, "Applying changes and restarting MCE ...");
33                 command = "sudo /usr/bin/led-pattern-helper save %s".printf ("/tmp/mce.ini");
34         } else if (response == LedPatternDialog.Response.RESTORE) {
35                 Hildon.Banner.show_information (window, null, "Restoring defaults and restarting MCE ...");
36                 command = "sudo /usr/bin/led-pattern-helper save %s".printf ("/etc/mce/mce.ini.orig");
37         }
38         if (command != null) {
39                 try {
40                         int exit_status;
41                         string error;
42                         Process.spawn_command_line_sync (command, null, out error, out exit_status);
43                         if (exit_status != 0) {
44                                 var information = "Exit status: %d\n%s".printf (exit_status, error);
45                                 var note = new Hildon.Note.information (window, information);
46                                 note.run ();
47                         }
48                 } catch (SpawnError e) {
49                         Hildon.Banner.show_information (null, null, e.message);
50                 }
51         }
52
53         return Osso.Status.OK;
54 }
55
56 public static Osso.Status save_state (Osso.Context osso, void* data) {
57         return Osso.Status.OK;
58 }