Example #1
0
        /// <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;
            }
        }
Example #2
0
        /// <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;
            }
        }