From e90cdf6682cacd261b2927cc4cecf06dfe5a5447 Mon Sep 17 00:00:00 2001
From: Todd Stinson <stinson@lindenlab.com>
Date: Thu, 15 Dec 2011 10:31:25 -0800
Subject: [PATCH] Introducing the initial hooks for building the pathfinding
 linkset floater.

---
 indra/newview/CMakeLists.txt                  |  2 +
 indra/newview/app_settings/commands.xml       | 12 ++++-
 .../newview/llfloaterpathfindinglinksets.cpp  | 49 +++++++++++++++++
 indra/newview/llfloaterpathfindinglinksets.h  | 54 +++++++++++++++++++
 indra/newview/llviewerfloaterreg.cpp          |  2 +
 .../skins/default/textures/textures.xml       |  1 +
 .../xui/en/floater_pathfinding_linksets.xml   | 26 +++++++++
 .../newview/skins/default/xui/en/strings.xml  |  2 +
 8 files changed, 147 insertions(+), 1 deletion(-)
 create mode 100644 indra/newview/llfloaterpathfindinglinksets.cpp
 create mode 100644 indra/newview/llfloaterpathfindinglinksets.h
 create mode 100644 indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 0bd9866b420..13ef8f18487 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -220,6 +220,7 @@ set(viewer_SOURCE_FILES
     llfloaterobjectweights.cpp
     llfloateropenobject.cpp
     llfloaterpathfindingconsole.cpp
+    llfloaterpathfindinglinksets.cpp
     llfloaterpay.cpp
     llfloaterperms.cpp
     llfloaterpostprocess.cpp
@@ -776,6 +777,7 @@ set(viewer_HEADER_FILES
     llfloaterobjectweights.h
     llfloateropenobject.h
     llfloaterpathfindingconsole.h
+    llfloaterpathfindinglinksets.h
     llfloaterpay.h
     llfloaterperms.h
     llfloaterpostprocess.h
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index 808c92351a7..5d970c06e2e 100644
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -145,7 +145,7 @@
            is_running_function="Floater.IsOpen"
            is_running_parameters="people"
            />
-  <command name="pathfinding"
+  <command name="pathfinding_console"
            available_in_toybox="true"
            icon="Command_Pathfinding_Icon"
            label_ref="Command_Pathfinding_Label"
@@ -155,6 +155,16 @@
            is_running_function="Floater.IsOpen"
            is_running_parameters="pathfinding_console"
            />
+  <command name="pathfinding_linksets"
+           available_in_toybox="true"
+           icon="Command_PF_Linksets_Icon"
+           label_ref="Command_PF_Linksets_Label"
+           tooltip_ref="Command_PF_Linksets_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="pathfinding_linksets"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="pathfinding_linksets"
+           />
   <command name="picks"
            available_in_toybox="true"
            icon="Command_Picks_Icon"
diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp
new file mode 100644
index 00000000000..fcbc3e7cad8
--- /dev/null
+++ b/indra/newview/llfloaterpathfindinglinksets.cpp
@@ -0,0 +1,49 @@
+/** 
+ * @file llfloaterpathfindinglinksets.cpp
+ * @author William Todd Stinson
+ * @brief "Pathfinding linksets" floater, allowing manipulation of the Havok AI pathfinding settings.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llfloaterpathfindinglinksets.h"
+
+#include "llsd.h"
+
+//---------------------------------------------------------------------------
+// LLFloaterPathfindingLinksets
+//---------------------------------------------------------------------------
+
+BOOL LLFloaterPathfindingLinksets::postBuild()
+{
+	return LLFloater::postBuild();
+}
+
+LLFloaterPathfindingLinksets::LLFloaterPathfindingLinksets(const LLSD& seed)
+	: LLFloater(seed)
+{
+}
+
+LLFloaterPathfindingLinksets::~LLFloaterPathfindingLinksets()
+{
+}
diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h
new file mode 100644
index 00000000000..f5d10915a5b
--- /dev/null
+++ b/indra/newview/llfloaterpathfindinglinksets.h
@@ -0,0 +1,54 @@
+/** 
+ * @file llfloaterpathfindinglinksets.h
+ * @author William Todd Stinson
+ * @brief "Pathfinding linksets" floater, allowing manipulation of the Havok AI pathfinding settings.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERPATHFINDINGLINKSETS_H
+#define LL_LLFLOATERPATHFINDINGLINKSETS_H
+
+#include "llfloater.h"
+
+class LLSD;
+
+class LLFloaterPathfindingLinksets
+:	public LLFloater
+{
+	friend class LLFloaterReg;
+
+public:
+	virtual BOOL postBuild();
+
+protected:
+
+private:
+	// Does its own instance management, so clients not allowed
+	// to allocate or destroy.
+	LLFloaterPathfindingLinksets(const LLSD& seed);
+	virtual ~LLFloaterPathfindingLinksets();
+		
+	void onVisibilityChange(const LLSD& visible);
+};
+
+#endif // LL_LLFLOATERPATHFINDINGLINKSETS_H
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 76ad717aaed..d330befdf7a 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -84,6 +84,7 @@
 #include "llfloaterobjectweights.h"
 #include "llfloateropenobject.h"
 #include "llfloaterpathfindingconsole.h"
+#include "llfloaterpathfindinglinksets.h"
 #include "llfloaterpay.h"
 #include "llfloaterperms.h"
 #include "llfloaterpostprocess.h"
@@ -243,6 +244,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterPayUtil::registerFloater();
 
 	LLFloaterReg::add("pathfinding_console", "floater_pathfinding_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPathfindingConsole>);
+	LLFloaterReg::add("pathfinding_linksets", "floater_pathfinding_linksets.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPathfindingLinksets>);
 	LLFloaterReg::add("people", "floater_people.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
 	LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
 	LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index c082cf6ca44..ee854d96e5d 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -139,6 +139,7 @@ with the same filename but different name
   <texture name="Command_Move_Icon"         file_name="toolbar_icons/move.png"         preload="true" />
   <texture name="Command_Pathfinding_Icon"  file_name="toolbar_icons/land.png"         preload="true" />
   <texture name="Command_People_Icon"       file_name="toolbar_icons/people.png"       preload="true" />
+  <texture name="Command_PF_Linksets_Icon"  file_name="toolbar_icons/land.png"         preload="true" />
   <texture name="Command_Picks_Icon"        file_name="toolbar_icons/picks.png"        preload="true" />
   <texture name="Command_Places_Icon"       file_name="toolbar_icons/places.png"       preload="true" />
   <texture name="Command_Preferences_Icon"  file_name="toolbar_icons/preferences.png"  preload="true" />
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
new file mode 100644
index 00000000000..074ffd5f5d7
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+    open_positioning="cascading"
+    can_tear_off="false"
+    height="355"
+    layout="topleft"
+    name="floater_pathfinding_linksets"
+    help_topic="floater_pathfinding_linksets"
+    save_rect="true"
+    title="Pathfinding linksets"
+    width="950">
+  <text
+      height="13"
+      word_wrap="true"
+      use_ellipses="false"
+      type="string"
+      text_color="LabelTextColor"
+      length="1"
+      follows="left|top"
+      layout="topleft"
+      left="12"
+      top="20"
+      width="208">
+    Filter list by:
+  </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 63a55a975aa..664d60f8b59 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3677,6 +3677,7 @@ Try enclosing path to the editor with double quotes.
   <string name="Command_Move_Label">Walk / run / fly</string>
   <string name="Command_Pathfinding_Label">Pathfinding</string>
   <string name="Command_People_Label">People</string>
+  <string name="Command_PF_Linksets_Label">Pathfinding Linksets</string>
   <string name="Command_Picks_Label">Picks</string>
   <string name="Command_Places_Label">Places</string>
   <string name="Command_Preferences_Label">Preferences</string>
@@ -3703,6 +3704,7 @@ Try enclosing path to the editor with double quotes.
   <string name="Command_Move_Tooltip">Moving your avatar</string>
   <string name="Command_Pathfinding_Tooltip">Information about pathfinding</string>
   <string name="Command_People_Tooltip">Friends, groups, and nearby people</string>
+  <string name="Command_PF_Linksets_Tooltip">Manipulation of pathfinding linksets</string>
   <string name="Command_Picks_Tooltip">Places to show as favorites in your profile</string>
   <string name="Command_Places_Tooltip">Places you've saved</string>
   <string name="Command_Preferences_Tooltip">Preferences</string>
-- 
GitLab