diff --git a/Programs/examples/Dashboard/Dashboard.Designer.cs b/Programs/examples/Dashboard/Dashboard.Designer.cs new file mode 100644 index 00000000..57180bcd --- /dev/null +++ b/Programs/examples/Dashboard/Dashboard.Designer.cs @@ -0,0 +1,270 @@ +namespace Dashboard +{ + partial class Dashboard + { + /// + /// 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.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.localChat1 = new OpenMetaverse.GUI.LocalChat(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.avatarList1 = new OpenMetaverse.GUI.AvatarList(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.friendsList1 = new OpenMetaverse.GUI.FriendList(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.groupList1 = new OpenMetaverse.GUI.GroupList(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.inventoryTree1 = new OpenMetaverse.GUI.InventoryTree(); + this.miniMap1 = new OpenMetaverse.GUI.MiniMap(); + this.txtStatus = new System.Windows.Forms.Label(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.splitContainer2.Panel1.SuspendLayout(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.tabPage3.SuspendLayout(); + this.tabPage4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.miniMap1)).BeginInit(); + this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.splitContainer1.Location = new System.Drawing.Point(2, 3); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.localChat1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); + this.splitContainer1.Size = new System.Drawing.Size(627, 419); + this.splitContainer1.SplitterDistance = 415; + this.splitContainer1.TabIndex = 4; + // + // localChat1 + // + this.localChat1.Client = null; + this.localChat1.Dock = System.Windows.Forms.DockStyle.Fill; + this.localChat1.Location = new System.Drawing.Point(0, 0); + this.localChat1.Name = "localChat1"; + this.localChat1.Size = new System.Drawing.Size(415, 419); + this.localChat1.TabIndex = 4; + // + // splitContainer2 + // + this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer2.Location = new System.Drawing.Point(0, 0); + this.splitContainer2.Name = "splitContainer2"; + this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer2.Panel1 + // + this.splitContainer2.Panel1.Controls.Add(this.tabControl1); + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.miniMap1); + this.splitContainer2.Size = new System.Drawing.Size(208, 419); + this.splitContainer2.SplitterDistance = 209; + this.splitContainer2.TabIndex = 9; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage3); + this.tabControl1.Controls.Add(this.tabPage4); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(208, 209); + this.tabControl1.TabIndex = 9; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.avatarList1); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(200, 183); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Nearby"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // avatarList1 + // + this.avatarList1.Client = null; + this.avatarList1.Dock = System.Windows.Forms.DockStyle.Fill; + this.avatarList1.Location = new System.Drawing.Point(3, 3); + this.avatarList1.Name = "avatarList1"; + this.avatarList1.Size = new System.Drawing.Size(194, 177); + this.avatarList1.TabIndex = 3; + this.avatarList1.UseCompatibleStateImageBehavior = false; + this.avatarList1.View = System.Windows.Forms.View.Details; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.friendsList1); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(200, 221); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Friends"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // friendsList1 + // + this.friendsList1.Client = null; + this.friendsList1.Dock = System.Windows.Forms.DockStyle.Fill; + this.friendsList1.Location = new System.Drawing.Point(3, 3); + this.friendsList1.Name = "friendsList1"; + this.friendsList1.Size = new System.Drawing.Size(194, 215); + this.friendsList1.TabIndex = 5; + this.friendsList1.UseCompatibleStateImageBehavior = false; + this.friendsList1.View = System.Windows.Forms.View.Details; + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.groupList1); + this.tabPage3.Location = new System.Drawing.Point(4, 22); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Size = new System.Drawing.Size(200, 221); + this.tabPage3.TabIndex = 2; + this.tabPage3.Text = "Groups"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // groupList1 + // + this.groupList1.Client = null; + this.groupList1.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupList1.Location = new System.Drawing.Point(0, 0); + this.groupList1.Name = "groupList1"; + this.groupList1.Size = new System.Drawing.Size(200, 221); + this.groupList1.TabIndex = 7; + this.groupList1.UseCompatibleStateImageBehavior = false; + this.groupList1.View = System.Windows.Forms.View.Details; + // + // tabPage4 + // + this.tabPage4.Controls.Add(this.inventoryTree1); + this.tabPage4.Location = new System.Drawing.Point(4, 22); + this.tabPage4.Name = "tabPage4"; + this.tabPage4.Size = new System.Drawing.Size(200, 221); + this.tabPage4.TabIndex = 3; + this.tabPage4.Text = "Inventory"; + this.tabPage4.UseVisualStyleBackColor = true; + // + // inventoryTree1 + // + this.inventoryTree1.Client = null; + this.inventoryTree1.Dock = System.Windows.Forms.DockStyle.Fill; + this.inventoryTree1.Location = new System.Drawing.Point(0, 0); + this.inventoryTree1.Name = "inventoryTree1"; + this.inventoryTree1.Size = new System.Drawing.Size(200, 221); + this.inventoryTree1.TabIndex = 1; + // + // miniMap1 + // + this.miniMap1.BackColor = System.Drawing.SystemColors.Control; + this.miniMap1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.miniMap1.Client = null; + this.miniMap1.Dock = System.Windows.Forms.DockStyle.Fill; + this.miniMap1.Location = new System.Drawing.Point(0, 0); + this.miniMap1.Name = "miniMap1"; + this.miniMap1.Size = new System.Drawing.Size(208, 206); + this.miniMap1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.miniMap1.TabIndex = 11; + this.miniMap1.TabStop = false; + // + // txtStatus + // + this.txtStatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtStatus.AutoEllipsis = true; + this.txtStatus.Location = new System.Drawing.Point(10, 426); + this.txtStatus.Name = "txtStatus"; + this.txtStatus.Size = new System.Drawing.Size(611, 13); + this.txtStatus.TabIndex = 5; + this.txtStatus.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // Dashboard + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(632, 443); + this.Controls.Add(this.txtStatus); + this.Controls.Add(this.splitContainer1); + this.Name = "Dashboard"; + this.Text = "Dashboard"; + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + this.splitContainer1.ResumeLayout(false); + this.splitContainer2.Panel1.ResumeLayout(false); + this.splitContainer2.Panel2.ResumeLayout(false); + this.splitContainer2.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.tabPage3.ResumeLayout(false); + this.tabPage4.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.miniMap1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private OpenMetaverse.GUI.LocalChat localChat1; + private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private OpenMetaverse.GUI.AvatarList avatarList1; + private System.Windows.Forms.TabPage tabPage2; + private OpenMetaverse.GUI.FriendList friendsList1; + private System.Windows.Forms.TabPage tabPage3; + private OpenMetaverse.GUI.GroupList groupList1; + private System.Windows.Forms.TabPage tabPage4; + private OpenMetaverse.GUI.InventoryTree inventoryTree1; + private OpenMetaverse.GUI.MiniMap miniMap1; + private System.Windows.Forms.Label txtStatus; + + } +} + diff --git a/Programs/examples/Dashboard/Dashboard.cs b/Programs/examples/Dashboard/Dashboard.cs new file mode 100644 index 00000000..528b28ae --- /dev/null +++ b/Programs/examples/Dashboard/Dashboard.cs @@ -0,0 +1,86 @@ +using OpenMetaverse; +using OpenMetaverse.GUI; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Reflection; +using System.Windows.Forms; + +namespace Dashboard +{ + public partial class Dashboard : Form + { + + GridClient Client; + + /// + /// Provides a full representation of OpenMetaverse.GUI + /// + /// + /// + /// + public Dashboard(string firstName, string lastName, string password) + { + InitializeComponent(); + + //force logout and exit when form is closed + this.FormClosing += new FormClosingEventHandler(Dashboard_FormClosing); + + //initialize client object + Client = new GridClient(); + Client.Network.OnLogin += new NetworkManager.LoginCallback(Network_OnLogin); + LoginParams ClientLogin = Client.Network.DefaultLoginParams(firstName, lastName, password, "OpenMetaverse Dashboard", Assembly.GetExecutingAssembly().GetName().Version.ToString()); + ClientLogin.Start = "last"; + + //define the client object for each GUI element + avatarList1.Client = Client; + friendsList1.Client = Client; + groupList1.Client = Client; + inventoryTree1.Client = Client; + localChat1.Client = Client; + miniMap1.Client = Client; + + //double-click events + avatarList1.OnAvatarDoubleClick += new AvatarList.AvatarDoubleClickCallback(avatarList1_OnAvatarDoubleClick); + friendsList1.OnFriendDoubleClick += new FriendList.FriendDoubleClickCallback(friendsList1_OnFriendDoubleClick); + groupList1.OnGroupDoubleClick += new GroupList.GroupDoubleClickCallback(groupList1_OnGroupDoubleClick); + + //login + Client.Network.BeginLogin(ClientLogin); + } + + private void SetLabelText(Label label, string text) + { + if (this.InvokeRequired) this.BeginInvoke((MethodInvoker)delegate { SetLabelText(label, text); }); + else { label.Text = text; } + } + + private void Dashboard_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + if (Client != null && Client.Network.Connected) Client.Network.Logout(); + Environment.Exit(0); + } + + private void Network_OnLogin(LoginStatus login, string message) + { + SetLabelText(txtStatus, message); + } + + private void avatarList1_OnAvatarDoubleClick(Avatar avatar) + { + MessageBox.Show(avatar.Name + " = " + avatar.ID); + } + + private void friendsList1_OnFriendDoubleClick(FriendInfo friend) + { + MessageBox.Show(friend.Name + " = " + friend.UUID); + } + + private void groupList1_OnGroupDoubleClick(Group group) + { + MessageBox.Show(group.Name + " = " + group.ID); + } + + } +} \ No newline at end of file diff --git a/Programs/examples/Dashboard/Dashboard.resx b/Programs/examples/Dashboard/Dashboard.resx new file mode 100644 index 00000000..ff31a6db --- /dev/null +++ b/Programs/examples/Dashboard/Dashboard.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/Dashboard/Program.cs b/Programs/examples/Dashboard/Program.cs new file mode 100644 index 00000000..7f679249 --- /dev/null +++ b/Programs/examples/Dashboard/Program.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; + +namespace Dashboard +{ + static class Program + { + [STAThread] + static void Main(string[] args) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + if (args.Length > 2) Application.Run(new Dashboard(args[0], args[1], args[2])); + else MessageBox.Show("Usage: dashboard.exe ", "Dashboard", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); + } + } +} \ No newline at end of file diff --git a/prebuild.xml b/prebuild.xml index 4599f709..5830ca20 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -290,6 +290,32 @@ + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + +