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(); } }
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 { } }
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(); } } }
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"); }
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; }
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; }