Files
libremetaverse/libsecondlife-cs/examples/groupmanager/frmGroupManager.cs
John Hurliman 9b304de160 * Removed superfluous empty quotes from ToString methods in _Packets_.cs
* Rewrote GroupManager to use public events like the rest of the library
* Renamed ExportScriptCommand to ExportParticlesCommand
* TestClient converts Windows line endings to UNIX style when sending reply IMs
* Fixed a counting bug and an endian bug in object update parsing
* Velocity and Accleration are now properly set in object update parsing

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@1015 52acb1d6-8a22-11de-b505-999d5b087335
2007-02-28 03:47:46 +00:00

119 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using libsecondlife;
using libsecondlife.Packets;
namespace groupmanager
{
public partial class frmGroupManager : Form
{
SecondLife Client;
Dictionary<LLUUID, Group> Groups;
public frmGroupManager()
{
Client = new SecondLife();
// Throttle unnecessary things down
Client.Throttle.Land = 0;
Client.Throttle.Wind = 0;
Client.Throttle.Cloud = 0;
Client.Groups.OnCurrentGroups += new GroupManager.CurrentGroupsCallback(GroupsUpdatedHandler);
InitializeComponent();
}
void GroupsUpdatedHandler(Dictionary<LLUUID, Group> groups)
{
Groups = groups;
Invoke(new MethodInvoker(UpdateGroups));
}
void UpdateGroups()
{
lock (lstGroups)
{
lstGroups.Items.Clear();
foreach (Group group in Groups.Values)
{
lstGroups.Items.Add(group);
}
}
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
frmGroupManager frm = new frmGroupManager();
frm.ShowDialog();
}
private void cmdConnect_Click(object sender, EventArgs e)
{
if (cmdConnect.Text == "Connect")
{
cmdConnect.Text = "Disconnect";
txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = false;
if (Client.Network.Login(txtFirstName.Text, txtLastName.Text, txtPassword.Text, "GroupManager",
"jhurliman@wsu.edu"))
{
groupBox.Enabled = true;
Client.Groups.BeginGetCurrentGroups();
}
else
{
MessageBox.Show(this, "Error logging in: " + Client.Network.LoginError);
cmdConnect.Text = "Connect";
txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = true;
groupBox.Enabled = false;
lstGroups.Items.Clear();
}
}
else
{
Client.Network.Logout();
cmdConnect.Text = "Connect";
txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = true;
groupBox.Enabled = false;
lstGroups.Items.Clear();
}
}
private void lstGroups_SelectedIndexChanged(object sender, EventArgs e)
{
if (lstGroups.SelectedIndex >= 0)
{
cmdActivate.Enabled = cmdInfo.Enabled = cmdLeave.Enabled = true;
}
else
{
cmdActivate.Enabled = cmdInfo.Enabled = cmdLeave.Enabled = false;
}
}
private void cmdInfo_Click(object sender, EventArgs e)
{
if (lstGroups.SelectedIndex >= 0 && lstGroups.Items[lstGroups.SelectedIndex].ToString() != "none")
{
Group group = (Group)lstGroups.Items[lstGroups.SelectedIndex];
frmGroupInfo frm = new frmGroupInfo(group, Client);
frm.ShowDialog();
}
}
}
}