示例#1
0
        public void RemoveSelectedSplit()
        {
            var selected = Selected;

            if (selected != null)
            {
                ChatColumn    column = null;
                ColumnTabPage _page  = null;

                foreach (ColumnTabPage page in tabControl.TabPages.Where(x => x is ColumnTabPage))
                {
                    foreach (var c in page.Columns)
                    {
                        if (c.Widgets.Contains(selected))
                        {
                            _page  = page;
                            column = c;
                            break;
                        }
                    }
                }

                if (column != null)
                {
                    column.RemoveWidget(selected);

                    if (column.WidgetCount == 0)
                    {
                        _page.RemoveColumn(column);
                    }
                }

                selected.Dispose();
            }
        }
示例#2
0
        public void ShowChangelog()
        {
            try
            {
                if (File.Exists("./Changelog.md"))
                {
                    var page = new ColumnTabPage();
                    page.CustomTitle = "Changelog";

                    page.AddColumn(new ChatColumn(new ChangelogControl(File.ReadAllText("./Changelog.md"))));

                    tabControl.InsertTab(0, page, true);
                }
            }
            catch { }
        }
示例#3
0
        private void setTabPageLastMessageThingy(ColumnTabPage page)
        {
            if (page == null)
            {
                return;
            }

            foreach (var col in page.Columns)
            {
                foreach (var control in col.Widgets)
                {
                    var container = control as MessageContainerControl;

                    container?.SetLastReadMessage();
                }
            }
        }
示例#4
0
        public void LoadLayout(string path)
        {
            try
            {
                string channelNames = "";
                if (File.Exists(path))
                {
                    var doc = XDocument.Load(path);

                    doc.Root.Process(root =>
                    {
                        foreach (var tab in doc.Elements().First().Elements("tab"))
                        {
                            Console.WriteLine("tab");

                            var page = new ColumnTabPage();

                            page.CustomTitle = tab.Attribute("title")?.Value;

                            page.EnableNewMessageHighlights = (tab.Attribute("enableNewMessageHighlights")?.Value?.ToUpper() ?? "TRUE") == "TRUE";

                            page.EnableGoLiveHighlights = (tab.Attribute("enableGoLiveHighlights")?.Value?.ToUpper() ?? "TRUE") == "TRUE";

                            foreach (var col in tab.Elements("column"))
                            {
                                var column = new ChatColumn();

                                foreach (var chat in col.Elements("chat"))
                                {
                                    if (chat.Attribute("type")?.Value == "twitch")
                                    {
                                        Console.WriteLine("added chat");

                                        var channel = chat.Attribute("channel")?.Value;
                                        try {
                                            var widget         = new ChatControl();
                                            widget.ChannelName = channel;
                                            column.AddWidget(widget);
                                        }  catch (Exception e) {
                                            GuiEngine.Current.log("error loading tab " + e.Message);
                                        }
                                    }
                                }

                                if (column.WidgetCount == 0)
                                {
                                    column.AddWidget(new ChatControl());
                                }

                                page.AddColumn(column);
                            }


                            tabControl.AddTab(page);
                        }
                    });
                }
            }
            catch (Exception exc)
            {
                GuiEngine.Current.log("error loading layout " + exc.Message);
            }

            //columnLayoutControl1.ClearGrid();

            //try
            //{
            //    if (File.Exists(path))
            //    {
            //        XDocument doc = XDocument.Load(path);
            //        doc.Root.Process(root =>
            //        {
            //            root.Elements("tab").Do(tab =>
            //            {
            //                int columnIndex = 0;
            //                tab.Elements("column").Do(xD =>
            //                {
            //                    int rowIndex = 0;
            //                    xD.Elements().Do(x =>
            //                    {
            //                        switch (x.Name.LocalName)
            //                        {
            //                            case "chat":
            //                                if (x.Attribute("type").Value == "twitch")
            //                                {
            //                                    AddChannel(x.Attribute("channel").Value, columnIndex, rowIndex == 0 ? -1 : rowIndex);
            //                                }
            //                                break;
            //                        }
            //                        rowIndex++;
            //                    });
            //                    columnIndex++;
            //                });
            //            });
            //        });
            //    }
            //}
            //catch { }

            if (!tabControl.TabPages.Any())
            {
                tabControl.AddTab(new ColumnTabPage());
            }

            //if (columnLayoutControl1.Columns.Count == 0)
            //    AddChannel("fourtf");
        }
示例#5
0
        public MainForm()
        {
            InitializeComponent();

            // set window bounds
            try
            {
                StartPosition = FormStartPosition.Manual;
                Location      = new Point(Math.Max(0, AppSettings.WindowX), Math.Max(0, AppSettings.WindowY));
                Size          = new Size(Math.Max(AppSettings.WindowWidth, 200), Math.Max(AppSettings.WindowHeight, 200));
            }
            catch { }

            // top most
            TopMost = AppSettings.WindowTopMost;

            AppSettings.WindowTopMostChanged += (s, e) =>
            {
                TopMost = AppSettings.WindowTopMost;
            };

            // icon
            Icon = App.Icon;

            TwitchChannelJoiner.runChannelLoop();

            // load layout
            LoadLayout(Path.Combine(Util.GetUserDataPath(), "Layout.xml"));

#if !DEBUG
            if (AppSettings.CurrentVersion != App.CurrentVersion.ToString())
            {
                AppSettings.CurrentVersion = App.CurrentVersion.ToString();

                if (App.CanShowChangelogs)
                {
                    ShowChangelog();
                }
            }
#endif

            // set title
            SetTitle();

            IrcManager.LoggedIn += (s, e) => SetTitle();

            ChatCommands.addChatCommands();

            // winforms specific
            BackColor = Color.Black;

            KeyPreview = true;

            Activated += (s, e) =>
            {
                App.WindowFocused = true;
            };

            Deactivate += (s, e) =>
            {
                App.WindowFocused = false;
                App.HideToolTip();
                (selected as ChatControl)?.CloseAutocomplete();

                setTabPageLastMessageThingy(tabControl.Selected as ColumnTabPage);

                Refresh();
            };

            tabControl.TabPageSelected += (s, e) =>
            {
                var tab = e.Value as ColumnTabPage;

                if (lastTabPage != null)
                {
                    lastTabPage.LastSelected = Selected;
                    setTabPageLastMessageThingy(lastTabPage);
                }

                if (tab != null)
                {
                    if (tab.LastSelected != null && tab.Columns.SelectMany(x => x.Widgets).Contains(tab.LastSelected))
                    {
                        Selected = tab.LastSelected;
                    }
                    else
                    {
                        Selected = tab?.Columns.FirstOrDefault()?.Widgets.FirstOrDefault();
                    }

                    Selected?.Focus();
                    (Selected as ChatControl)?.CloseAutocomplete();
                    if (Selected != null && (Selected as ChatControl).Channel != null)
                    {
                        TwitchChannel.SelectedChannel = (Selected as ChatControl).Channel;
                    }
                    if (lastTabPage != null)
                    {
                        foreach (var col in lastTabPage.Columns)
                        {
                            foreach (var control in col.Widgets)
                            {
                                var container = control as MessageContainerControl;

                                container.ClearBuffer();
                            }
                        }
                    }
                }

                lastTabPage = tab;
            };

            lastTabPage = tabControl.Selected as ColumnTabPage;
        }
示例#6
0
        public MainForm()
        {
            InitializeComponent();

            // set window bounds
            try
            {
                StartPosition = FormStartPosition.Manual;
                Location      = new Point(Math.Max(0, AppSettings.WindowX), Math.Max(0, AppSettings.WindowY));
                Size          = new Size(Math.Max(AppSettings.WindowWidth, 200), Math.Max(AppSettings.WindowHeight, 200));
            }
            catch { }

            // top most
            TopMost = AppSettings.WindowTopMost;

            AppSettings.WindowTopMostChanged += (s, e) =>
            {
                TopMost = AppSettings.WindowTopMost;
            };

            // icon
            Icon = App.Icon;

            // load layout
            LoadLayout(Path.Combine(Util.GetUserDataPath(), "Layout.xml"));

#if !DEBUG
            if (AppSettings.CurrentVersion == "1.3.0")
            {
                AppSettings.CurrentVersion = App.CurrentVersion.ToString();

                if (MessageBox.Show("Chatterino has been rewritten from ground up! You can install it alongside Chatterino 1 to try it out. Do you want to check it out?",
                                    "Chatterino 2", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Process.Start("https://www.chatterino.com");
                }

                if (App.CanShowChangelogs)
                {
                    ShowChangelog();
                }
            }
#endif

            // set title
            SetTitle();

            IrcManager.LoggedIn += (s, e) => SetTitle();

            // winforms specific
            BackColor = Color.Black;

            KeyPreview = true;

            Activated += (s, e) =>
            {
                App.WindowFocused = true;
            };

            Deactivate += (s, e) =>
            {
                App.WindowFocused = false;
                App.HideToolTip();

                setTabPageLastMessageThingy(tabControl.Selected as ColumnTabPage);

                Refresh();
            };

            tabControl.TabPageSelected += (s, e) =>
            {
                var tab = e.Value as ColumnTabPage;

                if (lastTabPage != null)
                {
                    lastTabPage.LastSelected = Selected;
                    setTabPageLastMessageThingy(lastTabPage);
                }

                if (tab != null)
                {
                    if (tab.LastSelected != null && tab.Columns.SelectMany(x => x.Widgets).Contains(tab.LastSelected))
                    {
                        Selected = tab.LastSelected;
                    }
                    else
                    {
                        Selected = tab?.Columns.FirstOrDefault()?.Widgets.FirstOrDefault();
                    }

                    Selected?.Focus();
                }

                lastTabPage = tab;
            };

            lastTabPage = tabControl.Selected as ColumnTabPage;
        }