Пример #1
0
        private bool CloseTab(QTabItem closingTab, bool fCritical) {
            QTabItemBase base3;
            bool flag2;
            if(closingTab == null) {
                return false;
            }
            if((!fCritical && closingTab.TabLocked) && QTUtility2.PathExists(closingTab.CurrentPath)) {
                return false;
            }
            int index = this.tabControl1.TabPages.IndexOf(closingTab);
            if(index == -1) {
                return false;
            }
            this.lstActivatedTabs.Remove(closingTab);
            AddToHistory(closingTab);
            bool flag = closingTab == this.CurrentTab;
            this.tabControl1.TabPages.Remove(closingTab);
            closingTab.OnClose();
            closingTab = null;
            if(flag) {
                this.CurrentTab = null;
            }
            if(!flag) {
                this.SyncButtonBarCurrent(0x1003c);
                goto Label_0249;
            }
            int tabCount = this.tabControl1.TabCount;
            if(tabCount <= 0) {
                goto Label_0249;
            }
            QTabItemBase tabPage = null;
            switch(QTUtility.ConfigValues[2]) {
                case 0:
                    if(index != tabCount) {
                        tabPage = this.tabControl1.TabPages[index];
                    }
                    else {
                        tabPage = this.tabControl1.TabPages[index - 1];
                    }
                    goto Label_020D;

                case 1:
                    if(index != 0) {
                        tabPage = this.tabControl1.TabPages[index - 1];
                    }
                    else {
                        tabPage = this.tabControl1.TabPages[0];
                    }
                    goto Label_020D;

                case 2:
                    tabPage = this.tabControl1.TabPages[tabCount - 1];
                    goto Label_020D;

                case 3:
                    tabPage = this.tabControl1.TabPages[0];
                    goto Label_020D;

                case 4:
                    if(this.lstActivatedTabs.Count <= 0) {
                        tabPage = this.tabControl1.TabPages[0];
                        goto Label_020D;
                    }
                    base3 = this.lstActivatedTabs[this.lstActivatedTabs.Count - 1];
                    this.lstActivatedTabs.RemoveAt(this.lstActivatedTabs.Count - 1);
                    flag2 = false;
                    foreach(QTabItem item in this.tabControl1.TabPages) {
                        if(item == base3) {
                            flag2 = true;
                            break;
                        }
                    }
                    break;

                default:
                    goto Label_020D;
            }
            if(flag2) {
                tabPage = base3;
            }
            else {
                tabPage = this.tabControl1.TabPages[0];
            }
        Label_020D:
            if(tabPage != null) {
                this.tabControl1.SelectTab(tabPage);
            }
            else {
                this.tabControl1.SelectTab(0);
            }
            this.SyncButtonBarCurrent((tabPage == null) ? 60 : 0x3f);
        Label_0249:
            return true;
        }
Пример #2
0
        private bool CloseTab(QTabItem closingTab, bool fCritical, bool fSkipSync = false) {
            if(closingTab == null) {
                return false;
            }
            if((!fCritical && closingTab.TabLocked) && QTUtility2.PathExists(closingTab.CurrentPath)) {
                return false;
            }
            int index = tabControl1.TabPages.IndexOf(closingTab);
            if(index == -1) {
                return false;
            }
            lstActivatedTabs.Remove(closingTab);
            AddToHistory(closingTab);
            tabControl1.TabPages.Remove(closingTab);
            closingTab.OnClose();
            if(closingTab != CurrentTab) {
                if(!fSkipSync) SyncButtonBarCurrent(0x1003c);
                return true;
            }
            CurrentTab = null;
            int tabCount = tabControl1.TabCount;
            if(tabCount == 0) return true;
            QTabItemBase tabPage = null;
            switch(QTUtility.ConfigValues[2]) {
                case 0:
                    tabPage = tabControl1.TabPages[index == tabCount ? index - 1: index];
                    break;

                case 1:
                    tabPage = tabControl1.TabPages[index == 0 ? 0 : index - 1];
                    break;

                case 2:
                    tabPage = tabControl1.TabPages[tabCount - 1];
                    break;

                case 3:
                    tabPage = tabControl1.TabPages[0];
                    break;

                case 4:
                    if(lstActivatedTabs.Count <= 0) {
                        tabPage = tabControl1.TabPages[0];
                        break;
                    }
                    QTabItemBase lastTab = lstActivatedTabs[lstActivatedTabs.Count - 1];
                    lstActivatedTabs.RemoveAt(lstActivatedTabs.Count - 1);
                    tabPage = tabControl1.TabPages.Contains(lastTab)
                        ? lastTab : tabControl1.TabPages[0];
                    break;
            }
            if(tabPage != null) {
                tabControl1.SelectTab(tabPage);
            }
            else {
                tabControl1.SelectTab(0);
            }
            if(!fSkipSync) SyncButtonBarCurrent((tabPage == null) ? 60 : 0x3f);
            return true;
        }
Пример #3
0
        private bool CloseTab(QTabItem closingTab, bool fCritical, bool fSkipSync = false)
        {
            if(closingTab == null) {
                return false;
            }
            if((!fCritical && closingTab.TabLocked) && QTUtility2.PathExists(closingTab.CurrentPath)) {
                return false;
            }
            int index = tabControl1.TabPages.IndexOf(closingTab);
            if(index == -1) {
                return false;
            }
            lstActivatedTabs.Remove(closingTab);
            AddToHistory(closingTab);
            tabControl1.TabPages.Remove(closingTab);
            closingTab.OnClose();
            if(closingTab != CurrentTab) {
                if(!fSkipSync) {
                    TryCallButtonBar(bbar => bbar.RefreshButtons());
                    QTabItem.CheckSubTexts(tabControl1);
                }
                return true;
            }
            CurrentTab = null;
            int tabCount = tabControl1.TabCount;
            if(tabCount == 0) return true;
            QTabItem tabPage = null;
            switch(Config.Tabs.NextAfterClosed) {
                case TabPos.Right:
                    tabPage = tabControl1.TabPages[index == tabCount ? index - 1: index];
                    break;

                case TabPos.Left:
                    tabPage = tabControl1.TabPages[index == 0 ? 0 : index - 1];
                    break;

                case TabPos.Rightmost:
                    tabPage = tabControl1.TabPages[tabCount - 1];
                    break;

                case TabPos.Leftmost:
                    tabPage = tabControl1.TabPages[0];
                    break;

                case TabPos.LastActive:
                    if(lstActivatedTabs.Count > 0) {
                        QTabItem lastTab = lstActivatedTabs[lstActivatedTabs.Count - 1];
                        lstActivatedTabs.RemoveAt(lstActivatedTabs.Count - 1);
                        tabPage = tabControl1.TabPages.Contains(lastTab)
                                ? lastTab
                                : tabControl1.TabPages[0];
                    }
                    else {
                        tabPage = tabControl1.TabPages[0];
                    }
                    break;
            }
            if(tabPage != null) {
                tabControl1.SelectTab(tabPage);
            }
            else {
                tabControl1.SelectTab(0);
            }
            if(!fSkipSync) {
                TryCallButtonBar(bbar => bbar.RefreshButtons());
            }
            return true;
        }