From af97cb2d48f779b9d1ce18139040dba0ed8d7897 Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Thu, 9 Oct 2008 17:19:29 +0000 Subject: [PATCH] * Fixed [LIBOMV-370], problem with Prebuild generation for WinForms projects * Removing more scaling code from Meshmerizer plugin * Removed dead GUITestClient project git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2285 52acb1d6-8a22-11de-b505-999d5b087335 --- .../Extruder.cs | 32 ---- .../src/Core/Targets/VSGenericTarget.cs | 2 +- .../examples/GUITestClient/GUITestClient.cs | 20 --- Programs/examples/GUITestClient/Interface.cs | 23 --- .../Interfaces/HeightmapInterface.cs | 86 ---------- .../Interfaces/MinimapInterface.cs | 145 ----------------- .../Interfaces/TeleportInterface.cs | 79 --------- .../GUITestClient/Properties/AssemblyInfo.cs | 33 ---- .../Properties/Resources.Designer.cs | 63 ------- .../GUITestClient/Properties/Resources.resx | 117 ------------- .../Properties/Settings.Designer.cs | 26 --- .../Properties/Settings.settings | 7 - .../GUITestClient/frmTestClient.Designer.cs | 154 ------------------ .../examples/GUITestClient/frmTestClient.cs | 136 ---------------- .../examples/GUITestClient/frmTestClient.resx | 120 -------------- bin/Prebuild.exe | Bin 241664 -> 241664 bytes prebuild.xml | 26 --- 17 files changed, 1 insertion(+), 1068 deletions(-) delete mode 100644 Programs/examples/GUITestClient/GUITestClient.cs delete mode 100644 Programs/examples/GUITestClient/Interface.cs delete mode 100644 Programs/examples/GUITestClient/Interfaces/HeightmapInterface.cs delete mode 100644 Programs/examples/GUITestClient/Interfaces/MinimapInterface.cs delete mode 100644 Programs/examples/GUITestClient/Interfaces/TeleportInterface.cs delete mode 100644 Programs/examples/GUITestClient/Properties/AssemblyInfo.cs delete mode 100644 Programs/examples/GUITestClient/Properties/Resources.Designer.cs delete mode 100644 Programs/examples/GUITestClient/Properties/Resources.resx delete mode 100644 Programs/examples/GUITestClient/Properties/Settings.Designer.cs delete mode 100644 Programs/examples/GUITestClient/Properties/Settings.settings delete mode 100644 Programs/examples/GUITestClient/frmTestClient.Designer.cs delete mode 100644 Programs/examples/GUITestClient/frmTestClient.cs delete mode 100644 Programs/examples/GUITestClient/frmTestClient.resx diff --git a/OpenMetaverse.Rendering.Meshmerizer/Extruder.cs b/OpenMetaverse.Rendering.Meshmerizer/Extruder.cs index 884408be..be31560e 100644 --- a/OpenMetaverse.Rendering.Meshmerizer/Extruder.cs +++ b/OpenMetaverse.Rendering.Meshmerizer/Extruder.cs @@ -34,8 +34,6 @@ namespace OpenMetaverse.Rendering { class Extruder { - public PhysicsVector size; - public float taperTopFactorX = 1f; public float taperTopFactorY = 1f; public float taperBotFactorX = 1f; @@ -210,21 +208,6 @@ namespace OpenMetaverse.Rendering } while (!done); // loop until all the layers in the path are completed - // scale the mesh to the desired size - float xScale = size.X; - float yScale = size.Y; - float zScale = size.Z; - - foreach (MeshmerizerVertex v in result.vertices) - { - if (v != null) - { - v.X *= xScale; - v.Y *= yScale; - v.Z *= zScale; - } - } - return result; } @@ -413,21 +396,6 @@ namespace OpenMetaverse.Rendering } } while (!done); // loop until all the layers in the path are completed - // scale the mesh to the desired size - float xScale = size.X; - float yScale = size.Y; - float zScale = size.Z; - - foreach (MeshmerizerVertex v in result.vertices) - { - if (v != null) - { - v.X *= xScale; - v.Y *= yScale; - v.Z *= zScale; - } - } - return result; } } diff --git a/Programs/Prebuild/src/Core/Targets/VSGenericTarget.cs b/Programs/Prebuild/src/Core/Targets/VSGenericTarget.cs index ccbeb743..0855d88c 100644 --- a/Programs/Prebuild/src/Core/Targets/VSGenericTarget.cs +++ b/Programs/Prebuild/src/Core/Targets/VSGenericTarget.cs @@ -369,7 +369,7 @@ namespace Prebuild.Core.Targets string autogen_name = file.Substring(0, file.LastIndexOf('.')) + ".Designer.cs"; string dependent_name = file.Substring(0, file.LastIndexOf('.')) + ".cs"; - ps.WriteLine(" {0}", autogen_name); + ps.WriteLine(" {0}", Path.GetFileName(autogen_name)); // Check for a parent .cs file with the same name as this designer file if (File.Exists(dependent_name)) diff --git a/Programs/examples/GUITestClient/GUITestClient.cs b/Programs/examples/GUITestClient/GUITestClient.cs deleted file mode 100644 index 45e13af6..00000000 --- a/Programs/examples/GUITestClient/GUITestClient.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace OpenMetaverse.GUITestClient -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new frmTestClient()); - } - } -} \ No newline at end of file diff --git a/Programs/examples/GUITestClient/Interface.cs b/Programs/examples/GUITestClient/Interface.cs deleted file mode 100644 index ddb6d5b2..00000000 --- a/Programs/examples/GUITestClient/Interface.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Windows.Forms; -using System.Collections.Generic; - -namespace OpenMetaverse.GUITestClient -{ - public abstract class Interface - { - public string Name; - public string Description; - public GridClient Client; - public TabPage TabPage; - - public abstract void Initialize(); - - public abstract void Paint(object sender, PaintEventArgs e); - - /// - /// When set to true, think will be called. - /// - public bool Active; - } -} diff --git a/Programs/examples/GUITestClient/Interfaces/HeightmapInterface.cs b/Programs/examples/GUITestClient/Interfaces/HeightmapInterface.cs deleted file mode 100644 index 996ee629..00000000 --- a/Programs/examples/GUITestClient/Interfaces/HeightmapInterface.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System; -using System.Drawing; -using System.Drawing.Imaging; -using System.Windows.Forms; -using OpenMetaverse; - -namespace OpenMetaverse.GUITestClient -{ - public class HeightmapInterface : Interface - { - private PictureBox[,] Boxes = new PictureBox[16, 16]; - - public HeightmapInterface(frmTestClient testClient) - { - Name = "Heightmap"; - Description = "Displays a graphical heightmap of the current simulator"; - } - - public override void Initialize() - { - Client.Terrain.OnLandPatch += new TerrainManager.LandPatchCallback(Terrain_OnLandPatch); - Client.Settings.STORE_LAND_PATCHES = true; - - for (int y = 0; y < 16; y++) - { - for (int x = 0; x < 16; x++) - { - Boxes[x, y] = new System.Windows.Forms.PictureBox(); - PictureBox box = Boxes[x, y]; - ((System.ComponentModel.ISupportInitialize)(box)).BeginInit(); - box.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - box.Name = x + "," + y; - box.Location = new System.Drawing.Point(x * 16, y * 16); - box.Size = new System.Drawing.Size(16, 16); - box.Visible = true; - //box.MouseUp += new MouseEventHandler(box_MouseUp); - ((System.ComponentModel.ISupportInitialize)(box)).EndInit(); - - TabPage.Controls.Add(box); - } - } - } - - public override void Paint(object sender, PaintEventArgs e) - { - ; - } - - void Terrain_OnLandPatch(Simulator simulator, int x, int y, int width, float[] data) - { - if (x >= 16 || y >= 16) - { - Console.WriteLine("Bad patch coordinates, x = " + x + ", y = " + y); - return; - } - - if (width != 16) - { - Console.WriteLine("Unhandled patch size " + width + "x" + width); - return; - } - - Bitmap patch = new Bitmap(16, 16, PixelFormat.Format24bppRgb); - - for (int yp = 0; yp < 16; yp++) - { - for (int xp = 0; xp < 16; xp++) - { - float height = data[yp * 16 + xp]; - int colorVal = Utils.FloatToByte(height, 0.0f, 60.0f); - int lesserVal = (int)((float)colorVal * 0.75f); - Color color; - - if (height >= simulator.WaterHeight) - color = Color.FromArgb(lesserVal, colorVal, lesserVal); - else - color = Color.FromArgb(lesserVal, lesserVal, colorVal); - - patch.SetPixel(xp, yp, color); - } - } - - Boxes[x, y].Image = (System.Drawing.Image)patch; - } - } -} diff --git a/Programs/examples/GUITestClient/Interfaces/MinimapInterface.cs b/Programs/examples/GUITestClient/Interfaces/MinimapInterface.cs deleted file mode 100644 index 022b0f5c..00000000 --- a/Programs/examples/GUITestClient/Interfaces/MinimapInterface.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System; -using System.ComponentModel; -using System.Data; -using System.Drawing.Imaging; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using OpenMetaverse; -using System.Net; -using System.Diagnostics; - -namespace OpenMetaverse.GUITestClient -{ - public class MinimapInterface : Interface - { - //A magic number to calculate index sim y coord from actual coord - private const int GRID_Y_OFFSET = 1279; - //Base URL for web map api sim images - private const String MAP_IMG_URL = "http://secondlife.com/apps/mapapi/grid/map_image/"; - private PictureBox world = new PictureBox(); - private Button cmdRefresh = new Button(); - private System.Drawing.Image mMapImage = null; - private string oldSim = String.Empty; - - public MinimapInterface(frmTestClient testClient) - { - Name = "Minimap"; - Description = "Displays a graphical minimap of the current simulator"; - } - - private void map_onclick(object sender, System.EventArgs e) - { - ; - } - - private void cmdRefresh_onclick(object sender, System.EventArgs e) - { - printMap(); - } - - public void printMap() - { - Bitmap map = new Bitmap(256, 256, PixelFormat.Format32bppRgb); - Font font = new Font("Tahoma", 8, FontStyle.Bold); - Pen mAvPen = new Pen(Brushes.GreenYellow, 1); - Brush mAvBrush = new SolidBrush(Color.Green); - String strInfo = String.Empty; - - // Get new background map if necessary - if (mMapImage == null || oldSim != Client.Network.CurrentSim.Name) - { - oldSim = Client.Network.CurrentSim.Name; - mMapImage = DownloadWebMapImage(); - } - - // Create in memory bitmap - using (Graphics g = Graphics.FromImage(map)) - { - // Draw background map - g.DrawImage(mMapImage, new Rectangle(0, 0, 256, 256), 0, 0, 256, 256, GraphicsUnit.Pixel); - - // Draw all avatars - Client.Network.CurrentSim.AvatarPositions.ForEach( - delegate(Vector3 pos) - { - Rectangle rect = new Rectangle((int)Math.Round(pos.X, 0) - 2, 255 - ((int)Math.Round(pos.Y, 0) - 2), 4, 4); - g.FillEllipse(mAvBrush, rect); - g.DrawEllipse(mAvPen, rect); - } - ); - - // Draw self ;) - Rectangle myrect = new Rectangle((int)Math.Round(Client.Self.SimPosition.X, 0) - 3, 255 - ((int)Math.Round(Client.Self.SimPosition.Y, 0) - 3), 6, 6); - g.FillEllipse(new SolidBrush(Color.Yellow), myrect); - g.DrawEllipse(new Pen(Brushes.Goldenrod, 1), myrect); - - // Draw region info - strInfo = string.Format("Sim {0}/{1}/{2}/{3}\nAvatars {4}", Client.Network.CurrentSim.Name, - Math.Round(Client.Self.SimPosition.X, 0), - Math.Round(Client.Self.SimPosition.Y, 0), - Math.Round(Client.Self.SimPosition.Z, 0), - Client.Network.CurrentSim.AvatarPositions.Count); - g.DrawString(strInfo, font, Brushes.DarkOrange, 4, 4); - } - // update picture box with new map bitmap - world.BackgroundImage = map; - } - - public override void Initialize() - { - ((System.ComponentModel.ISupportInitialize)(world)).BeginInit(); - world.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - world.Size = new System.Drawing.Size(256, 256); - world.Visible = true; - world.Click += new System.EventHandler(this.map_onclick); - ((System.ComponentModel.ISupportInitialize)(world)).EndInit(); - - //((System.ComponentModel.ISupportInitialize)(cmdRefresh)).BeginInit(); - cmdRefresh.Text = "Refresh"; - cmdRefresh.Size = new System.Drawing.Size(80, 24); - cmdRefresh.Left = world.Left + world.Width + 20; - cmdRefresh.Click += new System.EventHandler(this.cmdRefresh_onclick); - cmdRefresh.Visible = true; - //((System.ComponentModel.ISupportInitialize)(world)).EndInit(); - - TabPage.Controls.Add(world); - TabPage.Controls.Add(cmdRefresh); - } - - // Ripped from "Terrain Sculptor" by Cadroe with minors changes - // http://spinmass.blogspot.com/2007/08/terrain-sculptor-maps-sims-and-creates.html - private System.Drawing.Image DownloadWebMapImage() - { - HttpWebRequest request = null; - HttpWebResponse response = null; - String imgURL = ""; - GridRegion currRegion; - - Client.Grid.GetGridRegion(Client.Network.CurrentSim.Name, GridLayerType.Terrain, out currRegion); - try - { - //Form the URL using the sim coordinates - imgURL = MAP_IMG_URL + currRegion.X.ToString() + "-" + - (GRID_Y_OFFSET - currRegion.Y).ToString() + "-1-0"; - //Make the http request - request = (HttpWebRequest)HttpWebRequest.Create(imgURL); - request.Timeout = 5000; - request.ReadWriteTimeout = 20000; - response = (HttpWebResponse)request.GetResponse(); - - return System.Drawing.Image.FromStream(response.GetResponseStream()); - } - catch (Exception ex) - { - MessageBox.Show(ex.ToString(), "Error Downloading Web Map Image"); - return null; - } - } - - public override void Paint(object sender, PaintEventArgs e) - { - ; - } - } -} diff --git a/Programs/examples/GUITestClient/Interfaces/TeleportInterface.cs b/Programs/examples/GUITestClient/Interfaces/TeleportInterface.cs deleted file mode 100644 index ef4cf5aa..00000000 --- a/Programs/examples/GUITestClient/Interfaces/TeleportInterface.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.ComponentModel; -using System.Drawing.Imaging; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using OpenMetaverse; - -namespace OpenMetaverse.GUITestClient -{ - class TeleportInterface : Interface - { - private System.Windows.Forms.Button cmdTeleport; - private System.Windows.Forms.TextBox txtLocation; - private System.Windows.Forms.Label lblLocation; - - public TeleportInterface(frmTestClient testClient) - { - Name = "Teleport"; - Description = "Teleport your's agent in SL Grid"; - } - - public override void Initialize() - { - txtLocation = new System.Windows.Forms.TextBox(); - txtLocation.Size = new System.Drawing.Size(238, 24); - txtLocation.Top = 100; - txtLocation.Left = 12; - - lblLocation = new System.Windows.Forms.Label(); - lblLocation.Size = new System.Drawing.Size(238, 24); - lblLocation.Top = txtLocation.Top - 16; - lblLocation.Left = txtLocation.Left; - lblLocation.Text = "Location (eg: sim/x/y/z)"; - - cmdTeleport = new System.Windows.Forms.Button(); - cmdTeleport.Size = new System.Drawing.Size(120, 24); - cmdTeleport.Top = 100; cmdTeleport.Left = 257; - cmdTeleport.Text = "Teleport !"; - cmdTeleport.Click += new System.EventHandler(this.cmdTeleport_OnClick); - - TabPage.Controls.Add(txtLocation); - TabPage.Controls.Add(lblLocation); - TabPage.Controls.Add(cmdTeleport); - } - - private void cmdTeleport_OnClick(object sender, System.EventArgs e) - { - String destination = txtLocation.Text.Trim(); - - string[] tokens = destination.Split(new char[] { '/' }); - if (tokens.Length != 4) - goto error_handler; - - string sim = tokens[0]; - float x, y, z; - if (!float.TryParse(tokens[1], out x) || - !float.TryParse(tokens[2], out y) || - !float.TryParse(tokens[3], out z)) - { - goto error_handler; - } - - if (Client.Self.Teleport(sim, new Vector3(x, y, z))) - MessageBox.Show("Teleported to " + Client.Network.CurrentSim, "Teleport"); - else - MessageBox.Show("Teleport failed: " + Client.Self.TeleportMessage, "Teleport"); - return; - - error_handler: - MessageBox.Show("Location must to be sim/x/y/z", "Teleport"); - } - - public override void Paint(object sender, PaintEventArgs e) - { - ; - } - } -} diff --git a/Programs/examples/GUITestClient/Properties/AssemblyInfo.cs b/Programs/examples/GUITestClient/Properties/AssemblyInfo.cs deleted file mode 100644 index 77d43fdc..00000000 --- a/Programs/examples/GUITestClient/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("GUITestClient")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Metaverse Industries LLC")] -[assembly: AssemblyProduct("GUITestClient")] -[assembly: AssemblyCopyright("Copyright © Metaverse Industries LLC 2007")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("07b6c35c-78c2-4850-8ece-d99e1284959f")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Programs/examples/GUITestClient/Properties/Resources.Designer.cs b/Programs/examples/GUITestClient/Properties/Resources.Designer.cs deleted file mode 100644 index 07df7ab5..00000000 --- a/Programs/examples/GUITestClient/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.42 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace GUITestClient.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GUITestClient.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/Programs/examples/GUITestClient/Properties/Resources.resx b/Programs/examples/GUITestClient/Properties/Resources.resx deleted file mode 100644 index ffecec85..00000000 --- a/Programs/examples/GUITestClient/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/Programs/examples/GUITestClient/Properties/Settings.Designer.cs b/Programs/examples/GUITestClient/Properties/Settings.Designer.cs deleted file mode 100644 index a3ead552..00000000 --- a/Programs/examples/GUITestClient/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.42 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace GUITestClient.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} diff --git a/Programs/examples/GUITestClient/Properties/Settings.settings b/Programs/examples/GUITestClient/Properties/Settings.settings deleted file mode 100644 index abf36c5d..00000000 --- a/Programs/examples/GUITestClient/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Programs/examples/GUITestClient/frmTestClient.Designer.cs b/Programs/examples/GUITestClient/frmTestClient.Designer.cs deleted file mode 100644 index f2e8feee..00000000 --- a/Programs/examples/GUITestClient/frmTestClient.Designer.cs +++ /dev/null @@ -1,154 +0,0 @@ -namespace OpenMetaverse.GUITestClient -{ - partial class frmTestClient - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.tabControl = new System.Windows.Forms.TabControl(); - this.tabLogin = new System.Windows.Forms.TabPage(); - this.cmdConnect = new System.Windows.Forms.Button(); - this.label3 = new System.Windows.Forms.Label(); - this.txtPassword = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.txtLastName = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.txtFirstName = new System.Windows.Forms.TextBox(); - this.tabControl.SuspendLayout(); - this.tabLogin.SuspendLayout(); - this.SuspendLayout(); - // - // tabControl - // - this.tabControl.Controls.Add(this.tabLogin); - this.tabControl.Location = new System.Drawing.Point(12, 12); - this.tabControl.Name = "tabControl"; - this.tabControl.SelectedIndex = 0; - this.tabControl.Size = new System.Drawing.Size(400, 400); - this.tabControl.TabIndex = 0; - // - // tabLogin - // - this.tabLogin.Controls.Add(this.cmdConnect); - this.tabLogin.Controls.Add(this.label3); - this.tabLogin.Controls.Add(this.txtPassword); - this.tabLogin.Controls.Add(this.label2); - this.tabLogin.Controls.Add(this.txtLastName); - this.tabLogin.Controls.Add(this.label1); - this.tabLogin.Controls.Add(this.txtFirstName); - this.tabLogin.Location = new System.Drawing.Point(4, 22); - this.tabLogin.Name = "tabLogin"; - this.tabLogin.Padding = new System.Windows.Forms.Padding(3); - this.tabLogin.Size = new System.Drawing.Size(392, 374); - this.tabLogin.TabIndex = 0; - this.tabLogin.Text = "Login"; - this.tabLogin.UseVisualStyleBackColor = true; - // - // cmdConnect - // - this.cmdConnect.Location = new System.Drawing.Point(257, 181); - this.cmdConnect.Name = "cmdConnect"; - this.cmdConnect.Size = new System.Drawing.Size(120, 24); - this.cmdConnect.TabIndex = 59; - this.cmdConnect.Text = "Connect"; - this.cmdConnect.Click += new System.EventHandler(this.cmdConnect_Click); - // - // label3 - // - this.label3.Location = new System.Drawing.Point(257, 139); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(120, 16); - this.label3.TabIndex = 58; - this.label3.Text = "Password"; - // - // txtPassword - // - this.txtPassword.Location = new System.Drawing.Point(257, 155); - this.txtPassword.Name = "txtPassword"; - this.txtPassword.PasswordChar = '*'; - this.txtPassword.Size = new System.Drawing.Size(120, 20); - this.txtPassword.TabIndex = 57; - // - // label2 - // - this.label2.Location = new System.Drawing.Point(138, 139); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(120, 16); - this.label2.TabIndex = 56; - this.label2.Text = "Last Name"; - // - // txtLastName - // - this.txtLastName.Location = new System.Drawing.Point(138, 155); - this.txtLastName.Name = "txtLastName"; - this.txtLastName.Size = new System.Drawing.Size(112, 20); - this.txtLastName.TabIndex = 55; - // - // label1 - // - this.label1.Location = new System.Drawing.Point(12, 139); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(120, 16); - this.label1.TabIndex = 54; - this.label1.Text = "First Name"; - // - // txtFirstName - // - this.txtFirstName.Location = new System.Drawing.Point(12, 155); - this.txtFirstName.Name = "txtFirstName"; - this.txtFirstName.Size = new System.Drawing.Size(120, 20); - this.txtFirstName.TabIndex = 53; - // - // frmTestClient - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(427, 420); - this.Controls.Add(this.tabControl); - this.Name = "frmTestClient"; - this.Text = "GUI Test Client"; - this.Paint += new System.Windows.Forms.PaintEventHandler(this.frmTestClient_Paint); - this.tabControl.ResumeLayout(false); - this.tabLogin.ResumeLayout(false); - this.tabLogin.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.TabControl tabControl; - private System.Windows.Forms.TabPage tabLogin; - private System.Windows.Forms.Button cmdConnect; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.TextBox txtPassword; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox txtLastName; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox txtFirstName; - } -} - diff --git a/Programs/examples/GUITestClient/frmTestClient.cs b/Programs/examples/GUITestClient/frmTestClient.cs deleted file mode 100644 index 16d60379..00000000 --- a/Programs/examples/GUITestClient/frmTestClient.cs +++ /dev/null @@ -1,136 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.Reflection; -using OpenMetaverse; - -namespace OpenMetaverse.GUITestClient -{ - public partial class frmTestClient : Form - { - private GridClient Client = new GridClient(); - private Dictionary Interfaces = new Dictionary(); - - public frmTestClient() - { - Client.Network.OnLogin += new NetworkManager.LoginCallback(Network_OnLogin); - Client.Settings.MULTIPLE_SIMS = false; - - InitializeComponent(); - - RegisterAllPlugins(Assembly.GetExecutingAssembly()); - EnablePlugins(false); - } - - private void Network_OnLogin(LoginStatus login, string message) - { - if (login == LoginStatus.Success) - { - EnablePlugins(true); - } - else if (login == LoginStatus.Failed) - { - BeginInvoke( - (MethodInvoker)delegate() - { - MessageBox.Show(this, String.Format("Error logging in ({0}): {1}", - Client.Network.LoginErrorKey, Client.Network.LoginMessage)); - cmdConnect.Text = "Connect"; - txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = true; - EnablePlugins(false); - }); - } - } - - private void cmdConnect_Click(object sender, EventArgs e) - { - if (cmdConnect.Text == "Connect") - { - cmdConnect.Text = "Disconnect"; - txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = false; - - LoginParams loginParams = Client.Network.DefaultLoginParams(txtFirstName.Text, txtLastName.Text, - txtPassword.Text, "GUITestClient", "1.0.0"); - Client.Network.BeginLogin(loginParams); - } - else - { - Client.Network.Logout(); - cmdConnect.Text = "Connect"; - txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = true; - EnablePlugins(false); - } - } - - private void EnablePlugins(bool enable) - { - tabControl.TabPages.Clear(); - tabControl.TabPages.Add(tabLogin); - - if (enable) - { - lock (Interfaces) - { - foreach (TabPage page in Interfaces.Values) - { - tabControl.TabPages.Add(page); - } - } - } - } - - private void RegisterAllPlugins(Assembly assembly) - { - foreach (Type t in assembly.GetTypes()) - { - try - { - if (t.IsSubclassOf(typeof(Interface))) - { - ConstructorInfo[] infos = t.GetConstructors(); - Interface iface = (Interface)infos[0].Invoke(new object[] { this }); - RegisterPlugin(iface); - } - } - catch (Exception e) - { - MessageBox.Show(e.ToString()); - } - } - } - - private void RegisterPlugin(Interface iface) - { - TabPage page = new TabPage(); - tabControl.TabPages.Add(page); - - iface.Client = Client; - iface.TabPage = page; - - if (!Interfaces.ContainsKey(iface)) - { - lock (Interfaces) Interfaces.Add(iface, page); - } - - iface.Initialize(); - - page.Text = iface.Name; - page.ToolTipText = iface.Description; - } - - private void frmTestClient_Paint(object sender, PaintEventArgs e) - { - lock (Interfaces) - { - foreach (Interface iface in Interfaces.Keys) - { - iface.Paint(sender, e); - } - } - } - } -} diff --git a/Programs/examples/GUITestClient/frmTestClient.resx b/Programs/examples/GUITestClient/frmTestClient.resx deleted file mode 100644 index ff31a6db..00000000 --- a/Programs/examples/GUITestClient/frmTestClient.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/bin/Prebuild.exe b/bin/Prebuild.exe index cc2f25ee5c4d0c6f89ba96af8a9f1abe5abfb0f4..d09fa34a8b9b8f8a1210aeec42ffa176ce34b539 100644 GIT binary patch delta 49476 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 diff --git a/prebuild.xml b/prebuild.xml index 4268070d..f048d4e7 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -580,32 +580,6 @@ - - - - ../../../bin/ - - - - - ../../../bin/ - - - - ../../../bin/ - - - - - - - - - - - - -