Added save functionality
[Nebula.git] / main.cs
diff --git a/main.cs b/main.cs
index bdfdd49..f9570c5 100644 (file)
--- a/main.cs
+++ b/main.cs
@@ -46,6 +46,7 @@ public class Nebula {
 
        [GLib.ConnectBefore ()]
        static void KeyPress(object o, KeyPressEventArgs args) {
+               TextInput input;
                if ((args.Event.State & Gdk.ModifierType.ControlMask) != 0) {
                        switch(args.Event.Key) {
                        case Gdk.Key.n:
@@ -53,20 +54,38 @@ public class Nebula {
                                display.SetDocument(doc);
                                break;
                        case Gdk.Key.o:
-                               TextInput filename = new FileSelector();
-                               stack.PackEnd(filename);
-                               SelectInput(filename);
-                               filename.Show();
-                               filename.Selected += delegate(object o2, TextInputEventArgs t) {
+                               input = new FileSelector();
+                               stack.PackEnd(input);
+                               SelectInput(input);
+                               input.Show();
+                               input.Selected += delegate(object o2, TextInputEventArgs t) {
                                        if (t.Value != null) {
                                                doc = new TextDocument(t.Value);
                                                display.SetDocument(doc);
                                        }
                                        SelectInput(display);
-                                       stack.Remove(filename);
-                                       filename.Destroy();
+                                       stack.Remove(input);
+                                       input.Destroy();
                                };
                                break;
+                       case Gdk.Key.s:
+                               if (doc.filename == null) {
+                                       input = new FileSelector();
+                                       stack.PackEnd(input);
+                                       SelectInput(input);
+                                       input.Show();
+                                       input.Selected += delegate(object o2, TextInputEventArgs t) {
+                                               if (t.Value != null) {
+                                                       doc.Save(t.Value);
+                                               }
+                                               SelectInput(display);
+                                               stack.Remove(input);
+                                               input.Destroy();
+                                       };
+                               } else {
+                                       doc.Save();
+                               }
+                               break;
                        case Gdk.Key.q:
                                Application.Quit();
                                break;