From 5c4bdb4a1fd668012674af76e25dd991f5bbc1de Mon Sep 17 00:00:00 2001
From: Gijs de Rooy <gijsrooy@hotmail.com>
Date: Sat, 22 Jan 2011 22:49:25 +0100
Subject: [PATCH] Revert adb57b8: screenshot directory dialog

---
 Nasal/gui.nas              |  75 -----------
 gui/dialogs/screenshot.xml | 261 -------------------------------------
 gui/menubar.xml            |   7 -
 3 files changed, 343 deletions(-)
 delete mode 100644 gui/dialogs/screenshot.xml

diff --git a/Nasal/gui.nas b/Nasal/gui.nas
index 1a616a8d4..1e43e400b 100644
--- a/Nasal/gui.nas
+++ b/Nasal/gui.nas
@@ -532,54 +532,6 @@ var FileSelector = {
     },
 };
 
-##
-# ScreenshotSelector class (derived from Dialog class).
-#
-# SYNOPSIS: DirectorySelector.new(<callback>, <title>, <button> [, <pattern> [, <dir>]])
-#
-#         callback ... callback function that gets return value as first argument
-#         title    ... dialog title
-#         button   ... button text (should say "Save", "Load", etc. and not just "OK")
-#         pattern  ... array with shell pattern or nil (which is equivalent to "*")
-#         dir      ... starting dir ($FG_ROOT if unset)
-
-var ScreenshotSelector = {
-    new: func(callback, title, button, pattern = nil, dir = "") {
-        var name = "screenshot";
-        ## var data = props.globals.getNode("/sim/gui/dialogs/", 1);
-        # for (var i = 1; 1; i += 1)
-        #    if (data.getNode(name ~ i, 0) == nil)
-        #        break;
-        data = props.globals.getNode("sim/gui/dialogs/screenshot", 1);
-
-        var m = Dialog.new(data.getNode("dialog", 1), "gui/dialogs/screenshot.xml", name);
-        m.parents = [ScreenshotSelector, Dialog];
-        m.data = data;
-        m.set_title(title);
-        m.set_button(button);
-        m.set_directory(dir);
-        m.set_pattern(pattern);
-        m.cblistener = setlistener(data.getNode("path", 1), callback);
-        return m;
-    },
-    # setters only take effect after the next call to open()
-    set_title: func(title) { me.data.getNode("title", 1).setValue(title) },
-    set_button: func(button) { me.data.getNode("button", 1).setValue(button) },
-    set_directory: func(dir) { me.data.getNode("directory", 1).setValue(dir) },
-    set_pattern: func(pattern) {
-        me.data.removeChildren("pattern");
-        if (pattern != nil)
-            forindex (var i; pattern)
-                me.data.getChild("pattern", i, 1).setValue(pattern[i]);
-    },
-    del: func {
-        me.close();
-        delete(me.instance, me.name);
-        removelistener(me.cblistener);
-        me.data.remove();
-    },
-};
-
 
 ##
 # Save/load flight menu functions.
@@ -609,33 +561,6 @@ var load_flight = func {
 }
 
 
-##
-# Save screenshot menu function.
-#
-var save_screenshot_sel = nil;
-var save_screenshot = func {
-    foreach (var n; props.globals.getNode("/sim/presets").getChildren())
-        n.setAttribute("archive", 1);
-    var save = func(n) {
-		save_screenshot_sel.close();
-		setprop("/sim/paths/screenshot-dir", n.getValue());
-		var hide_menubar = getprop("sim/gui/dialogs/screenshot/hide-menubar");
-		if (hide_menubar == 1){
-			menu_visibility = getprop("/sim/menubar/visibility");
-			setprop("/sim/menubar/visibility",0);
-			}
-		settimer(func { fgcommand("screen-capture") },0);
-		if (hide_menubar == 1){
-			settimer(func { setprop("/sim/menubar/visibility",menu_visibility) },0);
-			}
-		}
-    if (save_screenshot_sel == nil)
-        save_screenshot_sel = ScreenshotSelector.new(save, "Save Screenshot", "Take screenshot",
-                , getprop("/sim/paths/screenshot-dir"),);
-    save_screenshot_sel.open();
-}
-
-
 ##
 # Open property browser with given target path.
 #
diff --git a/gui/dialogs/screenshot.xml b/gui/dialogs/screenshot.xml
deleted file mode 100644
index 9e0671bd9..000000000
--- a/gui/dialogs/screenshot.xml
+++ /dev/null
@@ -1,261 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Ctrl-click on "."    toggles display of hidden Unix filex (dotfiles)
- Ctrl-click on ".."   enters $FG_ROOT
- Shift-click on ".."  enters $FG_HOME
- Alt-click on ".."    enters current working directory
--->
-
-<PropertyList>
-	<name>screenshot</name>
-	<dialog-name>screenshot</dialog-name>
-	<layout>vbox</layout>
-	<resizable>true</resizable>
-	<pref-width>450</pref-width>
-
-	<group>
-		<layout>hbox</layout>
-		<empty><stretch>1</stretch></empty>
-
-		<text>
-			<label>Select directory</label>
-		</text>
-
-		<empty><stretch>1</stretch></empty>
-
-		<button>
-			<pref-width>16</pref-width>
-			<pref-height>16</pref-height>
-			<legend></legend>
-			<default>1</default>
-			<keynum>27</keynum>
-			<border>2</border>
-			<binding>
-				<command>nasal</command>
-				<script>close()</script>
-			</binding>
-			<binding>
-				<command>dialog-close</command>
-			</binding>
-		</button>
-	</group>
-
-	<hrule/>
-
-	<input>
-		<name>dir-input</name>
-		<pref-width>442</pref-width>
-		<halign>fill</halign>
-		<property>/sim/gui/dialogs/screenshot/directory</property>
-		<live>1</live>
-		<binding>
-			<command>dialog-apply</command>
-			<object-name>dir-input</object-name>
-		</binding>
-		<binding>
-			<command>nasal</command>
-			<script>dir_input()</script>
-		</binding>
-	</input>
-
-	<list>
-		<name>list</name>
-		<halign>fill</halign>
-		<valign>fill</valign>
-		<stretch>true</stretch>
-		<pref-height>300</pref-height>
-		<property>/sim/gui/dialogs/screenshot/selection</property>
-		<binding>
-			<command>dialog-apply</command>
-			<object-name>list</object-name>
-		</binding>
-		<binding>
-			<command>nasal</command>
-			<script>select()</script>
-		</binding>
-	</list>
-	
-	<group>
-		<layout>hbox</layout>
-		
-		<checkbox>
-			<halign>left</halign>
-			<label>Hide menubar from screenshot</label>
-			<name>hide-menubar</name>
-			<property>/sim/gui/dialogs/screenshot/hide-menubar</property>
-			<binding>
-				<command>dialog-apply</command>
-				<object-name>hide-menubar</object-name>
-			</binding>
-		</checkbox>
-
-		<button>
-			<legend>OK</legend>
-			<live>1</live>
-			<pref-width>200</pref-width>
-			<default>true</default>
-			<binding>
-				<command>dialog-apply</command>
-			</binding>
-			<binding>
-				<command>nasal</command>
-				<script>ok()</script>
-			</binding>
-			<binding>
-				<command>dialog-close</command>
-			</binding>
-		</button>
-	</group>
-
-	<nasal>
-		<open>
-			var self = cmdarg();
-			var list = self.getNode("list");
-
-			# cloning
-			var dlgname = self.getNode("name").getValue();
-			self.getNode("input/property").setValue("/sim/gui/dialogs/" ~ dlgname ~ "/directory");
-			self.getNode("list/property").setValue("/sim/gui/dialogs/" ~ dlgname ~ "/selection");
-			# self.getNode("group[1]/input/property").setValue("/sim/gui/dialogs/" ~ dlgname ~ "/selection");
-
-			var dlg = props.globals.getNode("/sim/gui/dialogs/" ~ dlgname, 1);
-			var selection = dlg.getNode("selection", 1);
-			var title = dlg.getNode("title", 1);
-			var button = dlg.getNode("button", 1);
-			var dir = dlg.getNode("directory", 1);
-			var file = dlg.getNode("file", 1);
-			var path = dlg.getNode("path", 1);
-			var dotfiles = dlg.getNode("dotfiles", 1);
-			dotfiles.setBoolValue(dotfiles.getValue());
-
-			var kbdctrl = props.globals.getNode("/devices/status/keyboard/ctrl", 1);
-			var kbdshift = props.globals.getNode("/devices/status/keyboard/shift", 1);
-			var kbdalt = props.globals.getNode("/devices/status/keyboard/alt", 1);
-			var current = { dir : "", file : "" };
-			var pattern = [];
-			foreach (var p; dlg.getChildren("pattern"))
-				append(pattern, p.getValue());
-
-			var matches = func(s) {
-				foreach (var p; pattern)
-					if (string.match(s, p))
-						return 1;
-				return 0;
-			}
-
-			var update = func(d) {
-				var entries = directory(d);
-				if (entries == nil)  # dir doesn't exist or no permissions
-					return 0;
-
-				var files = [];
-				var dirs = [];
-				var hide = !dotfiles.getValue();
-				foreach (var e; entries) {
-					if (e == ".") {
-						append(dirs, e);
-						continue;
-					}
-					if (e == "..") {
-						if (d != "/")
-							append(dirs, e);
-						continue;
-					}
-					if (hide and e[0] == `.`)
-						continue;
-
-					var stat = io.stat(d ~ "/" ~ e);
-					if (stat == nil)  # dead link
-						continue;
-
-					if (stat[11] == "dir")
-						append(dirs, e ~ "/");
-					elsif (!size(pattern) or matches(e))
-						append(files, e);
-				}
-
-				list.removeChildren("value");
-				var entries = sort(dirs, cmp) ~ sort(files, cmp);
-				forindex (var i; entries)
-					list.getChild("value", i, 1).setValue(entries[i]);
-
-				dir.setValue(d);
-				gui.dialog_update(dlgname, "dir-input", "list");
-				return 1;
-			}
-
-			var select = func {
-				var e = selection.getValue();
-				current.file = "";
-				var new = nil;
-				if (e == ".") {
-					new = current.dir;
-					if (kbdctrl.getValue())
-						dotfiles.setBoolValue(!dotfiles.getValue());
-				} elsif (e == "..") {
-					if (kbdctrl.getValue())
-						new = getprop("/sim/fg-root");
-					elsif (kbdshift.getValue())
-						new = getprop("/sim/fg-home");
-					elsif (kbdalt.getValue())
-						new = getprop("/sim/fg-current");
-					else
-						new = current.dir ~ "/..";
-				} elsif (e[size(e) - 1] == `/`) {
-					new = current.dir ~ "/" ~ e;
-				} else {
-					current.file = e;
-					gui.dialog_update(dlgname, "screenshot");
-				}
-				if (new != nil) {
-					var p = string.normpath(new);
-					if (update(p))
-						current.dir = p;
-					selection.setValue("");
-				}
-			}
-
-			var file_input = func {
-				current.file = selection.getValue();
-			}
-
-			var dir_input = func {
-				var p = string.normpath(dir.getValue());
-				if (update(p))
-					current.dir = p;
-				gui.dialog_update(dlgname, "list");
-			}
-
-			var close = func {
-				call(func { gui.Dialog.instance[dlgname].close() }, nil, var err = []);
-			}
-
-			var ok = func {
-				dir_input();
-				file_input();
-				var p = string.normpath(current.dir ~ "/" ~ current.file);
-				var stat = io.stat(p);
-				path.setValue(stat != nil and stat[11] == "dir" ? p ~ "/" : p);
-				file.setValue(current.file);
-				close();
-			}
-
-			var op = button.getValue();
-			if (op == nil or op == "")
-				op = "OK";
-			self.getNode("group[1]/button/legend").setValue(op);
-
-			var t = title.getValue();
-			if (t == nil or t == "")
-				t = "Select File";
-			self.getNode("group[0]/text/label").setValue(t);
-
-			current.dir = (var d = dir.getValue()) != nil and d != "" ? d : getprop("/sim/fg-current");
-			current.file = (var d = file.getValue()) != nil and d != "" ? d : "";
-			gui.dialog_update(dlgname, "screenshot"); ## dir-input ?
-			update(string.normpath(current.dir));
-			dir.setValue(current.dir);
-		</open>
-	</nasal>
-</PropertyList>
diff --git a/gui/menubar.xml b/gui/menubar.xml
index ca7cf38f8..0d2cc528f 100644
--- a/gui/menubar.xml
+++ b/gui/menubar.xml
@@ -67,13 +67,6 @@
 				</script>
 			</binding>
 		</item>
-		<item>
-			<label>Screesnhot (set directory)</label>
-			<binding>
-				<command>nasal</command>
-				<script>gui.save_screenshot()</script>
-			</binding>
-		</item>
 		<!--
 		<item>
         <label>Last snapshot</label>