{\r
InitializeLoggingAndConfig();\r
\r
- Settings.PIPELINE_REFRESH_INTERVAL = 2000.0f;\r
+ // Settings.PIPELINE_REFRESH_INTERVAL = 2000.0f;\r
\r
client = new GridClient();\r
client.Settings.ALWAYS_REQUEST_OBJECTS = true;\r
client.Settings.OBJECT_TRACKING = true;\r
client.Settings.ENABLE_SIMSTATS = true;\r
client.Settings.FETCH_MISSING_INVENTORY = true;\r
- client.Settings.MULTIPLE_SIMS = true;\r
+ client.Settings.MULTIPLE_SIMS = false;\r
client.Settings.SEND_AGENT_THROTTLE = true;\r
client.Settings.SEND_AGENT_UPDATES = true;\r
\r
client.Settings.LOGIN_TIMEOUT = 120 * 1000;\r
client.Settings.SIMULATOR_TIMEOUT = 120 * 1000;\r
client.Settings.USE_INTERPOLATION_TIMER = false;\r
+ client.Settings.MAX_CONCURRENT_TEXTURE_DOWNLOADS = 20;\r
\r
netcom = new RadegastNetcom(client);\r
imageCache = new ImageCache();\r
using System;\r
using System.Collections;\r
using System.Collections.Generic;\r
-using System.ComponentModel;\r
using System.Drawing;\r
-using System.Data;\r
-using System.Linq;\r
-using System.Text;\r
using System.Windows.Forms;\r
using OpenMetaverse;\r
\r
private TreeNode invRootNode;\r
private string newItemName = string.Empty;\r
private List<UUID> fetchedFolders = new List<UUID>();\r
+ private System.Threading.Timer _EditTimer;\r
+ private TreeNode _EditNode;\r
\r
#region Construction and disposal\r
public InventoryConsole(RadegastInstance instance)\r
invRootNode = AddDir(null, Inventory.RootFolder);\r
invTree.Nodes[0].Expand();\r
\r
+ _EditTimer = new System.Threading.Timer(OnLabelEditTimer, null, System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite);\r
+\r
// Callbacks\r
client.Avatars.OnAvatarNames += new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
client.Inventory.Store.OnInventoryObjectAdded += new Inventory.InventoryObjectAdded(Store_OnInventoryObjectAdded);\r
else // Update\r
{\r
currentNode.Tag = newObject;\r
- currentNode.Text = newObject.Name;\r
+ currentNode.Text = ItemLabel(newObject, false);\r
currentNode.Name = newObject.Name;\r
}\r
}\r
}\r
}\r
\r
+ public string ItemLabel(InventoryBase invBase, bool returnRaw)\r
+ {\r
+ if (returnRaw || (invBase is InventoryFolder))\r
+ return invBase.Name;\r
+\r
+ InventoryItem item = (InventoryItem)invBase;\r
+\r
+ string raw = item.Name;\r
+\r
+ if ((item.Permissions.OwnerMask & PermissionMask.Modify) == 0)\r
+ raw += " (no modify)";\r
+\r
+ if ((item.Permissions.OwnerMask & PermissionMask.Copy) == 0)\r
+ raw += " (no copy)";\r
+\r
+ if ((item.Permissions.OwnerMask & PermissionMask.Transfer) == 0)\r
+ raw += " (no trasnfer)";\r
+\r
+ return raw;\r
+ }\r
+\r
void invTree_MouseClick(object sender, MouseEventArgs e)\r
{\r
TreeNode node = invTree.GetNodeAt(new Point(e.X, e.Y));\r
}\r
\r
\r
- if (folder.PreferredType == AssetType.Unknown)\r
+ //if (folder.PreferredType == AssetType.Unknown)\r
{\r
ctxInv.Items.Add(new ToolStripSeparator());\r
ctxItem = new ToolStripMenuItem("Delete", null, OnInvContextClick);\r
List<InventoryBase> contents = client.Inventory.Store.GetContents(f);\r
foreach (InventoryBase item in contents)\r
{\r
- UpdateBase(node, item);\r
+ Store_OnInventoryObjectUpdated(item, item);\r
}\r
}\r
catch (Exception)\r
}\r
}\r
\r
+ private bool _EditingNode = false;\r
+\r
+ private void OnLabelEditTimer(object sender)\r
+ {\r
+ if (_EditNode == null || !(_EditNode.Tag is InventoryBase))\r
+ return;\r
+\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new MethodInvoker(delegate()\r
+ {\r
+ OnLabelEditTimer(sender);\r
+ }\r
+ ));\r
+ return;\r
+ }\r
+\r
+ Logger.DebugLog("In OnLabelEditTimer()");\r
+ _EditingNode = true;\r
+ _EditNode.Text = ItemLabel((InventoryBase)_EditNode.Tag, true);\r
+ _EditNode.BeginEdit();\r
+ }\r
+\r
private void invTree_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)\r
{\r
- if (e.Node != null &&\r
- e.Node.Tag is InventoryFolder &&\r
- ((InventoryFolder)e.Node.Tag).PreferredType != AssetType.Unknown)\r
+ if (e.Node == null ||\r
+ !(e.Node.Tag is InventoryBase) ||\r
+ (e.Node.Tag is InventoryFolder && ((InventoryFolder)e.Node.Tag).PreferredType != AssetType.Unknown)\r
+ )\r
+ {\r
+ e.CancelEdit = true;\r
+ return;\r
+ }\r
+\r
+ if (_EditingNode)\r
+ {\r
+ _EditingNode = false;\r
+ }\r
+ else\r
{\r
e.CancelEdit = true;\r
+ _EditNode = e.Node;\r
+ _EditTimer.Change(20, System.Threading.Timeout.Infinite);\r
}\r
}\r
\r
private void invTree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)\r
{\r
+ Logger.DebugLog("In invTree_AfterLabelEdit()");\r
+\r
if (string.IsNullOrEmpty(e.Label))\r
{\r
+ if (e.Node.Tag is InventoryBase)\r
+ {\r
+ e.Node.Text = ItemLabel((InventoryBase)e.Node.Tag, false);\r
+ }\r
e.CancelEdit = true;\r
return;\r
}\r
{\r
InventoryItem item = (InventoryItem)e.Node.Tag;\r
item.Name = e.Label;\r
+ e.Node.Text = ItemLabel((InventoryBase)item, false);\r
client.Inventory.MoveItem(item.UUID, item.ParentUUID, item.Name);\r
}\r
\r
}\r
}\r
\r
- TreeNode UpdateBase(TreeNode parent, InventoryBase obj)\r
- {\r
- TreeNode existing = null;\r
- foreach (TreeNode node in parent.Nodes)\r
- {\r
- if (node.Tag is InventoryBase && ((InventoryBase)node.Tag).UUID == obj.UUID)\r
- {\r
- existing = node;\r
- break;\r
- }\r
- }\r
-\r
- if (existing != null)\r
- {\r
- parent.Nodes.Remove(existing);\r
- }\r
-\r
- return AddBase(parent, obj);\r
-\r
- }\r
-\r
TreeNode AddDir(TreeNode parentNode, InventoryFolder f)\r
{\r
TreeNode dirNode = new TreeNode();\r
{\r
TreeNode itemNode = new TreeNode();\r
itemNode.Name = item.Name;\r
- itemNode.Text = item.Name;\r
+ itemNode.Text = ItemLabel(item, false);\r
itemNode.Tag = item;\r
int img = -1;\r
if (item is InventoryWearable)\r
<Compile Include="GUI\Consoles\MasterTab.Designer.cs">\r
<DependentUpon>MasterTab.cs</DependentUpon>\r
</Compile>\r
- <Compile Include="GUI\Consoles\Notecard.cs">\r
+ <Compile Include="GUI\Consoles\Assets\Notecard.cs">\r
<SubType>UserControl</SubType>\r
</Compile>\r
- <Compile Include="GUI\Consoles\Notecard.Designer.cs">\r
+ <Compile Include="GUI\Consoles\Assets\Notecard.Designer.cs">\r
<DependentUpon>Notecard.cs</DependentUpon>\r
</Compile>\r
<Compile Include="GUI\Consoles\OutfitTextures.cs">\r
<Compile Include="GUI\Consoles\Preferences\PrefTextConsole.Designer.cs">\r
<DependentUpon>PrefTextConsole.cs</DependentUpon>\r
</Compile>\r
- <Compile Include="GUI\Consoles\SLImageHandler.cs">\r
+ <Compile Include="GUI\Consoles\Assets\SLImageHandler.cs">\r
<SubType>UserControl</SubType>\r
</Compile>\r
- <Compile Include="GUI\Consoles\SLImageHandler.Designer.cs">\r
+ <Compile Include="GUI\Consoles\Assets\SLImageHandler.Designer.cs">\r
<DependentUpon>SLImageHandler.cs</DependentUpon>\r
</Compile>\r
<Compile Include="GUI\Dialogs\DebugLog.cs">\r
<DependentUpon>MasterTab.cs</DependentUpon>\r
<SubType>Designer</SubType>\r
</EmbeddedResource>\r
- <EmbeddedResource Include="GUI\Consoles\Notecard.resx">\r
+ <EmbeddedResource Include="GUI\Consoles\Assets\Notecard.resx">\r
<DependentUpon>Notecard.cs</DependentUpon>\r
<SubType>Designer</SubType>\r
</EmbeddedResource>\r
<SubType>Designer</SubType>\r
<DependentUpon>PrefTextConsole.cs</DependentUpon>\r
</EmbeddedResource>\r
- <EmbeddedResource Include="GUI\Consoles\SLImageHandler.resx">\r
+ <EmbeddedResource Include="GUI\Consoles\Assets\SLImageHandler.resx">\r
<DependentUpon>SLImageHandler.cs</DependentUpon>\r
<SubType>Designer</SubType>\r
</EmbeddedResource>\r