public void CleanUp()\r
{\r
RemoveNetcomEvents();\r
+ instance.Config.ConfigApplied -= new EventHandler<ConfigAppliedEventArgs>(Config_ConfigApplied);\r
\r
textBuffer.Clear();\r
textBuffer = null;\r
\r
public void CleanUp()\r
{\r
- client.Groups.OnCurrentGroups -= new GroupManager.CurrentGroupsCallback(Groups_OnCurrentGroups);\r
- client.Groups.OnGroupLeft -= new GroupManager.GroupLeftCallback(Groups_OnGroupLeft);\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
-\r
- client = null;\r
- netcom = null;\r
+ if (client != null)\r
+ {\r
+ client.Groups.OnCurrentGroups -= new GroupManager.CurrentGroupsCallback(Groups_OnCurrentGroups);\r
+ client.Groups.OnGroupLeft -= new GroupManager.GroupLeftCallback(Groups_OnGroupLeft);\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
+\r
+ client = null;\r
+ }\r
+\r
+ if (netcom != null)\r
+ {\r
+ netcom = null;\r
+ }\r
}\r
\r
void Avatars_OnAvatarNames(Dictionary<UUID, string> names)\r
{\r
public partial class SleekTab\r
{\r
+ private RadegastInstance instance;\r
private ToolStripButton button;\r
private Control control;\r
private Button defaultControlButton;\r
private bool detached = false;\r
private bool merged = false;\r
\r
- public SleekTab(ToolStripButton button, Control control, string name, string label)\r
+ public SleekTab(RadegastInstance instance, ToolStripButton button, Control control, string name, string label)\r
{\r
+ this.instance = instance;\r
this.button = button;\r
this.control = control;\r
this.name = name;\r
{\r
if (!allowClose) return;\r
\r
+ if (control != null)\r
+ {\r
+ if (instance.TabConsole.toolStripContainer1.ContentPanel.Contains(control))\r
+ {\r
+ instance.TabConsole.toolStripContainer1.ContentPanel.Controls.Remove(control);\r
+ }\r
+ control.Dispose();\r
+ control = null;\r
+ }\r
+\r
if (button != null)\r
{\r
+ if (instance.TabConsole.tstTabs.Items.Contains(button))\r
+ {\r
+ instance.TabConsole.tstTabs.Items.Remove(button);\r
+ }\r
button.Dispose();\r
button = null;\r
}\r
\r
- if (control != null)\r
- {\r
- control.Dispose();\r
- control = null;\r
- }\r
\r
OnTabClosed(EventArgs.Empty);\r
}\r
public partial class FriendsConsole : UserControl\r
{\r
private RadegastInstance instance;\r
- private GridClient client;\r
+ private GridClient client { get { return instance.Client; } }\r
private FriendInfo selectedFriend;\r
\r
private bool settingFriend = false;\r
{\r
InitializeComponent();\r
Disposed += new EventHandler(FriendsConsole_Disposed);\r
+\r
this.instance = instance;\r
- client = this.instance.Client;\r
\r
// Callbacks\r
client.Friends.OnFriendOffline += new FriendsManager.FriendOfflineEvent(Friends_OnFriendOffline);\r
public partial class GroupIMTabWindow : UserControl\r
{\r
private RadegastInstance instance;\r
- private RadegastNetcom netcom;\r
+ private GridClient client { get { return instance.Client; } }\r
+ private RadegastNetcom netcom { get { return instance.Netcom; } }\r
private UUID session;\r
private IMTextManager textManager;\r
- private GridClient client;\r
- private AgentManager.GroupChatJoinedCallback grpJoinCallback;\r
\r
ManualResetEvent WaitForSessionStart = new ManualResetEvent(false);\r
\r
public GroupIMTabWindow(RadegastInstance instance, UUID session)\r
{\r
InitializeComponent();\r
+ Disposed += new EventHandler(IMTabWindow_Disposed);\r
\r
this.instance = instance;\r
- this.client = instance.Client;\r
- netcom = this.instance.Netcom;\r
-\r
this.session = session;\r
\r
textManager = new IMTextManager(this.instance, new RichTextBoxPrinter(rtbIMText), this.session);\r
- this.Disposed += new EventHandler(IMTabWindow_Disposed);\r
ApplyConfig(this.instance.Config.CurrentConfig);\r
+ \r
+ // Callbacks\r
this.instance.Config.ConfigApplied += new EventHandler<ConfigAppliedEventArgs>(Config_ConfigApplied);\r
+ client.Self.OnGroupChatJoin += new AgentManager.GroupChatJoinedCallback(Self_OnGroupChatJoin);\r
+\r
client.Self.RequestJoinGroupChat(session);\r
- grpJoinCallback = new AgentManager.GroupChatJoinedCallback(Self_OnGroupChatJoin);\r
- client.Self.OnGroupChatJoin += grpJoinCallback;\r
+ }\r
\r
+ private void IMTabWindow_Disposed(object sender, EventArgs e)\r
+ {\r
+ this.instance.Config.ConfigApplied -= new EventHandler<ConfigAppliedEventArgs>(Config_ConfigApplied);\r
+ client.Self.OnGroupChatJoin -= new AgentManager.GroupChatJoinedCallback(Self_OnGroupChatJoin);\r
+ CleanUp();\r
}\r
\r
+\r
void Self_OnGroupChatJoin(UUID groupChatSessionID, string sessionName, UUID tmpSessionID, bool success)\r
{\r
if (groupChatSessionID != session && tmpSessionID != session) {\r
RefreshControls();\r
}\r
\r
- private void IMTabWindow_Disposed(object sender, EventArgs e)\r
- {\r
- CleanUp();\r
- }\r
-\r
public void CleanUp()\r
{\r
- if (grpJoinCallback != null) {\r
- client.Self.OnGroupChatJoin -= grpJoinCallback;\r
- }\r
textManager.CleanUp();\r
textManager = null;\r
}\r
public partial class IMTabWindow : UserControl\r
{\r
private RadegastInstance instance;\r
- private RadegastNetcom netcom;\r
+ private RadegastNetcom netcom { get { return instance.Netcom; } }\r
private UUID target;\r
private UUID session;\r
private string toName;\r
public IMTabWindow(RadegastInstance instance, UUID target, UUID session, string toName)\r
{\r
InitializeComponent();\r
+ Disposed += new EventHandler(IMTabWindow_Disposed);\r
\r
this.instance = instance;\r
- netcom = this.instance.Netcom;\r
\r
this.target = target;\r
this.session = session;\r
this.toName = toName;\r
\r
textManager = new IMTextManager(this.instance, new RichTextBoxPrinter(rtbIMText), this.session);\r
- this.Disposed += new EventHandler(IMTabWindow_Disposed);\r
-\r
ApplyConfig(this.instance.Config.CurrentConfig);\r
this.instance.Config.ConfigApplied += new EventHandler<ConfigAppliedEventArgs>(Config_ConfigApplied);\r
}\r
\r
+ private void IMTabWindow_Disposed(object sender, EventArgs e)\r
+ {\r
+ this.instance.Config.ConfigApplied -= new EventHandler<ConfigAppliedEventArgs>(Config_ConfigApplied);\r
+ CleanUp();\r
+ }\r
+\r
private void Config_ConfigApplied(object sender, ConfigAppliedEventArgs e)\r
{\r
ApplyConfig(e.AppliedConfig);\r
netcom.ClientDisconnected += new EventHandler<ClientDisconnectEventArgs>(netcom_ClientDisconnected);\r
}\r
\r
+ private void RemoveNetcomEvents()\r
+ {\r
+ netcom.ClientLoginStatus -= new EventHandler<ClientLoginEventArgs>(netcom_ClientLoginStatus);\r
+ netcom.ClientDisconnected -= new EventHandler<ClientDisconnectEventArgs>(netcom_ClientDisconnected);\r
+ }\r
+\r
private void netcom_ClientLoginStatus(object sender, ClientLoginEventArgs e)\r
{\r
if (e.Status != LoginStatus.Success) return;\r
RefreshControls();\r
}\r
\r
- private void IMTabWindow_Disposed(object sender, EventArgs e)\r
- {\r
- CleanUp();\r
- }\r
-\r
public void CleanUp()\r
{\r
instance.TabConsole.RemoveTab(SessionId.ToString());\r
public partial class MainConsole : UserControl, ISleekTabControl\r
{\r
private RadegastInstance instance;\r
- private RadegastNetcom netcom;\r
+ private RadegastNetcom netcom { get { return instance.Netcom; } }\r
\r
public MainConsole(RadegastInstance instance)\r
{\r
InitializeComponent();\r
+ Disposed += new EventHandler(MainConsole_Disposed);\r
\r
this.instance = instance;\r
- netcom = this.instance.Netcom;\r
AddNetcomEvents();\r
\r
cbxLocation.SelectedIndex = 0;\r
InitializeConfig();\r
+ }\r
+\r
+ void MainConsole_Disposed(object sender, EventArgs e)\r
+ {\r
+ RemoveNetcomEvents();\r
+ }\r
+\r
+\r
+ private void AddNetcomEvents()\r
+ {\r
+ netcom.ClientLoggingIn += new EventHandler<OverrideEventArgs>(netcom_ClientLoggingIn);\r
+ netcom.ClientLoginStatus += new EventHandler<ClientLoginEventArgs>(netcom_ClientLoginStatus);\r
+ netcom.ClientLoggingOut += new EventHandler<OverrideEventArgs>(netcom_ClientLoggingOut);\r
+ netcom.ClientLoggedOut += new EventHandler(netcom_ClientLoggedOut);\r
+ }\r
\r
- this.instance.MainForm.FormClosing += new FormClosingEventHandler(MainForm_FormClosing);\r
+ private void RemoveNetcomEvents()\r
+ {\r
+ netcom.ClientLoggingIn -= new EventHandler<OverrideEventArgs>(netcom_ClientLoggingIn);\r
+ netcom.ClientLoginStatus -= new EventHandler<ClientLoginEventArgs>(netcom_ClientLoginStatus);\r
+ netcom.ClientLoggingOut -= new EventHandler<OverrideEventArgs>(netcom_ClientLoggingOut);\r
+ netcom.ClientLoggedOut -= new EventHandler(netcom_ClientLoggedOut);\r
}\r
\r
- private void MainForm_FormClosing(object sender, FormClosingEventArgs e)\r
+ private void SaveConfig()\r
{\r
instance.Config.CurrentConfig.FirstName = txtFirstName.Text;\r
instance.Config.CurrentConfig.LastName = txtLastName.Text;\r
\r
instance.Config.CurrentConfig.LoginGrid = cbxGrid.SelectedIndex;\r
instance.Config.CurrentConfig.LoginUri = txtCustomLoginUri.Text;\r
- }\r
-\r
- private void AddNetcomEvents()\r
- {\r
- netcom.ClientLoggingIn += new EventHandler<OverrideEventArgs>(netcom_ClientLoggingIn);\r
- netcom.ClientLoginStatus += new EventHandler<ClientLoginEventArgs>(netcom_ClientLoginStatus);\r
- netcom.ClientLoggingOut += new EventHandler<OverrideEventArgs>(netcom_ClientLoggingOut);\r
- netcom.ClientLoggedOut += new EventHandler(netcom_ClientLoggedOut);\r
+ instance.Config.SaveCurrentConfig();\r
}\r
\r
private void InitializeConfig()\r
\r
private void btnLogin_Click(object sender, EventArgs e)\r
{\r
+ SaveConfig();\r
switch (btnLogin.Text)\r
{\r
case "Login": BeginLogin(); break;\r
{\r
public partial class MasterTab : UserControl\r
{\r
- private GridClient client;\r
- private RadegastNetcom netcom;\r
private RadegastInstance instance;\r
+ private GridClient client { get { return instance.Client; } }\r
+ private RadegastNetcom netcom { get { return instance.Netcom; } }\r
private Avatar avatar;\r
- private AvatarManager.PointAtCallback callback;\r
- private ObjectManager.ObjectPropertiesCallback objectCallback;\r
private UUID selectedID;\r
private Primitive selectedPrim;\r
\r
public MasterTab(RadegastInstance instance, Avatar avatar)\r
{\r
InitializeComponent();\r
+ Disposed += new EventHandler(MasterTab_Disposed);\r
\r
if (!instance.advancedDebugging)\r
{\r
}\r
\r
this.instance = instance;\r
- this.netcom = this.instance.Netcom;\r
- this.client = this.instance.Client;\r
this.avatar = avatar;\r
-\r
- callback = new AvatarManager.PointAtCallback(Avatars_OnPointAt);\r
- client.Avatars.OnPointAt += callback;\r
-\r
- objectCallback = new ObjectManager.ObjectPropertiesCallback(Objects_OnObjectProperties);\r
- client.Objects.OnObjectProperties += objectCallback;\r
+ \r
+ // Callbacks\r
+ client.Avatars.OnPointAt += new AvatarManager.PointAtCallback(Avatars_OnPointAt);\r
+ client.Objects.OnObjectProperties += new ObjectManager.ObjectPropertiesCallback(Objects_OnObjectProperties);\r
\r
}\r
\r
- ~MasterTab()\r
+ void MasterTab_Disposed(object sender, EventArgs e)\r
{\r
- if (callback != null) {\r
- client.Avatars.OnPointAt -= callback;\r
- }\r
- if (objectCallback != null) {\r
- client.Objects.OnObjectProperties -= objectCallback;\r
- }\r
+ client.Avatars.OnPointAt -= new AvatarManager.PointAtCallback(Avatars_OnPointAt);\r
+ client.Objects.OnObjectProperties -= new ObjectManager.ObjectPropertiesCallback(Objects_OnObjectProperties);\r
}\r
\r
void Objects_OnObjectProperties(Simulator simulator, Primitive.ObjectProperties properties)\r
{\r
public partial class OutfitTextures : UserControl\r
{\r
- private GridClient client;\r
- private RadegastNetcom netcom;\r
private RadegastInstance instance;\r
private Avatar avatar;\r
\r
InitializeComponent();\r
\r
this.instance = instance;\r
- this.netcom = this.instance.Netcom;\r
- this.client = this.instance.Client;\r
this.avatar = avatar;\r
}\r
\r
break;\r
}\r
\r
- if (true ||type != ImageType.Baked) {\r
+ if (type != ImageType.Baked && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE) {\r
SLImageHandler img = new SLImageHandler(instance, face.TextureID, ((AppearanceManager.TextureIndex)j).ToString());\r
img.Location = new Point(0, nTextures++ * img.Height);\r
img.Dock = DockStyle.Top;\r
{\r
public partial class SLImageHandler : UserControl\r
{\r
- private GridClient client;\r
- private RadegastNetcom netcom;\r
private RadegastInstance instance;\r
+ private GridClient client { get { return instance.Client; } }\r
private UUID imageID;\r
private ImageCache cache;\r
\r
}\r
\r
this.instance = instance;\r
- this.netcom = this.instance.Netcom;\r
- this.client = this.instance.Client;\r
this.imageID = image;\r
this.cache = this.instance.ImageCache;\r
tboxImageId.Text = image.ToString();\r
public partial class SearchConsole : UserControl\r
{\r
private RadegastInstance instance;\r
- private RadegastNetcom netcom;\r
- private GridClient client;\r
+ private GridClient client { get { return instance.Client; } }\r
\r
- private TabsConsole tabConsole;\r
private FindPeopleConsole console;\r
\r
private string lastQuery = string.Empty;\r
public SearchConsole(RadegastInstance instance)\r
{\r
InitializeComponent();\r
+ Disposed += new EventHandler(SearchConsole_Disposed);\r
\r
this.instance = instance;\r
- netcom = this.instance.Netcom;\r
- client = this.instance.Client;\r
- AddClientEvents();\r
\r
- tabConsole = this.instance.TabConsole;\r
+ // Callbacks\r
+ client.Directory.OnDirPeopleReply += new DirectoryManager.DirPeopleReplyCallback(Directory_OnDirPeopleReply);\r
\r
console = new FindPeopleConsole(instance, UUID.Random());\r
console.Dock = DockStyle.Fill;\r
pnlFindPeople.Controls.Add(console);\r
}\r
\r
- private void console_SelectedIndexChanged(object sender, EventArgs e)\r
+ void SearchConsole_Disposed(object sender, EventArgs e)\r
{\r
- btnNewIM.Enabled = btnProfile.Enabled = (console.SelectedName != null);\r
+ client.Directory.OnDirPeopleReply -= new DirectoryManager.DirPeopleReplyCallback(Directory_OnDirPeopleReply);\r
}\r
\r
- private void AddClientEvents()\r
+ private void console_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
- client.Directory.OnDirPeopleReply += new DirectoryManager.DirPeopleReplyCallback(Directory_OnDirPeopleReply);\r
+ btnNewIM.Enabled = btnProfile.Enabled = (console.SelectedName != null);\r
}\r
\r
+\r
//Separate thread\r
private void Directory_OnDirPeopleReply(UUID queryID, List<DirectoryManager.AgentSearchData> matchedPeople)\r
{\r
\r
private void btnNewIM_Click(object sender, EventArgs e)\r
{\r
- if (tabConsole.TabExists((client.Self.AgentID ^ console.SelectedAgentUUID).ToString()))\r
+ if (instance.TabConsole.TabExists((client.Self.AgentID ^ console.SelectedAgentUUID).ToString()))\r
{\r
- tabConsole.SelectTab((client.Self.AgentID ^ console.SelectedAgentUUID).ToString());\r
+ instance.TabConsole.SelectTab((client.Self.AgentID ^ console.SelectedAgentUUID).ToString());\r
return;\r
}\r
\r
- tabConsole.AddIMTab(console.SelectedAgentUUID, client.Self.AgentID ^ console.SelectedAgentUUID, console.SelectedName);\r
+ instance.TabConsole.AddIMTab(console.SelectedAgentUUID, client.Self.AgentID ^ console.SelectedAgentUUID, console.SelectedName);\r
}\r
\r
private void btnFind_Click(object sender, EventArgs e)\r
public partial class TPTabWindow : UserControl\r
{\r
private RadegastInstance instance;\r
- private RadegastNetcom netcom;\r
- private GridClient client;\r
+ private GridClient client { get { return instance.Client; } }\r
private string targetName;\r
private UUID targetUUID;\r
\r
InitializeComponent();\r
\r
this.instance = instance;\r
- netcom = this.instance.Netcom;\r
- client = this.instance.Client;\r
ProcessEventArgs(e);\r
}\r
\r
/// </summary>\r
private void InitializeComponent()\r
{\r
+ this.components = new System.ComponentModel.Container();\r
this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();\r
this.tstTabs = new System.Windows.Forms.ToolStrip();\r
this.tbtnCloseTab = new System.Windows.Forms.ToolStripButton();\r
- this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();\r
this.tbtnTabOptions = new System.Windows.Forms.ToolStripDropDownButton();\r
this.tmnuMergeWith = new System.Windows.Forms.ToolStripMenuItem();\r
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();\r
this.tmnuDetachTab = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.ctxTabs = new System.Windows.Forms.ContextMenuStrip(this.components);\r
+ this.ctxBtnDetach = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.ctxBtnClose = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.ctxBtnMerge = new System.Windows.Forms.ToolStripMenuItem();\r
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();\r
this.toolStripContainer1.SuspendLayout();\r
this.tstTabs.SuspendLayout();\r
+ this.ctxTabs.SuspendLayout();\r
this.SuspendLayout();\r
// \r
// toolStripContainer1\r
// \r
// tstTabs\r
// \r
+ this.tstTabs.ContextMenuStrip = this.ctxTabs;\r
this.tstTabs.Dock = System.Windows.Forms.DockStyle.None;\r
+ this.tstTabs.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;\r
this.tstTabs.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
this.tbtnCloseTab,\r
- this.toolStripSeparator1,\r
this.tbtnTabOptions});\r
this.tstTabs.Location = new System.Drawing.Point(0, 0);\r
this.tstTabs.Name = "tstTabs";\r
- this.tstTabs.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;\r
this.tstTabs.Size = new System.Drawing.Size(623, 25);\r
this.tstTabs.Stretch = true;\r
this.tstTabs.TabIndex = 0;\r
this.tbtnCloseTab.Name = "tbtnCloseTab";\r
this.tbtnCloseTab.Size = new System.Drawing.Size(23, 22);\r
this.tbtnCloseTab.ToolTipText = "Close Tab";\r
+ this.tbtnCloseTab.Visible = false;\r
this.tbtnCloseTab.Click += new System.EventHandler(this.tbtnCloseTab_Click);\r
// \r
- // toolStripSeparator1\r
- // \r
- this.toolStripSeparator1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;\r
- this.toolStripSeparator1.Name = "toolStripSeparator1";\r
- this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);\r
- // \r
// tbtnTabOptions\r
// \r
this.tbtnTabOptions.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;\r
this.tbtnTabOptions.ImageTransparentColor = System.Drawing.Color.Magenta;\r
this.tbtnTabOptions.Name = "tbtnTabOptions";\r
this.tbtnTabOptions.Size = new System.Drawing.Size(29, 22);\r
+ this.tbtnTabOptions.Visible = false;\r
this.tbtnTabOptions.Click += new System.EventHandler(this.tbtnTabOptions_Click);\r
// \r
// tmnuMergeWith\r
// \r
this.tmnuMergeWith.Name = "tmnuMergeWith";\r
- this.tmnuMergeWith.Size = new System.Drawing.Size(140, 22);\r
+ this.tmnuMergeWith.Size = new System.Drawing.Size(152, 22);\r
this.tmnuMergeWith.Text = "Merge With";\r
// \r
// toolStripMenuItem1\r
// \r
this.toolStripMenuItem1.Name = "toolStripMenuItem1";\r
- this.toolStripMenuItem1.Size = new System.Drawing.Size(137, 6);\r
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(149, 6);\r
// \r
// tmnuDetachTab\r
// \r
this.tmnuDetachTab.Image = global::Radegast.Properties.Resources.copy_16;\r
this.tmnuDetachTab.Name = "tmnuDetachTab";\r
- this.tmnuDetachTab.Size = new System.Drawing.Size(140, 22);\r
+ this.tmnuDetachTab.Size = new System.Drawing.Size(152, 22);\r
this.tmnuDetachTab.Text = "Detach Tab";\r
this.tmnuDetachTab.Click += new System.EventHandler(this.tmnuDetachTab_Click);\r
// \r
+ // ctxTabs\r
+ // \r
+ this.ctxTabs.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
+ this.ctxBtnDetach,\r
+ this.ctxBtnMerge,\r
+ this.ctxBtnClose});\r
+ this.ctxTabs.Name = "ctxTabs";\r
+ this.ctxTabs.Size = new System.Drawing.Size(135, 70);\r
+ this.ctxTabs.Opening += new System.ComponentModel.CancelEventHandler(this.ctxTabs_Opening);\r
+ // \r
+ // ctxBtnDetach\r
+ // \r
+ this.ctxBtnDetach.Name = "ctxBtnDetach";\r
+ this.ctxBtnDetach.Size = new System.Drawing.Size(152, 22);\r
+ this.ctxBtnDetach.Text = "Detach";\r
+ this.ctxBtnDetach.Click += new System.EventHandler(this.tmnuDetachTab_Click);\r
+ // \r
+ // ctxBtnClose\r
+ // \r
+ this.ctxBtnClose.Name = "ctxBtnClose";\r
+ this.ctxBtnClose.Size = new System.Drawing.Size(152, 22);\r
+ this.ctxBtnClose.Text = "Close";\r
+ this.ctxBtnClose.Click += new System.EventHandler(this.tbtnCloseTab_Click);\r
+ // \r
+ // ctxBtnMerge\r
+ // \r
+ this.ctxBtnMerge.Name = "ctxBtnMerge";\r
+ this.ctxBtnMerge.Size = new System.Drawing.Size(152, 22);\r
+ this.ctxBtnMerge.Text = "Merge with";\r
+ // \r
// TabsConsole\r
// \r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
this.toolStripContainer1.PerformLayout();\r
this.tstTabs.ResumeLayout(false);\r
this.tstTabs.PerformLayout();\r
+ this.ctxTabs.ResumeLayout(false);\r
this.ResumeLayout(false);\r
\r
}\r
\r
#endregion\r
\r
- private System.Windows.Forms.ToolStripContainer toolStripContainer1;\r
- private System.Windows.Forms.ToolStrip tstTabs;\r
+ public System.Windows.Forms.ToolStripContainer toolStripContainer1;\r
+ public System.Windows.Forms.ToolStrip tstTabs;\r
private System.Windows.Forms.ToolStripDropDownButton tbtnTabOptions;\r
private System.Windows.Forms.ToolStripMenuItem tmnuMergeWith;\r
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;\r
private System.Windows.Forms.ToolStripMenuItem tmnuDetachTab;\r
private System.Windows.Forms.ToolStripButton tbtnCloseTab;\r
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;\r
+ private System.Windows.Forms.ContextMenuStrip ctxTabs;\r
+ private System.Windows.Forms.ToolStripMenuItem ctxBtnDetach;\r
+ private System.Windows.Forms.ToolStripMenuItem ctxBtnClose;\r
+ private System.Windows.Forms.ToolStripMenuItem ctxBtnMerge;\r
}\r
}\r
public partial class TabsConsole : UserControl\r
{\r
private RadegastInstance instance;\r
- private RadegastNetcom netcom;\r
- private GridClient client;\r
+ private GridClient client { get { return instance.Client; } }\r
+ private RadegastNetcom netcom { get { return instance.Netcom; } }\r
private ChatTextManager mainChatManger;\r
\r
public Dictionary<string, SleekTab> tabs = new Dictionary<string, SleekTab>();\r
public TabsConsole(RadegastInstance instance)\r
{\r
InitializeComponent();\r
+ Disposed += new EventHandler(TabsConsole_Disposed);\r
\r
this.instance = instance;\r
- netcom = this.instance.Netcom;\r
- client = this.instance.Client;\r
+\r
AddNetcomEvents();\r
\r
InitializeMainTab();\r
InitializeChatTab();\r
\r
ApplyConfig(this.instance.Config.CurrentConfig);\r
- this.instance.Config.ConfigApplied += new EventHandler<ConfigAppliedEventArgs>(Config_ConfigApplied);\r
- this.client.Self.OnScriptQuestion += new AgentManager.ScriptQuestionCallback(Self_OnScriptQuestion);\r
- this.client.Self.OnScriptDialog += new AgentManager.ScriptDialogCallback(Self_OnScriptDialog);\r
+\r
+ // Callbacks\r
+ instance.Config.ConfigApplied += new EventHandler<ConfigAppliedEventArgs>(Config_ConfigApplied);\r
+ client.Self.OnScriptQuestion += new AgentManager.ScriptQuestionCallback(Self_OnScriptQuestion);\r
+ client.Self.OnScriptDialog += new AgentManager.ScriptDialogCallback(Self_OnScriptDialog);\r
client.Inventory.OnObjectOffered += new InventoryManager.ObjectOfferedCallback(Inventory_OnObjectOffered);\r
}\r
\r
+ void TabsConsole_Disposed(object sender, EventArgs e)\r
+ {\r
+ RemoveNetcomEvents();\r
+ instance.Config.ConfigApplied -= new EventHandler<ConfigAppliedEventArgs>(Config_ConfigApplied);\r
+ client.Self.OnScriptQuestion -= new AgentManager.ScriptQuestionCallback(Self_OnScriptQuestion);\r
+ client.Self.OnScriptDialog -= new AgentManager.ScriptDialogCallback(Self_OnScriptDialog);\r
+ client.Inventory.OnObjectOffered -= new InventoryManager.ObjectOfferedCallback(Inventory_OnObjectOffered);\r
+ }\r
+\r
+ private void AddNetcomEvents()\r
+ {\r
+ netcom.ClientLoginStatus += new EventHandler<ClientLoginEventArgs>(netcom_ClientLoginStatus);\r
+ netcom.ClientLoggedOut += new EventHandler(netcom_ClientLoggedOut);\r
+ netcom.ClientDisconnected += new EventHandler<ClientDisconnectEventArgs>(netcom_ClientDisconnected);\r
+ netcom.ChatReceived += new EventHandler<ChatEventArgs>(netcom_ChatReceived);\r
+ netcom.ChatSent += new EventHandler<ChatSentEventArgs>(netcom_ChatSent);\r
+ netcom.AlertMessageReceived += new EventHandler<AlertMessageEventArgs>(netcom_AlertMessageReceived);\r
+ netcom.InstantMessageReceived += new EventHandler<InstantMessageEventArgs>(netcom_InstantMessageReceived);\r
+ }\r
+\r
+ private void RemoveNetcomEvents()\r
+ {\r
+ netcom.ClientLoginStatus -= new EventHandler<ClientLoginEventArgs>(netcom_ClientLoginStatus);\r
+ netcom.ClientLoggedOut -= new EventHandler(netcom_ClientLoggedOut);\r
+ netcom.ClientDisconnected -= new EventHandler<ClientDisconnectEventArgs>(netcom_ClientDisconnected);\r
+ netcom.ChatReceived -= new EventHandler<ChatEventArgs>(netcom_ChatReceived);\r
+ netcom.ChatSent -= new EventHandler<ChatSentEventArgs>(netcom_ChatSent);\r
+ netcom.AlertMessageReceived -= new EventHandler<AlertMessageEventArgs>(netcom_AlertMessageReceived);\r
+ netcom.InstantMessageReceived -= new EventHandler<InstantMessageEventArgs>(netcom_InstantMessageReceived);\r
+ }\r
+\r
bool Inventory_OnObjectOffered(InstantMessage offerDetails, AssetType type, UUID objectID, bool fromTask)\r
{\r
DisplayNotificationInChat(offerDetails.FromAgentName + " gave you " + offerDetails.Message);\r
tstTabs.RenderMode = ToolStripRenderMode.ManagerRenderMode;\r
}\r
\r
- private void AddNetcomEvents()\r
- {\r
- netcom.ClientLoginStatus += new EventHandler<ClientLoginEventArgs>(netcom_ClientLoginStatus);\r
- netcom.ClientLoggedOut += new EventHandler(netcom_ClientLoggedOut);\r
- netcom.ClientDisconnected += new EventHandler<ClientDisconnectEventArgs>(netcom_ClientDisconnected);\r
- netcom.ChatReceived += new EventHandler<ChatEventArgs>(netcom_ChatReceived);\r
- netcom.ChatSent += new EventHandler<ChatSentEventArgs>(netcom_ChatSent);\r
- netcom.AlertMessageReceived += new EventHandler<AlertMessageEventArgs>(netcom_AlertMessageReceived);\r
- netcom.InstantMessageReceived += new EventHandler<InstantMessageEventArgs>(netcom_InstantMessageReceived);\r
- }\r
-\r
private void netcom_ClientLoginStatus(object sender, ClientLoginEventArgs e)\r
{\r
if (e.Status != LoginStatus.Success) return;\r
if (selectedTab.Name == "main")\r
tabs["chat"].Select();\r
\r
+ tabs["main"].AllowClose = true;\r
+ tabs["main"].Close();\r
+\r
client.Self.RetrieveInstantMessages();\r
}\r
\r
DisposeInventoryTab();\r
DisposeFriendsTab();\r
\r
- tabs["main"].Select();\r
+ tabs["chat"].Select();\r
+ DisplayNotificationInChat("Logged out.");\r
+ \r
}\r
\r
private void netcom_ClientDisconnected(object sender, ClientDisconnectEventArgs e)\r
DisposeInventoryTab();\r
DisposeFriendsTab();\r
\r
- tabs["main"].Select();\r
+ tabs["chat"].Select();\r
+ DisplayNotificationInChat("Disconnected.");\r
}\r
\r
private void netcom_AlertMessageReceived(object sender, AlertMessageEventArgs e)\r
button.AutoToolTip = false;\r
button.Tag = tab.Name;\r
button.Click += new EventHandler(TabButtonClick);\r
-\r
tab.Button = button;\r
tabs.Add(tab.Name, tab);\r
}\r
button.Tag = name.ToLower();\r
button.Click += new EventHandler(TabButtonClick);\r
\r
- SleekTab tab = new SleekTab(button, control, name.ToLower(), label);\r
+ SleekTab tab = new SleekTab(instance, button, control, name.ToLower(), label);\r
tab.TabAttached += new EventHandler(tab_TabAttached);\r
tab.TabDetached += new EventHandler(tab_TabDetached);\r
tab.TabSelected += new EventHandler(tab_TabSelected);\r
\r
public void RemoveTabEntry(SleekTab tab)\r
{\r
+ if (tstTabs.Items.Contains(tab.Button))\r
+ {\r
+ tstTabs.Items.Remove(tab.Button);\r
+ }\r
+\r
tab.Button.Dispose();\r
tabs.Remove(tab.Name);\r
}\r
{\r
owner = this.FindForm();\r
}\r
+\r
+ private void ctxTabs_Opening(object sender, CancelEventArgs e)\r
+ {\r
+ Point pt = this.PointToClient(Cursor.Position);\r
+ ToolStripItem stripItem = tstTabs.GetItemAt(pt);\r
+\r
+ if (stripItem == null)\r
+ {\r
+ e.Cancel = true;\r
+ }\r
+ else\r
+ {\r
+ tabs[stripItem.Tag.ToString()].Select();\r
+\r
+ ctxBtnClose.Enabled = selectedTab.AllowClose;\r
+ ctxBtnDetach.Enabled = selectedTab.AllowDetach;\r
+ ctxBtnMerge.Enabled = selectedTab.AllowMerge;\r
+ ctxBtnMerge.DropDown.Items.Clear();\r
+\r
+ if (!ctxBtnClose.Enabled && !ctxBtnDetach.Enabled && !ctxBtnMerge.Enabled)\r
+ {\r
+ e.Cancel = true;\r
+ return;\r
+ }\r
+\r
+ if (!selectedTab.AllowMerge) return;\r
+ if (!selectedTab.Merged)\r
+ {\r
+ ctxBtnMerge.Text = "Merge With";\r
+\r
+ List<SleekTab> otherTabs = GetOtherTabs();\r
+\r
+ ctxBtnMerge.Enabled = (otherTabs.Count > 0);\r
+ if (!ctxBtnMerge.Enabled) return;\r
+\r
+ foreach (SleekTab tab in otherTabs)\r
+ {\r
+ ToolStripItem item = ctxBtnMerge.DropDown.Items.Add(tab.Label);\r
+ item.Tag = tab.Name;\r
+ item.Click += new EventHandler(MergeItemClick);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ ctxBtnMerge.Text = "Split";\r
+ ctxBtnMerge.Click += new EventHandler(SplitClick);\r
+ }\r
+\r
+ }\r
+ }\r
}\r
}\r
<metadata name="tstTabs.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
<value>17, 17</value>\r
</metadata>\r
+ <metadata name="ctxTabs.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
+ <value>107, 17</value>\r
+ </metadata>\r
</root>
\ No newline at end of file
this.tbtnControl = new System.Windows.Forms.ToolStripDropDownButton();\r
this.tmnuControlFly = new System.Windows.Forms.ToolStripMenuItem();\r
this.tmnuControlAlwaysRun = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.groundSitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.standToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();\r
this.tbnTeleprotMulti = new System.Windows.Forms.ToolStripDropDownButton();\r
this.mapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
this.tlblParcel = new System.Windows.Forms.ToolStripStatusLabel();\r
this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();\r
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);\r
- this.standToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
- this.groundSitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
this.toolStrip1.SuspendLayout();\r
this.statusStrip1.SuspendLayout();\r
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();\r
// toolStrip1\r
// \r
this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None;\r
+ this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;\r
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
this.tbtnSLeek,\r
this.toolStripSeparator1,\r
this.tbnTeleprotMulti});\r
this.toolStrip1.Location = new System.Drawing.Point(0, 0);\r
this.toolStrip1.Name = "toolStrip1";\r
- this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;\r
this.toolStrip1.Size = new System.Drawing.Size(738, 25);\r
this.toolStrip1.Stretch = true;\r
this.toolStrip1.TabIndex = 8;\r
// \r
this.tmnuControlFly.CheckOnClick = true;\r
this.tmnuControlFly.Name = "tmnuControlFly";\r
- this.tmnuControlFly.Size = new System.Drawing.Size(152, 22);\r
+ this.tmnuControlFly.Size = new System.Drawing.Size(146, 22);\r
this.tmnuControlFly.Text = "Fly";\r
this.tmnuControlFly.Click += new System.EventHandler(this.tmnuControlFly_Click);\r
// \r
// \r
this.tmnuControlAlwaysRun.CheckOnClick = true;\r
this.tmnuControlAlwaysRun.Name = "tmnuControlAlwaysRun";\r
- this.tmnuControlAlwaysRun.Size = new System.Drawing.Size(152, 22);\r
+ this.tmnuControlAlwaysRun.Size = new System.Drawing.Size(146, 22);\r
this.tmnuControlAlwaysRun.Text = "Always Run";\r
this.tmnuControlAlwaysRun.Click += new System.EventHandler(this.tmnuControlAlwaysRun_Click);\r
// \r
+ // groundSitToolStripMenuItem\r
+ // \r
+ this.groundSitToolStripMenuItem.Name = "groundSitToolStripMenuItem";\r
+ this.groundSitToolStripMenuItem.Size = new System.Drawing.Size(146, 22);\r
+ this.groundSitToolStripMenuItem.Text = "Sit on ground";\r
+ this.groundSitToolStripMenuItem.Click += new System.EventHandler(this.groundSitToolStripMenuItem_Click);\r
+ // \r
+ // standToolStripMenuItem\r
+ // \r
+ this.standToolStripMenuItem.Name = "standToolStripMenuItem";\r
+ this.standToolStripMenuItem.Size = new System.Drawing.Size(146, 22);\r
+ this.standToolStripMenuItem.Text = "Stand";\r
+ this.standToolStripMenuItem.Click += new System.EventHandler(this.standToolStripMenuItem_Click);\r
+ // \r
// toolStripSeparator2\r
// \r
this.toolStripSeparator2.Name = "toolStripSeparator2";\r
this.toolTip1.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;\r
this.toolTip1.ToolTipTitle = "Detailed Info";\r
// \r
- // standToolStripMenuItem\r
- // \r
- this.standToolStripMenuItem.Name = "standToolStripMenuItem";\r
- this.standToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\r
- this.standToolStripMenuItem.Text = "Stand";\r
- this.standToolStripMenuItem.Click += new System.EventHandler(this.standToolStripMenuItem_Click);\r
- // \r
- // groundSitToolStripMenuItem\r
- // \r
- this.groundSitToolStripMenuItem.Name = "groundSitToolStripMenuItem";\r
- this.groundSitToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\r
- this.groundSitToolStripMenuItem.Text = "Sit on ground";\r
- this.groundSitToolStripMenuItem.Click += new System.EventHandler(this.groundSitToolStripMenuItem_Click);\r
- // \r
// frmMain\r
// \r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
\r
#endregion\r
\r
- private System.Windows.Forms.ToolStrip toolStrip1;\r
private System.Windows.Forms.ToolStripDropDownButton tbtnSLeek;\r
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;\r
private System.Windows.Forms.ToolStripMenuItem tmnuExit;\r
private System.Windows.Forms.ToolStripDropDownButton tbtnDebug;\r
private System.Windows.Forms.ToolStripMenuItem tmnuPrefs;\r
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;\r
- private System.Windows.Forms.ToolStripContainer toolStripContainer1;\r
private System.Windows.Forms.ToolStripMenuItem tmnuDebugLog;\r
private System.Windows.Forms.ToolStripDropDownButton tbtnStatus;\r
private System.Windows.Forms.ToolStripMenuItem tmnuStatusAway;\r
private System.Windows.Forms.ToolStripMenuItem groupsToolStripMenuItem;\r
private System.Windows.Forms.ToolStripMenuItem standToolStripMenuItem;\r
private System.Windows.Forms.ToolStripMenuItem groundSitToolStripMenuItem;\r
+ public System.Windows.Forms.ToolStrip toolStrip1;\r
+ public System.Windows.Forms.ToolStripContainer toolStripContainer1;\r
}\r
}\r
\r
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)\r
{\r
if (debugLogForm != null) {\r
- debugLogForm.Dispose();\r
debugLogForm.Close();\r
debugLogForm = null;\r
};\r
+\r
+ if (worldMap != null)\r
+ {\r
+ worldMap.Close();\r
+ worldMap = null;\r
+ }\r
+\r
if (netcom.IsLoggedIn) netcom.Logout();\r
\r
instance.Config.CurrentConfig.MainWindowState = (int)this.WindowState;\r