private bool monoRuntime;\r
public bool MonoRuntime { get { return monoRuntime; } }\r
\r
- public Dictionary<UUID, Group> groups;\r
- public Dictionary<UUID, string> nameCache = new Dictionary<UUID,string>();\r
+ private Dictionary<UUID, Group> groups;\r
+ public Dictionary<UUID, Group> Groups { get { return groups; } }\r
+\r
+ public delegate void AvatarNameCallback(UUID agentID, string agentName);\r
+ public event AvatarNameCallback OnAvatarName;\r
\r
- public delegate void OnAvatarNameCallBack(UUID agentID, string agentName);\r
- public event OnAvatarNameCallBack OnAvatarName;\r
+ public Dictionary<UUID, string> nameCache = new Dictionary<UUID,string>();\r
\r
public readonly bool advancedDebugging = false;\r
\r
client.Groups.OnGroupLeft += new GroupManager.GroupLeftCallback(Groups_OnGroupLeft);\r
client.Groups.OnGroupDropped += new GroupManager.GroupDroppedCallback(Groups_OnGroupDropped);\r
client.Groups.OnGroupJoined += new GroupManager.GroupJoinedCallback(Groups_OnGroupJoined);\r
- client.Groups.OnGroupProfile += new GroupManager.GroupProfileCallback(Groups_OnGroupProfile);\r
client.Avatars.OnAvatarNames += new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
client.Network.OnLogin += new NetworkManager.LoginCallback(Network_OnLogin);\r
client.Network.OnDisconnected += new NetworkManager.DisconnectedCallback(Network_OnDisconnected);\r
client.Groups.OnGroupLeft -= new GroupManager.GroupLeftCallback(Groups_OnGroupLeft);\r
client.Groups.OnGroupDropped -= new GroupManager.GroupDroppedCallback(Groups_OnGroupDropped);\r
client.Groups.OnGroupJoined -= new GroupManager.GroupJoinedCallback(Groups_OnGroupJoined);\r
- client.Groups.OnGroupProfile -= new GroupManager.GroupProfileCallback(Groups_OnGroupProfile);\r
client.Avatars.OnAvatarNames -= new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
client.Network.OnLogin -= new NetworkManager.LoginCallback(Network_OnLogin);\r
client.Network.OnDisconnected -= new NetworkManager.DisconnectedCallback(Network_OnDisconnected);\r
\r
public string getAvatarName(UUID key)\r
{\r
- if (nameCache.ContainsKey(key))\r
+ lock (nameCache)\r
{\r
- return nameCache[key];\r
+ if (nameCache.ContainsKey(key))\r
+ {\r
+ return nameCache[key];\r
+ }\r
+ else\r
+ {\r
+ client.Avatars.RequestAvatarName(key);\r
+ return "Loading...";\r
+ }\r
}\r
- else\r
+ }\r
+\r
+ public void getAvatarNames(List<UUID> keys)\r
+ {\r
+ lock (nameCache)\r
{\r
- client.Avatars.RequestAvatarName(key);\r
- return "Loading...";\r
+ List<UUID> newNames = new List<UUID>();\r
+ foreach (UUID key in keys)\r
+ {\r
+ if (!nameCache.ContainsKey(key))\r
+ {\r
+ newNames.Add(key);\r
+ }\r
+ }\r
+ if (newNames.Count > 0)\r
+ {\r
+ client.Avatars.RequestAvatarNames(newNames);\r
+ }\r
}\r
}\r
\r
- void Groups_OnGroupProfile(Group group)\r
+ public bool haveAvatarName(UUID key)\r
{\r
- if (groups.ContainsKey(group.ID))\r
+ lock (nameCache)\r
{\r
- groups[group.ID] = group;\r
+ if (nameCache.ContainsKey(key))\r
+ return true;\r
+ else\r
+ return false;\r
}\r
}\r
\r
void Groups_OnGroupJoined(UUID groupID, bool success)\r
{\r
- if (success && !groups.ContainsKey(groupID))\r
- {\r
- groups.Add(groupID, new Group());\r
- client.Groups.RequestGroupProfile(groupID);\r
- }\r
+ client.Groups.RequestCurrentGroups();\r
}\r
\r
void Groups_OnGroupLeft(UUID groupID, bool success)\r
{\r
- if (groups.ContainsKey(groupID))\r
- {\r
- groups.Remove(groupID);\r
- }\r
+ client.Groups.RequestCurrentGroups();\r
}\r
\r
void Groups_OnGroupDropped(UUID groupID)\r
{\r
- if (groups.ContainsKey(groupID))\r
- {\r
- groups.Remove(groupID);\r
- }\r
+ client.Groups.RequestCurrentGroups();\r
}\r
\r
void Network_OnDisconnected(NetworkManager.DisconnectType reason, string message)\r
if (e.IM.Dialog == InstantMessageDialog.MessageFromAgent \r
&& Alice.isAcceptingUserInput\r
&& instance.Config.CurrentConfig.UseAlice\r
- && !instance.groups.ContainsKey(e.IM.IMSessionID)\r
+ && !instance.Groups.ContainsKey(e.IM.IMSessionID)\r
&& e.IM.BinaryBucket.Length < 2\r
&& e.IM.FromAgentName != "Second Life") \r
{\r
this.tbxCharter = new System.Windows.Forms.TextBox();\r
this.lblCharter = new System.Windows.Forms.Label();\r
this.gbPreferences = new System.Windows.Forms.GroupBox();\r
- this.cbxShowGroupInList = new System.Windows.Forms.CheckBox();\r
+ this.cbxListInProfile = new System.Windows.Forms.CheckBox();\r
this.cbxReceiveNotices = new System.Windows.Forms.CheckBox();\r
this.cbxActiveTitle = new System.Windows.Forms.ComboBox();\r
this.lblActiveTitle = new System.Windows.Forms.Label();\r
// \r
// gbPreferences\r
// \r
- this.gbPreferences.Controls.Add(this.cbxShowGroupInList);\r
+ this.gbPreferences.Controls.Add(this.cbxListInProfile);\r
this.gbPreferences.Controls.Add(this.cbxReceiveNotices);\r
this.gbPreferences.Controls.Add(this.cbxActiveTitle);\r
this.gbPreferences.Controls.Add(this.lblActiveTitle);\r
this.gbPreferences.TabStop = false;\r
this.gbPreferences.Text = "Group Preferences";\r
// \r
- // cbxShowGroupInList\r
+ // cbxListInProfile\r
// \r
- this.cbxShowGroupInList.AutoSize = true;\r
- this.cbxShowGroupInList.Location = new System.Drawing.Point(211, 82);\r
- this.cbxShowGroupInList.Name = "cbxShowGroupInList";\r
- this.cbxShowGroupInList.Size = new System.Drawing.Size(130, 17);\r
- this.cbxShowGroupInList.TabIndex = 8;\r
- this.cbxShowGroupInList.Text = "List group in my profile";\r
- this.cbxShowGroupInList.UseVisualStyleBackColor = true;\r
+ this.cbxListInProfile.AutoSize = true;\r
+ this.cbxListInProfile.Location = new System.Drawing.Point(211, 82);\r
+ this.cbxListInProfile.Name = "cbxListInProfile";\r
+ this.cbxListInProfile.Size = new System.Drawing.Size(130, 17);\r
+ this.cbxListInProfile.TabIndex = 8;\r
+ this.cbxListInProfile.Text = "List group in my profile";\r
+ this.cbxListInProfile.UseVisualStyleBackColor = true;\r
// \r
// cbxReceiveNotices\r
// \r
private System.Windows.Forms.ComboBox cbxActiveTitle;\r
private System.Windows.Forms.Label lblActiveTitle;\r
private System.Windows.Forms.NumericUpDown nudEnrollmentFee;\r
- private System.Windows.Forms.CheckBox cbxShowGroupInList;\r
+ private System.Windows.Forms.CheckBox cbxListInProfile;\r
private System.Windows.Forms.CheckBox cbxReceiveNotices;\r
private System.Windows.Forms.Label lblCharter;\r
private System.Windows.Forms.ListView lvwGeneralMembers;\r
{\r
public partial class GroupDetails : UserControl\r
{\r
- private Group group;\r
private RadegastInstance instance;\r
private GridClient client { get { return instance.Client; } }\r
+ private Group group;\r
+ private Dictionary<UUID, GroupTitle> titles;\r
+ private Dictionary<UUID, Group> myGroups { get { return instance.Groups; } }\r
\r
private UUID groupTitlesRequest;\r
private UUID groupMembersRequest;\r
client.Groups.OnGroupTitles += new GroupManager.GroupTitlesCallback(Groups_OnGroupTitles);\r
client.Groups.OnGroupMembers += new GroupManager.GroupMembersCallback(Groups_OnGroupMembers);\r
client.Groups.OnGroupProfile += new GroupManager.GroupProfileCallback(Groups_OnGroupProfile);\r
+ client.Groups.OnCurrentGroups += new GroupManager.CurrentGroupsCallback(Groups_OnCurrentGroups);\r
client.Avatars.OnAvatarNames += new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
\r
+ RefreshControlsAvailability();\r
RefreshGroupInfo();\r
}\r
\r
client.Groups.OnGroupTitles -= new GroupManager.GroupTitlesCallback(Groups_OnGroupTitles);\r
client.Groups.OnGroupMembers -= new GroupManager.GroupMembersCallback(Groups_OnGroupMembers);\r
client.Groups.OnGroupProfile -= new GroupManager.GroupProfileCallback(Groups_OnGroupProfile);\r
+ client.Groups.OnCurrentGroups -= new GroupManager.CurrentGroupsCallback(Groups_OnCurrentGroups);\r
client.Avatars.OnAvatarNames -= new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
}\r
\r
- private void RefreshGroupInfo()\r
+ #region Network callbacks\r
+ void Groups_OnCurrentGroups(Dictionary<UUID, Group> groups)\r
{\r
- lvwGeneralMembers.Items.Clear();\r
- cbxActiveTitle.Items.Clear();\r
-\r
- // Request group info\r
- client.Groups.RequestGroupProfile(group.ID);\r
- groupTitlesRequest = client.Groups.RequestGroupTitles(group.ID);\r
- groupMembersRequest = client.Groups.RequestGroupMembers(group.ID);\r
+ BeginInvoke(new MethodInvoker(RefreshControlsAvailability));\r
}\r
\r
- #region Network callbacks\r
void Groups_OnGroupProfile(Group group)\r
{\r
if (group.ID != this.group.ID) return;\r
\r
tbxCharter.Text = group.Charter;\r
lblFounded.Text = "Founded by: " + instance.getAvatarName(group.FounderID);\r
+ cbxShowInSearch.Checked = group.ShowInList;\r
+ cbxOpenEnrollment.Checked = group.OpenEnrollment;\r
+\r
+ if (group.MembershipFee > 0)\r
+ {\r
+ cbxEnrollmentFee.Checked = true;\r
+ nudEnrollmentFee.Value = group.MembershipFee;\r
+ }\r
+ else\r
+ {\r
+ cbxEnrollmentFee.Checked = false;\r
+ nudEnrollmentFee.Value = 0;\r
+ }\r
+\r
+ if (group.MaturePublish)\r
+ {\r
+ cbxMaturity.SelectedIndex = 1;\r
+ }\r
+ else\r
+ {\r
+ cbxMaturity.SelectedIndex = 0;\r
+ }\r
+\r
+ if (myGroups.ContainsKey(group.ID))\r
+ {\r
+ cbxReceiveNotices.Checked = myGroups[group.ID].AcceptNotices;\r
+ cbxListInProfile.Checked = myGroups[group.ID].ListInProfile;\r
+ cbxReceiveNotices.CheckedChanged += new EventHandler(cbxListInProfile_CheckedChanged);\r
+ cbxListInProfile.CheckedChanged += new EventHandler(cbxListInProfile_CheckedChanged);\r
+ }\r
}\r
\r
void Avatars_OnAvatarNames(Dictionary<UUID, string> names)\r
void Groups_OnGroupTitles(UUID requestID, UUID groupID, Dictionary<UUID, GroupTitle> titles)\r
{\r
if (groupTitlesRequest != requestID) return;\r
- Dictionary<UUID, GroupTitle> t = titles;\r
+\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new MethodInvoker(delegate()\r
+ {\r
+ Groups_OnGroupTitles(requestID, groupID, titles);\r
+ }\r
+ ));\r
+ return;\r
+ }\r
+\r
+ this.titles = titles;\r
+\r
+ foreach (GroupTitle title in titles.Values)\r
+ {\r
+ cbxActiveTitle.Items.Add(title);\r
+ if (title.Selected)\r
+ {\r
+ cbxActiveTitle.SelectedItem = title;\r
+ }\r
+ }\r
+\r
+ cbxActiveTitle.SelectedIndexChanged += cbxActiveTitle_SelectedIndexChanged;\r
}\r
\r
void Groups_OnGroupMembers(UUID requestID, UUID groupID, Dictionary<UUID, GroupMember> members)\r
List<ListViewItem> newItems = new List<ListViewItem>();\r
List<UUID> unknownNames = new List<UUID>();\r
\r
- foreach (GroupMember member in members.Values)\r
+ foreach (GroupMember baseMember in members.Values)\r
{\r
+ EnhancedGroupMember member = new EnhancedGroupMember(baseMember);\r
string name;\r
\r
- if (instance.haveAvatarName(member.ID))\r
+ if (instance.haveAvatarName(member.Base.ID))\r
{\r
- name = instance.getAvatarName(member.ID);\r
+ name = instance.getAvatarName(member.Base.ID);\r
}\r
else\r
{\r
name = "Loading...";\r
- unknownNames.Add(member.ID);\r
+ unknownNames.Add(member.Base.ID);\r
}\r
\r
ListViewItem item = new ListViewItem(name);\r
item.Tag = member;\r
- item.Name = member.ID.ToString();\r
- item.SubItems.Add(new ListViewItem.ListViewSubItem(item, member.Title));\r
- item.SubItems.Add(new ListViewItem.ListViewSubItem(item, member.OnlineStatus));\r
+ item.Name = member.Base.ID.ToString();\r
+ item.SubItems.Add(new ListViewItem.ListViewSubItem(item, member.Base.Title));\r
+ item.SubItems.Add(new ListViewItem.ListViewSubItem(item, member.Base.OnlineStatus));\r
\r
newItems.Add(item);\r
}\r
}\r
#endregion\r
\r
+ #region Privatate methods\r
+ private bool HasPower(GroupPowers power)\r
+ {\r
+ if (!instance.Groups.ContainsKey(group.ID))\r
+ return false;\r
+\r
+ return (instance.Groups[group.ID].Powers & power) != 0;\r
+ }\r
+\r
+ private void RefreshControlsAvailability()\r
+ {\r
+ if (!HasPower(GroupPowers.ChangeOptions))\r
+ {\r
+ nudEnrollmentFee.ReadOnly = true;\r
+ cbxEnrollmentFee.Enabled = false;\r
+ cbxOpenEnrollment.Enabled = false;\r
+ }\r
+\r
+ if (!HasPower(GroupPowers.ChangeIdentity))\r
+ {\r
+ tbxCharter.ReadOnly = true;\r
+ cbxShowInSearch.Enabled = false;\r
+ cbxMaturity.Enabled = false;\r
+ }\r
+\r
+ if (!myGroups.ContainsKey(group.ID))\r
+ {\r
+ cbxReceiveNotices.Enabled = false;\r
+ cbxListInProfile.Enabled = false;\r
+ }\r
+ }\r
+ \r
+ private void RefreshGroupInfo()\r
+ {\r
+ lvwGeneralMembers.Items.Clear();\r
+ cbxActiveTitle.SelectedIndexChanged -= cbxActiveTitle_SelectedIndexChanged;\r
+ cbxReceiveNotices.CheckedChanged -= new EventHandler(cbxListInProfile_CheckedChanged);\r
+ cbxListInProfile.CheckedChanged -= new EventHandler(cbxListInProfile_CheckedChanged);\r
+\r
+ cbxActiveTitle.Items.Clear();\r
+\r
+ // Request group info\r
+ client.Groups.RequestGroupProfile(group.ID);\r
+ groupTitlesRequest = client.Groups.RequestGroupTitles(group.ID);\r
+ groupMembersRequest = client.Groups.RequestGroupMembers(group.ID);\r
+ }\r
+ #endregion\r
+\r
+ #region Controls change handlers\r
+ void cbxListInProfile_CheckedChanged(object sender, EventArgs e)\r
+ {\r
+ if (myGroups.ContainsKey(group.ID))\r
+ {\r
+ Group g = myGroups[group.ID];\r
+ // g.AcceptNotices = cbxReceiveNotices.Checked;\r
+ // g.ListInProfile = cbxListInProfile.Checked;\r
+ client.Groups.SetGroupAcceptNotices(g.ID, cbxReceiveNotices.Checked, cbxListInProfile.Checked);\r
+ client.Groups.RequestCurrentGroups();\r
+ }\r
+ }\r
+\r
+ private void cbxActiveTitle_SelectedIndexChanged(object sender, EventArgs e)\r
+ {\r
+ GroupTitle title = (GroupTitle)cbxActiveTitle.SelectedItem;\r
+ client.Groups.ActivateTitle(title.GroupID, title.RoleID);\r
+ }\r
+\r
private void btnRefresh_Click(object sender, EventArgs e)\r
{\r
RefreshGroupInfo();\r
}\r
+ #endregion\r
\r
void lvwGeneralMembers_ColumnClick(object sender, ColumnClickEventArgs e)\r
{\r
}\r
}\r
\r
+ public class EnhancedGroupMember\r
+ {\r
+ public GroupMember Base;\r
+ public DateTime LastOnline;\r
+\r
+ public EnhancedGroupMember(GroupMember baseMember)\r
+ {\r
+ Base = baseMember;\r
+\r
+ if (baseMember.OnlineStatus == "Online")\r
+ {\r
+ LastOnline = DateTime.Now;\r
+ }\r
+ else\r
+ {\r
+ LastOnline = Convert.ToDateTime(baseMember.OnlineStatus, Utils.EnUsCulture);\r
+ }\r
+ }\r
+ }\r
+\r
public class GroupMemberSorter : IComparer\r
{\r
public enum SortByColumn\r
public SortOrder CurrentOrder = SortOrder.Ascending;\r
public SortByColumn SortBy = SortByColumn.Name;\r
\r
- public GroupMemberSorter()\r
- {\r
- }\r
-\r
public int Compare(object x, object y)\r
{\r
ListViewItem item1 = (ListViewItem)x;\r
ListViewItem item2 = (ListViewItem)y;\r
- GroupMember member1 = (GroupMember)item1.Tag;\r
- GroupMember member2 = (GroupMember)item2.Tag;\r
+ EnhancedGroupMember member1 = (EnhancedGroupMember)item1.Tag;\r
+ EnhancedGroupMember member2 = (EnhancedGroupMember)item2.Tag;\r
\r
switch (SortBy)\r
{\r
\r
case SortByColumn.Title:\r
if (CurrentOrder == SortOrder.Ascending)\r
- return string.Compare(member1.Title, member2.Title);\r
+ return string.Compare(member1.Base.Title, member2.Base.Title);\r
else\r
- return string.Compare(member2.Title, member1.Title);\r
+ return string.Compare(member2.Base.Title, member1.Base.Title);\r
\r
case SortByColumn.LastOnline:\r
- DateTime t1;\r
- if (member1.OnlineStatus == "Online")\r
- {\r
- t1 = DateTime.Now;\r
- }\r
- else\r
- {\r
- t1 = Convert.ToDateTime(member1.OnlineStatus, Utils.EnUsCulture);\r
- }\r
-\r
- DateTime t2;\r
- if (member2.OnlineStatus == "Online")\r
- {\r
- t2 = DateTime.Now;\r
- }\r
- else\r
- {\r
- t2 = Convert.ToDateTime(member2.OnlineStatus, Utils.EnUsCulture);\r
- }\r
-\r
if (CurrentOrder == SortOrder.Ascending)\r
- return DateTime.Compare(t1, t2);\r
+ return DateTime.Compare(member1.LastOnline, member2.LastOnline);\r
else\r
- return DateTime.Compare(t2, t1);\r
+ return DateTime.Compare(member2.LastOnline, member1.LastOnline);\r
}\r
\r
return 0;\r
switch (e.IM.Dialog)\r
{\r
case InstantMessageDialog.SessionSend:\r
- if (instance.groups.ContainsKey(e.IM.IMSessionID))\r
+ if (instance.Groups.ContainsKey(e.IM.IMSessionID))\r
{\r
HandleGroupIM(e);\r
}\r
{\r
HandleIMFromObject(e);\r
}\r
- else if (e.IM.GroupIM || instance.groups.ContainsKey(e.IM.IMSessionID))\r
+ else if (e.IM.GroupIM || instance.Groups.ContainsKey(e.IM.IMSessionID))\r
{\r
HandleGroupIM(e);\r
}\r
{\r
GridClient client;\r
RadegastInstance instance;\r
- Dictionary<UUID, Group> groups = new Dictionary<UUID, Group>();\r
-\r
+ \r
public GroupsDialog(RadegastInstance instance)\r
{\r
InitializeComponent();\r
Disposed += new EventHandler(GroupsDialog_Disposed);\r
this.client = instance.Client;\r
this.instance = instance;\r
-\r
- // Callbacks\r
client.Groups.OnCurrentGroups += new GroupManager.CurrentGroupsCallback(Groups_OnCurrentGroups);\r
-\r
- client.Groups.RequestCurrentGroups();\r
-\r
+ UpdateDisplay();\r
}\r
\r
void GroupsDialog_Disposed(object sender, EventArgs e)\r
client.Groups.OnCurrentGroups -= new GroupManager.CurrentGroupsCallback(Groups_OnCurrentGroups);\r
}\r
\r
+ void Groups_OnCurrentGroups(Dictionary<UUID, Group> groups)\r
+ {\r
+ BeginInvoke(new MethodInvoker(UpdateDisplay));\r
+ }\r
+\r
public void UpdateDisplay()\r
{\r
Group none = new Group();\r
listBox1.Items.Clear();\r
listBox1.Items.Add(none);\r
\r
- foreach (Group g in groups.Values) {\r
+ foreach (Group g in instance.Groups.Values) {\r
listBox1.Items.Add(g);\r
}\r
\r
}\r
}\r
\r
- void Groups_OnCurrentGroups(Dictionary<UUID, Group> groups)\r
- {\r
- this.groups = groups;\r
- this.Invoke(new MethodInvoker(UpdateDisplay));\r
- }\r
-\r
private void cancelBtn_Click(object sender, EventArgs e)\r
{\r
this.Close();\r
if (g.ID == UUID.Zero) return;\r
\r
client.Groups.LeaveGroup(g.ID);\r
- groups.Remove(g.ID);\r
listBox1.Items.Remove(g);\r
}\r
\r
this.tlblParcel = new System.Windows.Forms.ToolStripStatusLabel();\r
this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();\r
this.pnlDialog = new System.Windows.Forms.Panel();\r
+ this.tbtnGroups = new System.Windows.Forms.ToolStripButton();\r
this.toolStrip1.SuspendLayout();\r
this.statusStrip1.SuspendLayout();\r
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();\r
this.tbtnControl,\r
this.toolStripSeparator2,\r
this.tbnTeleprotMulti,\r
- this.tbnObjects});\r
+ this.tbnObjects,\r
+ this.tbtnGroups});\r
this.toolStrip1.Location = new System.Drawing.Point(0, 0);\r
this.toolStrip1.Name = "toolStrip1";\r
this.toolStrip1.Size = new System.Drawing.Size(738, 25);\r
this.pnlDialog.Size = new System.Drawing.Size(198, 151);\r
this.pnlDialog.TabIndex = 11;\r
// \r
+ // tbtnGroups\r
+ // \r
+ this.tbtnGroups.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;\r
+ this.tbtnGroups.Enabled = false;\r
+ this.tbtnGroups.Image = ((System.Drawing.Image)(resources.GetObject("tbtnGroups.Image")));\r
+ this.tbtnGroups.ImageTransparentColor = System.Drawing.Color.Magenta;\r
+ this.tbtnGroups.Name = "tbtnGroups";\r
+ this.tbtnGroups.Size = new System.Drawing.Size(49, 22);\r
+ this.tbtnGroups.Text = "Groups";\r
+ this.tbtnGroups.Click += new System.EventHandler(this.tbtnGroups_Click);\r
+ // \r
// frmMain\r
// \r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
private System.Windows.Forms.ToolStripStatusLabel icoNoScript;\r
private System.Windows.Forms.ToolStripStatusLabel icoNoPush;\r
private System.Windows.Forms.ToolStripStatusLabel icoNoVoice;\r
+ private System.Windows.Forms.ToolStripButton tbtnGroups;\r
}\r
}\r
\r
{\r
if (e.Status != LoginStatus.Success) return;\r
\r
- tbnObjects.Enabled = tbtnStatus.Enabled = tbtnControl.Enabled = tbnTeleprotMulti.Enabled = tmnuImport.Enabled = true;\r
+ tbtnGroups.Enabled = tbnObjects.Enabled = tbtnStatus.Enabled = tbtnControl.Enabled = tbnTeleprotMulti.Enabled = tmnuImport.Enabled = true;\r
statusTimer.Start();\r
RefreshWindowTitle();\r
}\r
\r
private void netcom_ClientLoggedOut(object sender, EventArgs e)\r
{\r
- tbnObjects.Enabled = tbtnStatus.Enabled = tbtnControl.Enabled = tbnTeleprotMulti.Enabled = tmnuImport.Enabled = false;\r
+ tbtnGroups.Enabled = tbnObjects.Enabled = tbtnStatus.Enabled = tbtnControl.Enabled = tbnTeleprotMulti.Enabled = tmnuImport.Enabled = false;\r
\r
statusTimer.Stop();\r
\r
worldMap.Show();\r
}\r
}\r
+\r
+ private void tbtnGroups_Click(object sender, EventArgs e)\r
+ {\r
+ (new GroupsDialog(instance)).Show();\r
+ }\r
#endregion\r
}\r
}
\ No newline at end of file
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC\r
</value>\r
</data>\r
+ <data name="tbtnGroups.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
+ <value>\r
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL\r
+ U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI\r
+ VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ\r
+ QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4\r
+ /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9\r
+ cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j\r
+ 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR\r
+ dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb\r
+ NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE\r
+ s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC\r
+</value>\r
+ </data>\r
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
<value>116, 17</value>\r
</metadata>\r
client.Objects.OnObjectKilled += new ObjectManager.KillObjectCallback(Objects_OnObjectKilled);\r
client.Objects.OnObjectPropertiesFamily += new ObjectManager.ObjectPropertiesFamilyCallback(Objects_OnObjectPropertiesFamily);\r
client.Network.OnCurrentSimChanged += new NetworkManager.CurrentSimChangedCallback(Network_OnCurrentSimChanged);\r
- instance.OnAvatarName += new RadegastInstance.OnAvatarNameCallBack(instance_OnAvatarName);\r
+ instance.OnAvatarName += new RadegastInstance.AvatarNameCallback(instance_OnAvatarName);\r
}\r
\r
void frmObjects_Disposed(object sender, EventArgs e)\r
client.Objects.OnObjectPropertiesFamily -= new ObjectManager.ObjectPropertiesFamilyCallback(Objects_OnObjectPropertiesFamily);\r
client.Network.OnCurrentSimChanged -= new NetworkManager.CurrentSimChangedCallback(Network_OnCurrentSimChanged);\r
\r
- instance.OnAvatarName -= new RadegastInstance.OnAvatarNameCallBack(instance_OnAvatarName);\r
+ instance.OnAvatarName -= new RadegastInstance.AvatarNameCallback(instance_OnAvatarName);\r
}\r
\r
void propRequester_OnTick(int remaining)\r
// Callbacks\r
client.Objects.OnPayPriceReply += new ObjectManager.PayPriceReply(Objects_OnPayPriceReply);\r
client.Objects.OnObjectPropertiesFamily += new ObjectManager.ObjectPropertiesFamilyCallback(Objects_OnObjectPropertiesFamily);\r
- instance.OnAvatarName += new RadegastInstance.OnAvatarNameCallBack(instance_OnAvatarName);\r
+ instance.OnAvatarName += new RadegastInstance.AvatarNameCallback(instance_OnAvatarName);\r
\r
if (isObject)\r
{\r
{\r
client.Objects.OnPayPriceReply -= new ObjectManager.PayPriceReply(Objects_OnPayPriceReply);\r
client.Objects.OnObjectPropertiesFamily -= new ObjectManager.ObjectPropertiesFamilyCallback(Objects_OnObjectPropertiesFamily);\r
- instance.OnAvatarName -= new RadegastInstance.OnAvatarNameCallBack(instance_OnAvatarName);\r
+ instance.OnAvatarName -= new RadegastInstance.AvatarNameCallback(instance_OnAvatarName);\r
}\r
\r
void frmPay_Click(object sender, EventArgs e)\r
</BootstrapperUrlHistory>\r
<FallbackCulture>en-US</FallbackCulture>\r
<VerifyUploadedFiles>false</VerifyUploadedFiles>\r
+ <ProjectView>ShowAllFiles</ProjectView>\r
</PropertyGroup>\r
</Project>
\ No newline at end of file