[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:
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;