Esempio n. 1
0
        protected override void OnClosing(CancelEventArgs e)
        {
            SaveLayout(Path.Combine(Util.GetUserDataPath(), "Layout.xml"));

            TwitchChannelJoiner.stopChannelLoop();

            AppSettings.WindowX      = Location.X;
            AppSettings.WindowY      = Location.Y;
            AppSettings.WindowWidth  = Width;
            AppSettings.WindowHeight = Height;

            base.OnClosing(e);
        }
Esempio n. 2
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;
        }