/// <summary> /// Add a new Tab Window to the Main Tab Control /// </summary> /// <param name="connection">Which Connection it came from</param> /// <param name="windowName">Window Name of the New Tab</param> /// <param name="windowType">Window Type of the New Tab</param> internal IceTabPage AddWindow(IRCConnection connection, string windowName, IceTabPage.WindowType windowType) { if (this.InvokeRequired) { AddWindowDelegate a = new AddWindowDelegate(AddWindow); return (IceTabPage)this.Invoke(a, new object[] { connection, windowName, windowType }); } else { IceTabPage page; if (windowType == IceTabPage.WindowType.DCCFile) page = new IceTabPageDCCFile(IceTabPage.WindowType.DCCFile, windowName); else { page = new IceTabPage(windowType, windowName); page.Connection = connection; } if (page.WindowStyle == IceTabPage.WindowType.Channel) { page.TextWindow.Font = new Font(iceChatFonts.FontSettings[1].FontName, iceChatFonts.FontSettings[1].FontSize); page.TopicWindow.Font = new Font(iceChatFonts.FontSettings[1].FontName, iceChatFonts.FontSettings[1].FontSize); //send the message string msg = GetMessageFormat("Self Channel Join"); msg = msg.Replace("$nick", connection.ServerSetting.NickName).Replace("$channel", windowName); if (FormMain.Instance.IceChatOptions.LogChannel) page.TextWindow.SetLogFile(); page.TextWindow.AppendText(msg, 1); } else if (page.WindowStyle == IceTabPage.WindowType.Query) { page.TextWindow.Font = new Font(iceChatFonts.FontSettings[2].FontName, iceChatFonts.FontSettings[2].FontSize); if (FormMain.Instance.IceChatOptions.LogQuery) page.TextWindow.SetLogFile(); } else if (page.WindowStyle == IceTabPage.WindowType.Debug) { page.TextWindow.NoColorMode = true; page.TextWindow.Font = new Font("Verdana", 10); page.TextWindow.SetLogFile(); page.TextWindow.SetDebugWindow(); } //find the last window index for this connection int index = 0; if (page.WindowStyle == IceTabPage.WindowType.Channel || page.WindowStyle == IceTabPage.WindowType.Query || page.WindowStyle == IceTabPage.WindowType.DCCChat || page.WindowStyle == IceTabPage.WindowType.DCCFile) { for (int i = 1; i < mainTabControl.TabPages.Count; i++) { if (mainTabControl.TabPages[i].Connection == connection) index = i + 1; } } if (index == 0) mainTabControl.TabPages.Add(page); else mainTabControl.TabPages.Insert(index, page); if (page.WindowStyle == IceTabPage.WindowType.Query && !iceChatOptions.NewQueryForegound) { mainTabControl.SelectTab(mainTabControl.CurrentTab); serverTree.SelectTab(mainTabControl.CurrentTab, false); } else { mainTabControl.SelectTab(page); nickList.CurrentWindow = page; serverTree.SelectTab(page, false); } if (page.WindowStyle == IceTabPage.WindowType.Query && iceChatOptions.WhoisNewQuery) ParseOutGoingCommand(page.Connection, "/whois " + page.TabCaption); return page; } }
/// <summary> /// Add a new Tab Window to the Main Tab Control /// </summary> /// <param name="connection">Which Connection it came from</param> /// <param name="windowName">Window Name of the New Tab</param> /// <param name="windowType">Window Type of the New Tab</param> internal IceTabPage AddWindow(IRCConnection connection, string windowName, IceTabPage.WindowType windowType) { if (this.InvokeRequired) { AddWindowDelegate a = new AddWindowDelegate(AddWindow); return (IceTabPage)this.Invoke(a, new object[] { connection, windowName, windowType }); } else { try { IceTabPage page; if (windowType == IceTabPage.WindowType.DCCFile) page = new IceTabPageDCCFile(IceTabPage.WindowType.DCCFile, windowName, this); else { page = new IceTabPage(windowType, windowName, this); page.Connection = connection; } if (page.WindowStyle == IceTabPage.WindowType.Channel) { page.TextWindow.Font = new Font(iceChatFonts.FontSettings[1].FontName, iceChatFonts.FontSettings[1].FontSize); page.ResizeTopicFont(iceChatFonts.FontSettings[1].FontName, iceChatFonts.FontSettings[1].FontSize); //send the message string msg = GetMessageFormat("Self Channel Join"); msg = msg.Replace("$nick", connection.ServerSetting.CurrentNickName).Replace("$channel", windowName); if (connection.ServerSetting.LocalIP != null && connection.ServerSetting.LocalIP.ToString().Length > 0) msg = msg.Replace("$host", connection.ServerSetting.IdentName + "@" + connection.ServerSetting.LocalIP.ToString()); else msg = msg.Replace("$host", connection.ServerSetting.CurrentNickName); if (iceChatOptions.LogChannel && page.LoggingDisable == false) { page.TextWindow.SetLogFile(iceChatOptions.LogReload); } page.TextWindow.AppendText(msg, ""); } else if (page.WindowStyle == IceTabPage.WindowType.Query) { page.TextWindow.Font = new Font(iceChatFonts.FontSettings[2].FontName, iceChatFonts.FontSettings[2].FontSize); if (iceChatOptions.LogQuery) page.TextWindow.SetLogFile(false); } else if (page.WindowStyle == IceTabPage.WindowType.Debug) { page.TextWindow.NoColorMode = true; page.TextWindow.Font = new Font(iceChatFonts.FontSettings[0].FontName, iceChatFonts.FontSettings[0].FontSize); page.TextWindow.SetLogFile(false); page.TextWindow.SetDebugWindow(); } else if (page.WindowStyle == IceTabPage.WindowType.Window) { page.TextWindow.Font = new Font(iceChatFonts.FontSettings[0].FontName, iceChatFonts.FontSettings[0].FontSize); if (iceChatOptions.LogWindow) page.TextWindow.SetLogFile(false); } else if (page.WindowStyle == IceTabPage.WindowType.ChannelList) { page.ChannelList.Font = new Font(iceChatFonts.FontSettings[1].FontName, iceChatFonts.FontSettings[1].FontSize); } //find the last window index for this connection int index = 0; if (page.WindowStyle == IceTabPage.WindowType.Channel || page.WindowStyle == IceTabPage.WindowType.Query || page.WindowStyle == IceTabPage.WindowType.DCCChat || page.WindowStyle == IceTabPage.WindowType.DCCFile) { for (int i = 1; i < mainChannelBar.TabPages.Count; i++) { if (mainChannelBar.TabPages[i].Connection == connection) index = i + 1; } } if (index == 0) { if (mainTabControl.windowedMode == true) { page.DockedForm = true; FormWindow fw = new FormWindow(page); fw.Text = page.TabCaption; if (windowType == IceTabPage.WindowType.Channel || windowType == IceTabPage.WindowType.Query) fw.Text += " {" + connection.ServerSetting.NetworkName + "}"; fw.MdiParent = this; fw.Show(); } else { page.DockedForm = false; mainTabControl.AddTabPage(page); } mainChannelBar.AddTabPage(ref page); } else { if (mainTabControl.windowedMode == true) { page.DockedForm = true; FormWindow fw = new FormWindow(page); fw.Text = page.TabCaption; if (windowType == IceTabPage.WindowType.Channel || windowType == IceTabPage.WindowType.Query) fw.Text += " {" + connection.ServerSetting.NetworkName + "}"; fw.MdiParent = this; fw.Show(); } else { page.DockedForm = false; mainTabControl.AddTabPage(page); } mainChannelBar.InsertTabPage(index, ref page); } if (page.WindowStyle == IceTabPage.WindowType.Channel || page.WindowStyle == IceTabPage.WindowType.Query) { page.ChannelSettings(page.Connection.ServerSetting.NetworkName, !mainTabControl.Visible); page.TextWindow.ScrollToBottom(); } if (page.WindowStyle == IceTabPage.WindowType.Debug) { ChannelSetting cs = ChannelSettings.FindChannel("Debug",""); if (cs != null) { page.PinnedTab = cs.PinnedTab; page.WindowLocation = cs.WindowLocation; page.WindowSize = cs.WindowSize; } } if (page.WindowStyle == IceTabPage.WindowType.Query && !iceChatOptions.NewQueryForegound) { mainChannelBar.SelectTab(mainChannelBar.CurrentTab); serverTree.SelectTab(mainChannelBar.CurrentTab, false); } else if (page.WindowStyle == IceTabPage.WindowType.Window) { ChannelSetting cs = ChannelSettings.FindChannel(page.TabCaption, ""); if (cs != null) { page.PinnedTab = cs.PinnedTab; page.WindowLocation = cs.WindowLocation; page.WindowSize = cs.WindowSize; } mainChannelBar.Invalidate(); serverTree.Invalidate(); } else { mainChannelBar.SelectTab(page); nickList.CurrentWindow = page; serverTree.SelectTab(page, false); } if (page.WindowStyle == IceTabPage.WindowType.Query && iceChatOptions.WhoisNewQuery == true) { //dont do a whois IF userinfo window is open if (!OnUserInfoWindowExists(page.Connection, page.TabCaption)) ParseOutGoingCommand(page.Connection, "/whois " + page.TabCaption + " " + page.TabCaption); } PluginArgs args = new PluginArgs(page.TextWindow, page.TabCaption, "", "", ""); args.Extra = page.WindowStyle.ToString(); args.Connection = connection; foreach (Plugin p in loadedPlugins) { IceChatPlugin ipc = p as IceChatPlugin; if (ipc != null) { if (ipc.plugin.Enabled == true) ipc.plugin.NewWindow(args); } } return page; } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.Source + ":" + e.StackTrace); } return null; } }