private void CloneTab(XtraTabPage source)
 {
     var page = new XtraTabPage();
       page.Text = source.Text + " #2";
       page.ShowCloseButton = DefaultBoolean.True;
       var vm = new TabViewModel();
       vm.AssignFrom(this.viewModel);
       page.Tag = vm;
       page.ImageIndex = vm.ImageIndex;
       var idx = this.tabControl.TabPages.IndexOf(source);
       this.tabControl.TabPages.Insert(idx + 1, page);
       this.tabControl.SelectedTabPage = page;
 }
        private void LoadViewModelsFromIniFile(IniFile ini)
        {
            bool hasFavTab = false;
              if (ini != null)
              {
            int i = 0;
            foreach (var section in ini.Sections)
            {
              if (System.Text.RegularExpressions.Regex.IsMatch(section.Name, "^Tab[0-9]+$"))
              {
            var vm = new TabViewModel();
            vm.LoadFromIni(ini, section, this.extenders);
            var page = new XtraTabPage();
            page.Text = section.GetString("TabName") ?? this.GetGameCaption((Game) vm.InitialGameID);
            page.Tag = vm;
            page.ImageIndex = vm.ImageIndex;
            this.tabControl.TabPages.Insert(i++, page);
            hasFavTab |= vm.Source == TabViewModel.SourceType.Favorites;
              }
            }
              }
              else
              {
            // migrate favorite games from v1.16
            int i = 0;
            foreach (var gameId in Settings.Default.FavGameIDs.Split(','))
            {
              if (string.IsNullOrEmpty(gameId))
            continue;
              var vm = new TabViewModel();
              vm.AssignFrom(Settings.Default);
              vm.InitialGameID = int.Parse(gameId);
              var page = new XtraTabPage();
              page.Text = this.GetGameCaption((Game)vm.InitialGameID);
              page.Tag = vm;
              this.tabControl.TabPages.Insert(i++, page);
            }
              }

              if (hasFavTab)
              {
            this.tabControl.TabPages.Remove(this.tabFavorites);
            this.tabFavorites.Dispose();
              }

              if (this.tabControl.TabPages.Count > 2)
            this.tabControl.TabPages.Remove(this.tabGame);
              else
            this.tabGame.Tag = new TabViewModel();
        }
        private void miCreateSnapshot_ItemClick(object sender, ItemClickEventArgs e)
        {
            var srcPage = this.tabControl.SelectedTabPage;

              var vm = new TabViewModel();
              vm.AssignFrom(this.viewModel);
              vm.Source = TabViewModel.SourceType.CustomList;
              vm.GridFilter = null;

              var page = new XtraTabPage();
              page.Text = srcPage.Text + " #2";
              page.ShowCloseButton = DefaultBoolean.True;
              page.Tag = vm;
              page.ImageIndex = vm.ImageIndex;

              vm.servers = new List<ServerRow>();
              for(int i=0, c= this.gvServers.RowCount; i<c; i++)
            vm.servers.Add((ServerRow)this.gvServers.GetRow(i));

              this.tabControl.TabPages.Insert(this.tabControl.TabPages.Count - 1, page);
              this.tabControl.SelectedTabPage = page;
        }