Пример #1
0
            // 创建新标签 地址  索引 是否锁定  是否选中
            public bool CreateTab(Address address, int index, bool fLocked, bool fSelect)
            {
                using (IDLWrapper wrapper = new IDLWrapper(address)) {
                    address.ITEMIDLIST = wrapper.IDL;
                    address.Path       = wrapper.Path;
                }
                if ((address.ITEMIDLIST == null) || (address.ITEMIDLIST.Length <= 0))
                {
                    return(false);
                }
                QTabItem tab = new QTabItem(QTUtility2.MakePathDisplayText(address.Path, false), address.Path, tabBar.tabControl1);

                tab.NavigatedTo(address.Path, address.ITEMIDLIST, -1, false);
                tab.ToolTipText = QTUtility2.MakePathDisplayText(address.Path, true);
                tab.TabLocked   = fLocked;
                if (index < 0)
                {
                    tabBar.AddInsertTab(tab);
                }
                else
                {
                    if (index > tabBar.tabControl1.TabCount)
                    {
                        index = tabBar.tabControl1.TabCount;
                    }
                    tabBar.tabControl1.TabPages.Insert(index, tab);
                }
                if (fSelect)
                {
                    tabBar.tabControl1.SelectTab(tab);
                }
                return(true);
            }
Пример #2
0
        public QTabItem Clone(bool fAll)
        {
            QTabItem item = new QTabItem(base.Text, this.currentPath, base.Owner);

            item.TabBounds    = base.TabBounds;
            item.Comment      = base.Comment;
            item.currentIDL   = this.currentIDL;
            item.ToolTipText  = base.ToolTipText;
            item.tooltipText2 = this.tooltipText2;
            if (fAll)
            {
                item.tabLocked = base.tabLocked;
            }
            LogData[] array      = this.stckHistoryForward.ToArray();
            LogData[] dataArray2 = this.stckHistoryBackward.ToArray();
            Array.Reverse(array);
            Array.Reverse(dataArray2);
            item.stckHistoryForward  = new Stack <LogData>(array);
            item.stckHistoryBackward = new Stack <LogData>(dataArray2);
            item.dicFocusedItemName  = new Dictionary <string, string>(this.dicFocusedItemName);
            item.lstHistoryBranches  = new List <LogData>(this.lstHistoryBranches.ToArray());
            Dictionary <string, Address[]> dictionary = new Dictionary <string, Address[]>();

            foreach (string str in this.dicSelectdItems.Keys)
            {
                dictionary.Add(str, this.dicSelectdItems[str]);
            }
            item.dicSelectdItems = dictionary;
            return(item);
        }
Пример #3
0
        public QTabItem Clone(bool fAll = false)
        {
            QTabItem item = new QTabItem(Text, currentPath, Owner);

            item.TabBounds    = TabBounds;
            item.Comment      = Comment;
            item.currentIDL   = currentIDL;
            item.ToolTipText  = ToolTipText;
            item.tooltipText2 = tooltipText2;
            if (fAll)
            {
                item.tabLocked = tabLocked;
            }
            LogData[] array      = stckHistoryForward.ToArray();
            LogData[] dataArray2 = stckHistoryBackward.ToArray();
            Array.Reverse(array);
            Array.Reverse(dataArray2);
            item.stckHistoryForward  = new Stack <LogData>(array);
            item.stckHistoryBackward = new Stack <LogData>(dataArray2);
            item.dicFocusedItemName  = new Dictionary <string, string>(dicFocusedItemName);
            item.lstHistoryBranches  = new List <LogData>(lstHistoryBranches.ToArray());
            Dictionary <string, Address[]> dictionary = dicSelectdItems.Keys
                                                        .ToDictionary(str => str, str => dicSelectdItems[str]);

            item.dicSelectdItems = dictionary;
            return(item);
        }
Пример #4
0
        public QTabItem Clone(bool fAll = false)
        {
            QTabItem item = new QTabItem(Text, currentPath, Owner)
            {
                TabBounds           = TabBounds,
                Comment             = Comment,
                CurrentIDL          = CurrentIDL,
                ToolTipText         = ToolTipText,
                shellToolTip        = shellToolTip,
                tabLocked           = fAll && tabLocked,
                stckHistoryForward  = new Stack <LogData>(stckHistoryForward.Reverse()),
                stckHistoryBackward = new Stack <LogData>(stckHistoryBackward.Reverse()),
                dicFocusedItemName  = new Dictionary <string, string>(dicFocusedItemName),
                Branches            = new List <LogData>(Branches.ToArray()),
                dicSelectedItems    = dicSelectedItems.Keys
                                      .ToDictionary(str => str, str => dicSelectedItems[str])
            };

            return(item);
        }
Пример #5
0
 public TabWrapper(QTabItem tab, QTTabBarClass tabBar)
 {
     this.tab = tab;
     this.tabBar = tabBar;
     this.tab.Closed += tab_Closed;
 }
Пример #6
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;
        }
Пример #7
0
 private QTabItem CloneTabButton(QTabItem tab, string optionURL, bool fSelect, int index) {
     NowTabCloned = fSelect;
     QTabItem item = tab.Clone();
     if(index < 0) {
         AddInsertTab(item);
     }
     else if((-1 < index) && (index < (tabControl1.TabCount + 1))) {
         tabControl1.TabPages.Insert(index, item);
     }
     else {
         AddInsertTab(item);
     }
     if(optionURL != null) {
         using(IDLWrapper wrapper = new IDLWrapper(optionURL)) {
             item.NavigatedTo(optionURL, wrapper.IDL, -1);
         }
     }
     if(fSelect) {
         tabControl1.SelectTab(item);
     }
     else {
         item.RefreshRectangle();
         tabControl1.Refresh();
     }
     return item;
 }
Пример #8
0
        public override int TranslateAcceleratorIO(ref MSG msg) {
            if(msg.message == WM.KEYDOWN) {
                Keys wParam = (Keys)((int)((long)msg.wParam));
                bool flag = (((int)((long)msg.lParam)) & 0x40000000) != 0;
                switch(wParam) {
                    case Keys.Delete: {
                            if(!tabControl1.Focused || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing)) {
                                break;
                            }
                            int focusedTabIndex = tabControl1.GetFocusedTabIndex();
                            if((-1 < focusedTabIndex) && (focusedTabIndex < tabControl1.TabCount)) {
                                bool flag3 = focusedTabIndex == (tabControl1.TabCount - 1);
                                if(CloseTab((QTabItem)tabControl1.TabPages[focusedTabIndex]) && flag3) {
                                    tabControl1.FocusNextTab(true, false, false);
                                }
                            }
                            return 0;
                        }
                    case Keys.Apps:
                        if(!flag) {
                            int index = tabControl1.GetFocusedTabIndex();
                            if((-1 >= index) || (index >= tabControl1.TabCount)) {
                                break;
                            }
                            ContextMenuedTab = (QTabItem)tabControl1.TabPages[index];
                            Rectangle tabRect = tabControl1.GetTabRect(index, true);
                            contextMenuTab.Show(PointToScreen(new Point(tabRect.Right + 10, tabRect.Bottom - 10)));
                        }
                        return 0;

                    case Keys.F6:
                    case Keys.Tab:
                    case Keys.Left:
                    case Keys.Right: {
                            if(!tabControl1.Focused || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing)) {
                                break;
                            }
                            bool fBack = (ModifierKeys == Keys.Shift) || (wParam == Keys.Left);
                            if(!tabControl1.FocusNextTab(fBack, false, false)) {
                                break;
                            }
                            return 0;
                        }
                    case Keys.Back:
                        return 0;

                    case Keys.Return:
                    case Keys.Space:
                        if(!flag && !tabControl1.SelectFocusedTab()) {
                            break;
                        }
                        listView.SetFocus();
                        return 0;

                    case Keys.Escape:
                        if(tabControl1.Focused && ((subDirTip_Tab == null) || !subDirTip_Tab.MenuIsShowing)) {
                            listView.SetFocus();
                        }
                        break;

                    case Keys.End:
                    case Keys.Home:
                        if((!tabControl1.Focused || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing)) || !tabControl1.FocusNextTab(wParam == Keys.Home, false, true)) {
                            break;
                        }
                        return 0;

                    case Keys.Up:
                    case Keys.Down:
                        if(((!QTUtility.CheckConfig(Settings.ShowSubDirTipOnTab) || !tabControl1.Focused) || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing)) || (!flag && !tabControl1.PerformFocusedFolderIconClick(wParam == Keys.Up))) {
                            break;
                        }
                        return 0;
                }
            }
            return base.TranslateAcceleratorIO(ref msg);
        }
Пример #9
0
 private void tabControl1_MouseUp(object sender, MouseEventArgs e) {
     if(NowTabDragging && (e.Button == MouseButtons.Left)) {
         QTabItem tabMouseOn = (QTabItem)tabControl1.GetTabMouseOn();
         Keys modifierKeys = ModifierKeys;
         if(((tabMouseOn == null) && (DraggingTab != null)) && ((modifierKeys == Keys.Control) || (modifierKeys == (Keys.Control | Keys.Shift)))) {
             bool flag = false;
             Point pt = tabControl1.PointToScreen(e.Location);
             if(!QTUtility.IsXP) {
                 RECT rect;
                 PInvoke.GetWindowRect(ReBarHandle, out rect);
                 flag = PInvoke.PtInRect(ref rect, pt);
             }
             else {
                 RECT rect2;
                 IntPtr ptr;
                 if(QTUtility.instanceManager.TryGetButtonBarHandle(ExplorerHandle, out ptr) && PInvoke.IsWindowVisible(ptr)) {
                     PInvoke.GetWindowRect(ptr, out rect2);
                     if(PInvoke.PtInRect(ref rect2, pt)) {
                         flag = true;
                     }
                 }
                 PInvoke.GetWindowRect(Handle, out rect2);
                 if(PInvoke.PtInRect(ref rect2, pt)) {
                     flag = true;
                 }
             }
             if(flag) {
                 CloneTabButton(DraggingTab, null, false, tabControl1.TabCount);
             }
         }
         else if(((tabMouseOn != null) && (tabMouseOn == DraggingTab)) && ((modifierKeys == Keys.Control) && (DraggingDestRect == Rectangle.Empty))) {
             DraggingTab.TabLocked = !DraggingTab.TabLocked;
         }
         NowTabDragging = false;
         DraggingTab = null;
         DraggingDestRect = Rectangle.Empty;
         SyncButtonBarCurrent(12);
     }
     else if((e.Button == MouseButtons.Middle) && !Explorer.Busy) {
         DraggingTab = null;
         NowTabDragging = false;
         QTabItem clickedTab = (QTabItem)tabControl1.GetTabMouseOn();
         if((clickedTab != null) && ((ModifierKeys & Keys.Control) != Keys.Control)) {
             HandleTabClickAction(clickedTab, true);
         }
     }
     Cursor = Cursors.Default;
 }
Пример #10
0
 private static void AddToHistory(QTabItem closingTab) {
     string currentPath = closingTab.CurrentPath;
     if((!QTUtility.CheckConfig(Settings.NoHistory) && !string.IsNullOrEmpty(currentPath)) && !IsSearchResultFolder(currentPath)) {
         if(QTUtility2.IsShellPathButNotFileSystem(currentPath) && (currentPath.IndexOf("???") == -1)) {
             currentPath = currentPath + "???" + closingTab.GetLogHash(true, 0);
         }
         QTUtility.ClosedTabHistoryList.Add(currentPath);
         SyncButtonBarBroadCast(2);
     }
 }
Пример #11
0
 private void AddStartUpTabs(string openingGRP, string openingPath) {
     if(ModifierKeys == Keys.Shift || QTUtility.InstancesCount != 1) return;
     if(QTUtility.StartUpGroupList.Count > 0) {
         bool flag = QTUtility.CheckConfig(Settings.DontOpenSame);
         foreach(string str in QTUtility.StartUpGroupList) {
             string str2;
             if((openingGRP != str) && QTUtility.GroupPathsDic.TryGetValue(str, out str2)) {
                 if(QTUtility.StartUpGroupNameNowOpening == str) {
                     QTUtility.StartUpGroupNameNowOpening = string.Empty;
                 }
                 else {
                     foreach(string str3 in str2.Split(QTUtility.SEPARATOR_CHAR)) {
                         if(flag) {
                             if(str3.PathEquals(openingPath)) {
                                 tabControl1.TabPages.Relocate(0, tabControl1.TabCount - 1);
                                 continue;
                             }
                             if(tabControl1.TabPages.Cast<QTabItem>().Any(item => str3.PathEquals(item.CurrentPath))) {
                                 continue;
                             }
                         }
                         using(IDLWrapper wrapper = new IDLWrapper(str3)) {
                             if(wrapper.Available) {
                                 QTabItem tabPage = new QTabItem(QTUtility2.MakePathDisplayText(str3, false), str3, tabControl1);
                                 tabPage.NavigatedTo(str3, wrapper.IDL, -1);
                                 tabPage.ToolTipText = QTUtility2.MakePathDisplayText(str3, true);
                                 tabPage.UnderLine = true;
                                 tabControl1.TabPages.Add(tabPage);
                             }
                         }
                     }
                 }
             }
         }
     }
     if(QTUtility.CheckConfig(Settings.RestoreLockedTabs)) {
         RestoreTabsOnInitialize(1, openingPath);
     }
     else if(QTUtility.CheckConfig(Settings.RestoreTabs) || fIsFirstLoad) {
         RestoreTabsOnInitialize(0, openingPath);
     }
 }
Пример #12
0
        private void Explorer_NavigateComplete2(object pDisp, ref object URL) {
            string path = (string)URL;
            lastCompletedBrowseObjectIDL = lastAttemptedBrowseObjectIDL;
            if(!IsShown) {
                DoFirstNavigation(false, path);
            }            

            if(fNowQuitting) {
                Explorer.Quit();
            }
            else {
                int hash = -1;
                bool flag = IsSpecialFolderNeedsToTravel(path);
                bool flag2 = QTUtility2.IsShellPathButNotFileSystem(path);
                bool flag3 = QTUtility2.IsShellPathButNotFileSystem(CurrentTab.CurrentPath);

                // If we're navigating on a locked tab, we simulate opening the target folder
                // in a new tab.  First we clone the tab at the old address and lock it.  Then
                // we move the current tab to the "new tab" position and unlock it.
                if(!flag2 && !flag3 && !NavigatedByCode && CurrentTab.TabLocked) {
                    int pos = tabControl1.SelectedIndex;
                    tabControl1.SetRedraw(false);
                    QTabItem item = CloneTabButton(CurrentTab, null, false, pos);
                    item.TabLocked = true;
                    CurrentTab.TabLocked = false;
                    pos++;
                    int max = tabControl1.TabPages.Count - 1;

                    switch(QTUtility.ConfigValues[1]) {
                        case 0:
                            if(pos != max) {
                                tabControl1.TabPages.Relocate(pos, max);
                            }
                            break;
                        case 1:
                            tabControl1.TabPages.Relocate(pos, 0);
                            break;
                        case 3:
                            tabControl1.TabPages.Relocate(pos, pos - 1);
                            break;
                    }
                    tabControl1.SetRedraw(true);

                    lstActivatedTabs.Remove(CurrentTab);
                    lstActivatedTabs.Add(item);
                    lstActivatedTabs.Add(CurrentTab);
                    if(lstActivatedTabs.Count > 15) {
                        lstActivatedTabs.RemoveAt(0);
                    }
                }

                if(!NavigatedByCode && flag) {
                    hash = DateTime.Now.GetHashCode();
                    LogEntryDic[hash] = GetCurrentLogEntry();
                }
                ClearTravelLogs();
                try {
                    tabControl1.SetRedraw(false);
                    if(fNowTravelByTree) {
                        using(IDLWrapper wrapper = GetCurrentPIDL()) {
                            QTabItem tabPage = CreateNewTab(wrapper);
                            tabControl1.SelectTabDirectly(tabPage);
                            CurrentTab = tabPage;
                        }
                    }
                    if(tabControl1.AutoSubText && !fNavigatedByTabSelection) {
                        CurrentTab.Comment = string.Empty;
                    }
                    CurrentAddress = path;
                    CurrentTab.Text = Explorer.LocationName;
                    CurrentTab.CurrentIDL = null;
                    CurrentTab.TooltipText2 = null;
                    byte[] idl;
                    using(IDLWrapper wrapper2 = GetCurrentPIDL()) {
                        CurrentTab.CurrentIDL = idl = wrapper2.IDL;
                        if(flag) {
                            if((!NavigatedByCode && (idl != null)) && (idl.Length > 0)) {
                                path = path + "*?*?*" + hash;
                                QTUtility.ITEMIDLIST_Dic_Session[path] = idl;
                                CurrentTab.CurrentPath = CurrentAddress = path;
                            }
                        }
                        else if((flag2 && wrapper2.Available) && !CurrentTab.CurrentPath.Contains("???")) {
                            string str2;
                            int num2;
                            if(IDLWrapper.GetIDLHash(wrapper2.PIDL, out num2, out str2)) {
                                hash = num2;
                                CurrentTab.CurrentPath = CurrentAddress = path = str2;
                            }
                            else if((idl != null) && (idl.Length > 0)) {
                                hash = num2;
                                path = path + "???" + hash;
                                IDLWrapper.AddCache(path, idl);
                                CurrentTab.CurrentPath = CurrentAddress = path;
                            }
                        }
                        if(!NavigatedByCode) {
                            CurrentTab.NavigatedTo(CurrentAddress, idl, hash);
                        }
                    }
                    SyncTravelState();
                    if(QTUtility.IsXP) {
                        if(CurrentAddress.StartsWith(QTUtility.PATH_SEARCHFOLDER)) {
                            ShowSearchBar(true);
                        }
                        else if(QTUtility.fExplorerPrevented || QTUtility.fRestoreFolderTree) {
                            if(!QTUtility.CheckConfig(Settings.NoNewWndFolderTree) || QTUtility.fRestoreFolderTree) {
                                ShowFolderTree(true);
                            }
                            QTUtility.fExplorerPrevented = QTUtility.fRestoreFolderTree = false;
                        }
                    }
                    if(CurrentAddress.StartsWith("::")) {
                        CurrentTab.ToolTipText = CurrentTab.Text;
                        QTUtility.DisplayNameCacheDic[CurrentAddress] = CurrentTab.Text;
                    }
                    else if(flag2) {
                        CurrentTab.ToolTipText = (string)URL;
                    }
                    else if(((CurrentAddress.Length == 3) || CurrentAddress.StartsWith(@"\\")) || (CurrentAddress.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || CurrentAddress.StartsWith("ftp://", StringComparison.OrdinalIgnoreCase))) {
                        CurrentTab.ToolTipText = CurrentTab.CurrentPath;
                        QTUtility.DisplayNameCacheDic[CurrentAddress] = CurrentTab.Text;
                    }
                    else {
                        CurrentTab.ToolTipText = CurrentTab.CurrentPath;
                    }
                    if(NavigatedByCode && !NowTabCreated) {
                        string str3;
                        Address[] selectedItemsAt = CurrentTab.GetSelectedItemsAt(CurrentAddress, out str3);
                        if(selectedItemsAt != null) {
                            ShellBrowser.TrySetSelection(selectedItemsAt, str3, true);
                        }
                    }
                    else if(!string.IsNullOrEmpty(QTUtility.PathToSelectInCommandLineArg)) {
                        Address[] addresses = new Address[] { new Address(QTUtility.PathToSelectInCommandLineArg) };
                        ShellBrowser.TrySetSelection(addresses, null, true);
                        QTUtility.PathToSelectInCommandLineArg = string.Empty;
                    }
                    if(QTUtility.RestoreFolderTree_Hide) {
                        new WaitTimeoutCallback(WaitTimeout).BeginInvoke(150, AsyncComplete_FolderTree, false);
                    }
                    if(fNowRestoring) {
                        fNowRestoring = false;
                        if(QTUtility.LockedTabsToRestoreList.Contains(path)) {
                            CurrentTab.TabLocked = true;
                        }
                    }
                    if((!QTUtility.IsXP || FirstNavigationCompleted) && (!PInvoke.IsWindowVisible(ExplorerHandle) || PInvoke.IsIconic(ExplorerHandle))) {
                        WindowUtils.BringExplorerToFront(ExplorerHandle);
                    }
                    if(pluginManager != null) {
                        pluginManager.OnNavigationComplete(tabControl1.SelectedIndex, idl, (string)URL);
                    }
                    if(buttonNavHistoryMenu.DropDown.Visible) {
                        buttonNavHistoryMenu.DropDown.Close(ToolStripDropDownCloseReason.AppFocusChange);
                    }
                    if(QTUtility.CheckConfig(Settings.AutoUpdate)) {
                        UpdateChecker.Check(false);
                    }
                }
                catch(Exception exception) {
                    QTUtility2.MakeErrorLog(exception, null);
                }
                finally {
                    QTUtility.RestoreFolderTree_Hide = NavigatedByCode = fNavigatedByTabSelection = NowTabCreated = fNowTravelByTree = false;
                    tabControl1.SetRedraw(true);
                    FirstNavigationCompleted = true;
                }
            }
        }
Пример #13
0
        private void AddInsertTab(QTabItem tab) {
            switch(QTUtility.ConfigValues[1]) {
                case 1:
                    tabControl1.TabPages.Insert(0, tab);
                    return;

                case 2:
                case 3: {
                        int index = tabControl1.TabPages.IndexOf(CurrentTab);
                        if(index == -1) {
                            tabControl1.TabPages.Add(tab);
                            return;
                        }
                        tabControl1.TabPages.Insert((QTUtility.ConfigValues[1] == 2) ? (index + 1) : index, tab);
                        return;
                    }
            }
            tabControl1.TabPages.Add(tab);
        }
Пример #14
0
 private QTabItem CreateNewTab(IDLWrapper idlw) {
     string path = idlw.Path;
     QTabItem tab = new QTabItem(QTUtility2.MakePathDisplayText(path, false), path, tabControl1);
     tab.NavigatedTo(path, idlw.IDL, -1);
     tab.ToolTipText = QTUtility2.MakePathDisplayText(path, true);
     AddInsertTab(tab);
     return tab;
 }
Пример #15
0
 private void CreateGroup(QTabItem contextMenuedTab) {
     NowModalDialogShown = true;
     QTUtility.RefreshGroupsDic();
     using(CreateNewGroupForm form = new CreateNewGroupForm(contextMenuedTab.CurrentPath, tabControl1.TabPages)) {
         if(NowTopMost) {
             form.TopMost = true;
         }
         if(DialogResult.OK == form.ShowDialog()) {
             QTUtility.SaveGroupsReg();
             SyncButtonBarBroadCast(1);
             SyncTaskBarMenu();
         }
     }
     NowModalDialogShown = false;
 }
Пример #16
0
 public TabWrapper(QTabItem tab, QTTabBarClass tabBar)
 {
     this.tab         = tab;
     this.tabBar      = tabBar;
     this.tab.Closed += tab_Closed;
 }
Пример #17
0
 public QTabItem Clone(bool fAll = false) {
     QTabItem item = new QTabItem(Text, currentPath, Owner);
     item.TabBounds = TabBounds;
     item.Comment = Comment;
     item.currentIDL = currentIDL;
     item.ToolTipText = ToolTipText;
     item.tooltipText2 = tooltipText2;
     if(fAll) {
         item.tabLocked = tabLocked;
     }
     LogData[] array = stckHistoryForward.ToArray();
     LogData[] dataArray2 = stckHistoryBackward.ToArray();
     Array.Reverse(array);
     Array.Reverse(dataArray2);
     item.stckHistoryForward = new Stack<LogData>(array);
     item.stckHistoryBackward = new Stack<LogData>(dataArray2);
     item.dicFocusedItemName = new Dictionary<string, string>(dicFocusedItemName);
     item.lstHistoryBranches = new List<LogData>(lstHistoryBranches.ToArray());
     Dictionary<string, Address[]> dictionary = dicSelectdItems.Keys
             .ToDictionary(str => str, str => dicSelectdItems[str]);
     item.dicSelectdItems = dictionary;
     return item;
 }
Пример #18
0
        private bool HandleKEYDOWN(IntPtr wParam, bool fRepeat) {
            Keys key = (Keys)((int)wParam);
            Keys mkey = (Keys)(((int)wParam) | ((int)ModifierKeys));

            switch(key) {
                case Keys.Enter:
                    return false;

                case Keys.Menu:
                    if((!fRepeat && QTUtility.CheckConfig(Settings.ShowTabCloseButtons)) && QTUtility.CheckConfig(Settings.TabCloseBtnsWithAlt)) {
                        tabControl1.ShowCloseButton(true);
                        if(!QTUtility.IsXP) {
                            return QTUtility.CheckConfig(Settings.HideMenuBar);
                        }
                    }
                    return false;

                case Keys.ControlKey:
                    if(!fRepeat && NowTabDragging && (DraggingTab != null) && tabControl1.GetTabMouseOn() == null) {
                        Cursor = GetCursor(false);
                    }
                    break;

                case Keys.Tab:
                    if(!QTUtility.CheckConfig(Settings.NoTabSwitcher) && (mkey & Keys.Control) != Keys.None) {
                        return ShowTabSwitcher((mkey & Keys.Shift) != Keys.None, fRepeat);
                    }
                    break;
            }

            switch(mkey) {
                case Keys.Back:
                    if(!QTUtility.IsXP) {
                        if(listView.HasFocus()) {
                            if(!fRepeat) {
                                if(QTUtility.CheckConfig(Settings.BackspaceUpLevel)) {
                                    UpOneLevel();
                                }
                                else {
                                    NavigateCurrentTab(true);
                                }
                            }
                            return true;
                        }
                    }
                    return false;

                case Keys.Alt | Keys.Left:
                    NavigateCurrentTab(true);
                    return true;

                case Keys.Alt | Keys.Right:
                    NavigateCurrentTab(false);
                    return true;

                case Keys.Alt | Keys.F4:
                    if(!fRepeat) {
                        WindowUtils.CloseExplorer(ExplorerHandle, 1);
                    }
                    return true;

                case Keys.F2:
                    if(!QTUtility.CheckConfig(Settings.F2Selection)) {
                        listView.HandleF2();
                    }
                    return false;

            }
            if(((Keys.Control | Keys.NumPad0) <= mkey && mkey <= (Keys.Control | Keys.NumPad9)) ||
                    ((Keys.Control | Keys.D0) <= mkey && mkey <= (Keys.Control | Keys.D9))) {
                int num3;
                if(mkey >= (Keys.Control | Keys.NumPad0)) {
                    num3 = (mkey - (Keys.Control | Keys.NumPad0));
                }
                else {
                    num3 = (mkey - (Keys.Control | Keys.D0));
                }
                if(num3 == 0) {
                    num3 = 10;
                }
                if(tabControl1.TabCount >= num3) {
                    tabControl1.SelectTab((num3 - 1));
                }
                return true;
            }

            int imkey = (int)mkey | 0x100000;
            if(imkey == QTUtility.ShortcutKeys[0]) {
                NavigateCurrentTab(true);
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[1]) {
                NavigateCurrentTab(false);
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[2]) {
                if(!fRepeat) {
                    NavigateToFirstOrLast(true);
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[3]) {
                if(!fRepeat) {
                    NavigateToFirstOrLast(false);
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[4]) {
                if(!fRepeat) {
                    int selectedIndex = tabControl1.SelectedIndex;
                    if(selectedIndex == (tabControl1.TabCount - 1)) {
                        tabControl1.SelectedIndex = 0;
                    }
                    else {
                        tabControl1.SelectedIndex = selectedIndex + 1;
                    }
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[5]) {
                if(!fRepeat) {
                    int num5 = tabControl1.SelectedIndex;
                    if(num5 == 0) {
                        tabControl1.SelectedIndex = tabControl1.TabCount - 1;
                    }
                    else {
                        tabControl1.SelectedIndex = num5 - 1;
                    }
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[6]) {
                if(!fRepeat && (tabControl1.TabCount > 0)) {
                    tabControl1.SelectedIndex = 0;
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[7]) {
                if(!fRepeat && (tabControl1.TabCount > 1)) {
                    tabControl1.SelectedIndex = tabControl1.TabCount - 1;
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[8]) {
                if(!fRepeat) {
                    if(tabControl1.TabCount > 1) {
                        CloseTab(CurrentTab);
                    }
                    else {
                        WindowUtils.CloseExplorer(ExplorerHandle, 1);
                    }
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[9]) {
                if(!fRepeat && (tabControl1.TabCount > 1)) {
                    CloseAllTabsExcept(CurrentTab);
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[10]) {
                if(!fRepeat) {
                    CloseLeftRight(true, -1);
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[11]) {
                if(!fRepeat) {
                    CloseLeftRight(false, -1);
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[12]) {
                if(!fRepeat) {
                    WindowUtils.CloseExplorer(ExplorerHandle, 1);
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[13]) {
                if(!fRepeat) {
                    RestoreLastClosed();
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[14]) {
                if(!fRepeat) {
                    CloneTabButton(CurrentTab, null, true, -1);
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[15]) {
                if(!fRepeat && (CurrentTab != null)) {
                    using(IDLWrapper wrapper = new IDLWrapper(CurrentTab.CurrentIDL)) {
                        OpenNewWindow(wrapper);
                    }
                }
                return true;
            }
            if(imkey == QTUtility.ShortcutKeys[0x10]) {
                if(CurrentTab != null) {
                    CurrentTab.TabLocked = !CurrentTab.TabLocked;
                }
                return true;
            }
            if(imkey != QTUtility.ShortcutKeys[0x11]) {
                if(imkey == QTUtility.ShortcutKeys[0x12]) {
                    if(!fRepeat) {
                        ChooseNewDirectory();
                    }
                    return true;
                }
                if(imkey == QTUtility.ShortcutKeys[0x13]) {
                    if(!fRepeat && (CurrentTab != null)) {
                        CreateGroup(CurrentTab);
                    }
                    return true;
                }
                if(imkey == QTUtility.ShortcutKeys[20]) {
                    if(!fRepeat) {
                        OpenOptionsDialog();
                    }
                    return true;
                }
                if(imkey == QTUtility.ShortcutKeys[0x15]) {
                    if(!fRepeat) {
                        Rectangle tabRect = tabControl1.GetTabRect(tabControl1.TabCount - 1, true);
                        contextMenuSys.Show(PointToScreen(new Point(tabRect.Right + 10, tabRect.Bottom - 10)));
                    }
                    return true;
                }
                if(imkey == QTUtility.ShortcutKeys[0x16]) {
                    if(!fRepeat) {
                        int index = tabControl1.TabPages.IndexOf(CurrentTab);
                        if(index != -1) {
                            ContextMenuedTab = CurrentTab;
                            Rectangle rectangle2 = tabControl1.GetTabRect(index, true);
                            contextMenuTab.Show(PointToScreen(new Point(rectangle2.Right + 10, rectangle2.Bottom - 10)));
                        }
                    }
                    return true;
                }
                if(((imkey == QTUtility.ShortcutKeys[0x17]) || (imkey == QTUtility.ShortcutKeys[0x18])) || (imkey == QTUtility.ShortcutKeys[0x19])) {
                    if(!fRepeat) {
                        IntPtr ptr2;
                        int num7 = 3;
                        if(imkey == QTUtility.ShortcutKeys[0x18]) {
                            num7 = 4;
                        }
                        else if(imkey == QTUtility.ShortcutKeys[0x19]) {
                            num7 = 5;
                        }
                        if(QTUtility.instanceManager.TryGetButtonBarHandle(ExplorerHandle, out ptr2)) {
                            return (1 == ((int)QTUtility2.SendCOPYDATASTRUCT(ptr2, (IntPtr)4, "fromTab", (IntPtr)num7)));
                        }
                    }
                }
                else {
                    if(imkey == QTUtility.ShortcutKeys[0x1a]) {
                        WindowUtils.ShowMenuBar(QTUtility.CheckConfig(Settings.HideMenuBar), ReBarHandle);
                        if(QTUtility.CheckConfig(Settings.HideMenuBar)) {
                            QTUtility.ConfigValues[7] = (byte)(QTUtility.ConfigValues[7] & 0xf7);
                        }
                        else {
                            QTUtility.ConfigValues[7] = (byte)(QTUtility.ConfigValues[7] | 8);
                        }
                        using(RegistryKey rkey = Registry.CurrentUser.CreateSubKey(@"Software\Quizo\QTTabBar")) {
                            rkey.SetValue("Config", QTUtility.ConfigValues);
                        }
                        return true;
                    }
                    if(((imkey == QTUtility.ShortcutKeys[0x1b]) || (imkey == QTUtility.ShortcutKeys[0x1c])) || (((imkey == QTUtility.ShortcutKeys[0x1d]) || (imkey == QTUtility.ShortcutKeys[30])) || (imkey == QTUtility.ShortcutKeys[0x1f]))) {
                        if(!fRepeat) {
                            int num8 = 0;
                            if(imkey == QTUtility.ShortcutKeys[0x1c]) {
                                num8 = 1;
                            }
                            else if(imkey == QTUtility.ShortcutKeys[0x1d]) {
                                num8 = 2;
                            }
                            else if(imkey == QTUtility.ShortcutKeys[30]) {
                                num8 = 3;
                            }
                            else if(imkey == QTUtility.ShortcutKeys[0x1f]) {
                                num8 = 4;
                            }
                            if((num8 < 2) && ((listView.SubDirTipMenuIsShowing()) || ((subDirTip_Tab != null) && subDirTip_Tab.MenuIsShowing))) {
                                return false;
                            }
                            DoFileTools(num8);
                        }
                        return true;
                    }
                    if(imkey == QTUtility.ShortcutKeys[0x20]) {
                        ToggleTopMost();
                        SyncButtonBarCurrent(0x40);
                        return true;
                    }
                    if((imkey == QTUtility.ShortcutKeys[0x21]) || (imkey == QTUtility.ShortcutKeys[0x22])) {
                        int num9;
                        int num10;
                        byte num11;
                        if(0x80000 != ((int)PInvoke.Ptr_OP_AND(PInvoke.GetWindowLongPtr(ExplorerHandle, -20), 0x80000))) {
                            if(imkey == QTUtility.ShortcutKeys[0x21]) {
                                return true;
                            }
                            PInvoke.SetWindowLongPtr(ExplorerHandle, -20, PInvoke.Ptr_OP_OR(PInvoke.GetWindowLongPtr(ExplorerHandle, -20), 0x80000));
                            PInvoke.SetLayeredWindowAttributes(ExplorerHandle, 0, 0xff, 2);
                        }
                        if(PInvoke.GetLayeredWindowAttributes(ExplorerHandle, out num9, out num11, out num10)) {
                            IntPtr ptr3;
                            if(imkey == QTUtility.ShortcutKeys[0x21]) {
                                if(num11 > 0xf3) {
                                    num11 = 0xff;
                                }
                                else {
                                    num11 = (byte)(num11 + 12);
                                }
                            }
                            else if(num11 < 0x20) {
                                num11 = 20;
                            }
                            else {
                                num11 = (byte)(num11 - 12);
                            }
                            PInvoke.SetLayeredWindowAttributes(ExplorerHandle, 0, num11, 2);
                            if(QTUtility.instanceManager.TryGetButtonBarHandle(ExplorerHandle, out ptr3)) {
                                QTUtility2.SendCOPYDATASTRUCT(ptr3, (IntPtr)7, "track", (IntPtr)num11);
                            }
                            if(num11 == 0xff) {
                                PInvoke.SetWindowLongPtr(ExplorerHandle, -20, PInvoke.Ptr_OP_AND(PInvoke.GetWindowLongPtr(ExplorerHandle, -20), 0xfff7ffff));
                            }
                        }
                        return true;
                    }
                    if(imkey == QTUtility.ShortcutKeys[0x23]) {
                        listView.SetFocus();
                        return true;
                    }
                    if(imkey == QTUtility.ShortcutKeys[0x24]) {
                        if(!QTUtility.IsXP) {
                            PInvoke.SetFocus(GetSearchBand_Edit());
                            return true;
                        }
                    }
                    else if(imkey == QTUtility.ShortcutKeys[0x25]) {
                        IntPtr ptr4;
                        if(QTUtility.instanceManager.TryGetButtonBarHandle(ExplorerHandle, out ptr4) && PInvoke.IsWindow(ptr4)) {
                            QTUtility2.SendCOPYDATASTRUCT(ptr4, (IntPtr)8, null, IntPtr.Zero);
                            return true;
                        }
                    }
                    else if(imkey == QTUtility.ShortcutKeys[0x26]) {
                        if(!QTUtility.CheckConfig(Settings.NoShowSubDirTips)) {
                            if(!fRepeat) {
                                listView.ShowAndClickSubDirTip();
                            }
                            return true;
                        }
                    }
                    else {
                        if(imkey == QTUtility.ShortcutKeys[0x27]) {
                            if(!fRepeat) {
                                ShowTaskbarItem(ExplorerHandle, false);
                            }
                            return true;
                        }
                        if(imkey == QTUtility.ShortcutKeys[40]) {
                            tabControl1.Focus();
                            tabControl1.FocusNextTab(false, true, false);
                            return true;
                        }
                        if(Array.IndexOf(QTUtility.PluginShortcutKeysCache, imkey) != -1) {
                            foreach(string str in QTUtility.dicPluginShortcutKeys.Keys) {
                                int[] numArray = QTUtility.dicPluginShortcutKeys[str];
                                if(numArray != null) {
                                    for(int i = 0; i < numArray.Length; i++) {
                                        if(imkey == numArray[i]) {
                                            Plugin plugin;
                                            if(pluginManager.TryGetPlugin(str, out plugin)) {
                                                try {
                                                    plugin.Instance.OnShortcutKeyPressed(i);
                                                }
                                                catch(Exception exception) {
                                                    PluginManager.HandlePluginException(exception, ExplorerHandle, plugin.PluginInformation.Name, "On shortcut key pressed. Index is " + i);
                                                }
                                                return true;
                                            }
                                            return false;
                                        }
                                    }
                                }
                            }
                        }
                        else {
                            if(!fRepeat && QTUtility.dicUserAppShortcutKeys.ContainsKey(imkey)) {
                                MenuItemArguments mia = QTUtility.dicUserAppShortcutKeys[imkey];
                                try {
                                    using(IDLWrapper wrapper2 = GetCurrentPIDL()) {
                                        Address[] addressArray;
                                        string str2;
                                        if((wrapper2.Available && wrapper2.HasPath) && ShellBrowser.TryGetSelection(out addressArray, out str2, false)) {
                                            AppLauncher launcher = new AppLauncher(addressArray, wrapper2.Path);
                                            launcher.ReplaceTokens_WorkingDir(mia);
                                            launcher.ReplaceTokens_Arguments(mia);
                                        }
                                    }
                                    AppLauncher.Execute(mia, ExplorerHandle);
                                }
                                catch(Exception exception2) {
                                    QTUtility2.MakeErrorLog(exception2, null);
                                }
                                finally {
                                    mia.RestoreOriginalArgs();
                                }
                                return true;
                            }
                            if(!fRepeat && QTUtility.dicGroupShortcutKeys.ContainsKey(imkey)) {
                                OpenGroup(QTUtility.dicGroupShortcutKeys[imkey], false);
                                return true;
                            }
                        }
                    }
                }
                imkey -= 0x100000;
                return (imkey == 0x20057);
            }

            bool flag = tabControl1.TabPages.Cast<QTabItem>().All(item2 => item2.TabLocked);
            foreach(QTabItem item3 in tabControl1.TabPages) {
                item3.TabLocked = !flag;
            }
            return true;
        }
Пример #19
0
 private void tab_Closed(object sender, EventArgs e) {
     this.tab.Closed -= new EventHandler(this.tab_Closed);
     this.tab = null;
     this.tabBar = null;
 }
Пример #20
0
        private void HandleTabClickAction(QTabItem clickedTab, bool fWheel) {
            byte num = fWheel ? QTUtility.ConfigValues[12] : QTUtility.ConfigValues[3];
            switch(num) {
                case 0:
                case 1:
                    if(!(fWheel ^ (num == 1))) {
                        UpOneLevel();
                        return;
                    }
                    NowTabDragging = false;
                    if(tabControl1.TabCount <= 1) {
                        if(clickedTab.TabLocked) {
                            break;
                        }
                        WindowUtils.CloseExplorer(ExplorerHandle, 1);
                        return;
                    }
                    CloseTab(clickedTab);
                    return;

                case 2:
                    clickedTab.TabLocked = !clickedTab.TabLocked;
                    return;

                case 3:
                    ContextMenuedTab = clickedTab;
                    contextMenuTab.Show(MousePosition);
                    return;

                case 4:
                    using(IDLWrapper wrapper = new IDLWrapper(clickedTab.CurrentIDL)) {
                        OpenNewWindow(wrapper);
                    }
                    if((ModifierKeys & Keys.Shift) != Keys.Shift) {
                        break;
                    }
                    CloseTab(clickedTab);
                    return;

                case 5:
                    CloneTabButton(clickedTab, null, true, -1);
                    return;

                case 6: {
                        string currentPath = clickedTab.CurrentPath;
                        if(currentPath.IndexOf("???") != -1) {
                            currentPath = currentPath.Substring(0, currentPath.IndexOf("???"));
                        }
                        SetStringClipboard(currentPath);
                        return;
                    }
                case 7:
                    ShellMethods.ShowProperties(clickedTab.CurrentIDL);
                    break;

                default:
                    return;
            }
        }
Пример #21
0
 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) {
     QTabItem selectedTab = (QTabItem)tabControl1.SelectedTab;
     string currentPath = selectedTab.CurrentPath;
     if(IsSpecialFolderNeedsToTravel(currentPath) && LogEntryDic.ContainsKey(selectedTab.GetLogHash(true, 0))) {
         NavigatedByCode = true;
         CurrentTab = selectedTab;
         while(lstActivatedTabs.Remove(CurrentTab)) {
         }
         lstActivatedTabs.Add(CurrentTab);
         if(lstActivatedTabs.Count > 15) {
             lstActivatedTabs.RemoveAt(0);
         }
         fNavigatedByTabSelection = NavigateToPastSpecialDir(CurrentTab.GetLogHash(true, 0));
         if(pluginManager != null) {
             pluginManager.OnTabChanged(tabControl1.SelectedIndex, selectedTab.CurrentIDL, selectedTab.CurrentPath);
         }
         if(tabControl1.Focused) {
             listView.SetFocus();
         }
     }
     else {
         IDLWrapper idlw = null;
         if((selectedTab.CurrentIDL != null) && (selectedTab.CurrentIDL.Length > 0)) {
             idlw = new IDLWrapper(selectedTab.CurrentIDL);
         }
         if((idlw == null) || !idlw.Available) {
             idlw = new IDLWrapper(selectedTab.CurrentPath);
         }
         using(idlw) {
             if(!idlw.Available) {
                 CancelFailedTabChanging(currentPath);
                 return;
             }
             CurrentTab = selectedTab;
             while(lstActivatedTabs.Remove(CurrentTab)) {
             }
             lstActivatedTabs.Add(CurrentTab);
             if(lstActivatedTabs.Count > 15) {
                 lstActivatedTabs.RemoveAt(0);
             }
             if(((currentPath != CurrentAddress) || (QTUtility.IsXP && (currentPath == QTUtility.PATH_SEARCHFOLDER))) || NowTabCloned) {
                 NavigatedByCode = true;
                 fNavigatedByTabSelection = true;
                 NowTabCloned = false;
                 if(ShellBrowser.Navigate(idlw) != 0) {
                     CancelFailedTabChanging(currentPath);
                     return;
                 }
             }
             else {
                 SyncTravelState();
             }
         }
         if(tabControl1.Focused) {
             listView.SetFocus();
         }
         if(pluginManager != null) {
             pluginManager.OnTabChanged(tabControl1.SelectedIndex, CurrentTab.CurrentIDL, CurrentTab.CurrentPath);
         }
     }
 }
Пример #22
0
 private void HideToolTipForDD() {
     tabForDD = null;
     iModKeyStateDD = 0;
     if(toolTipForDD != null) {
         toolTipForDD.Hide(tabControl1);
     }
     if(timerOnTab != null) {
         timerOnTab.Enabled = false;
     }
 }
Пример #23
0
 private void CloneTabButton(QTabItem tab, LogData log) {
     NowTabCloned = true;
     QTabItem item = tab.Clone();
     AddInsertTab(item);
     using(IDLWrapper wrapper = new IDLWrapper(log.IDL)) {
         if(wrapper.Available) {
             item.NavigatedTo(wrapper.Path, wrapper.IDL, log.Hash);
         }
     }
     tabControl1.SelectTab(item);
 }
Пример #24
0
 private void InitializeComponent() {
     components = new Container();
     buttonNavHistoryMenu = new ToolStripDropDownButton();
     tabControl1 = new QTabControl();
     CurrentTab = new QTabItem(string.Empty, string.Empty, tabControl1);
     contextMenuTab = new ContextMenuStripEx(components, false);
     contextMenuSys = new ContextMenuStripEx(components, false);
     tabControl1.SuspendLayout();
     contextMenuSys.SuspendLayout();
     contextMenuTab.SuspendLayout();
     SuspendLayout();
     bool flag = QTUtility.CheckConfig(Settings.ShowNavButtons);
     if(flag) {
         InitializeNavBtns(false);
     }
     buttonNavHistoryMenu.AutoSize = false;
     buttonNavHistoryMenu.DisplayStyle = ToolStripItemDisplayStyle.None;
     buttonNavHistoryMenu.Enabled = false;
     buttonNavHistoryMenu.Size = new Size(13, 0x15);
     buttonNavHistoryMenu.DropDown = new DropDownMenuBase(components, true, true, true);
     buttonNavHistoryMenu.DropDown.ItemClicked += NavigationButton_DropDownMenu_ItemClicked;
     buttonNavHistoryMenu.DropDownOpening += NavigationButtons_DropDownOpening;
     buttonNavHistoryMenu.DropDown.ImageList = QTUtility.ImageListGlobal;
     tabControl1.SetRedraw(false);
     tabControl1.TabPages.Add(CurrentTab);
     tabControl1.Dock = DockStyle.Fill;
     tabControl1.ContextMenuStrip = contextMenuTab;
     tabControl1.RefreshOptions(true);
     tabControl1.RowCountChanged += tabControl1_RowCountChanged;
     tabControl1.Deselecting += tabControl1_Deselecting;
     tabControl1.Selecting += tabControl1_Selecting;
     tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged;
     tabControl1.GotFocus += Controls_GotFocus;
     tabControl1.MouseEnter += tabControl1_MouseEnter;
     tabControl1.MouseLeave += tabControl1_MouseLeave;
     tabControl1.MouseDown += tabControl1_MouseDown;
     tabControl1.MouseUp += tabControl1_MouseUp;
     tabControl1.MouseMove += tabControl1_MouseMove;
     tabControl1.MouseDoubleClick += tabControl1_MouseDoubleClick;
     tabControl1.ItemDrag += tabControl1_ItemDrag;
     tabControl1.PointedTabChanged += tabControl1_PointedTabChanged;
     tabControl1.TabCountChanged += tabControl1_TabCountChanged;
     tabControl1.CloseButtonClicked += tabControl1_CloseButtonClicked;
     tabControl1.TabIconMouseDown += tabControl1_TabIconMouseDown;
     contextMenuTab.Items.Add(new ToolStripMenuItem());
     contextMenuTab.ShowImageMargin = false;
     contextMenuTab.ItemClicked += contextMenuTab_ItemClicked;
     contextMenuTab.Opening += contextMenuTab_Opening;
     contextMenuTab.Closed += contextMenuTab_Closed;
     contextMenuSys.Items.Add(new ToolStripMenuItem());
     contextMenuSys.ShowImageMargin = false;
     contextMenuSys.ItemClicked += contextMenuSys_ItemClicked;
     contextMenuSys.Opening += contextMenuSys_Opening;
     Controls.Add(tabControl1);
     if(flag) {
         Controls.Add(toolStrip);
     }
     MinSize = new Size(150, QTUtility.TabHeight + 2);
     Height = QTUtility.TabHeight + 2;
     ContextMenuStrip = contextMenuSys;
     MouseDoubleClick += QTTabBarClass_MouseDoubleClick;
     tabControl1.ResumeLayout(false);
     contextMenuSys.ResumeLayout(false);
     contextMenuTab.ResumeLayout(false);
     if(flag) {
         toolStrip.ResumeLayout(false);
         toolStrip.PerformLayout();
     }
     ResumeLayout(false);
 }
Пример #25
0
 // TODO: Optional params
 private bool CloseTab(QTabItem closingTab) {
     return ((tabControl1.TabCount > 1) && CloseTab(closingTab, false));
 }
Пример #26
0
 private void NavigateBranches(QTabItem tab, int index) {
     LogData log = tab.Branches[index];
     Keys modifierKeys = ModifierKeys;
     if(modifierKeys == Keys.Control) {
         using(IDLWrapper wrapper = new IDLWrapper(log.IDL)) {
             if(!wrapper.Available) {
                 ShowMessageNavCanceled(log.Path, false);
             }
             else {
                 OpenNewWindow(wrapper);
             }
         }
     }
     else if(modifierKeys == Keys.Shift) {
         CloneTabButton(tab, log);
     }
     else {
         tabControl1.SelectTab(tab);
         if(IsSpecialFolderNeedsToTravel(log.Path)) {
             SaveSelectedItems(CurrentTab);
             NavigatedByCode = true;
             NavigateToPastSpecialDir(log.Hash);
         }
         else {
             NavigatedByCode = false;
             using(IDLWrapper wrapper2 = new IDLWrapper(log.IDL)) {
                 if(!wrapper2.Available) {
                     ShowMessageNavCanceled(log.Path, false);
                 }
                 else {
                     SaveSelectedItems(CurrentTab);
                     ShellBrowser.Navigate(wrapper2);
                 }
             }
         }
     }
 }
Пример #27
0
 public bool CreateTab(Address address, int index, bool fLocked, bool fSelect)
 {
     using(IDLWrapper wrapper = new IDLWrapper(address)) {
         address.ITEMIDLIST = wrapper.IDL;
         address.Path = wrapper.Path;
     }
     if((address.ITEMIDLIST == null) || (address.ITEMIDLIST.Length <= 0)) {
         return false;
     }
     QTabItem tab = new QTabItem(QTUtility2.MakePathDisplayText(address.Path, false), address.Path, tabBar.tabControl1);
     tab.NavigatedTo(address.Path, address.ITEMIDLIST, -1, false);
     tab.ToolTipText = QTUtility2.MakePathDisplayText(address.Path, true);
     tab.TabLocked = fLocked;
     if(index < 0) {
         tabBar.AddInsertTab(tab);
     }
     else {
         if(index > tabBar.tabControl1.TabCount) {
             index = tabBar.tabControl1.TabCount;
         }
         tabBar.tabControl1.TabPages.Insert(index, tab);
     }
     if(fSelect) {
         tabBar.tabControl1.SelectTab(tab);
     }
     return true;
 }
Пример #28
0
 private void SaveSelectedItems(QTabItem tab) {
     Address[] addressArray;
     string str;
     if(((tab != null) && !string.IsNullOrEmpty(CurrentAddress)) && ShellBrowser.TryGetSelection(out addressArray, out str, false)) {
         tab.SetSelectedItemsAt(CurrentAddress, addressArray, str);
     }
 }
Пример #29
0
 private void tab_Closed(object sender, EventArgs e)
 {
     tab.Closed -= tab_Closed;
     tab = null;
     tabBar = null;
 }
Пример #30
0
 private void ShowSubdirTip_Tab(QTabItem tab, bool fShow, int offsetX, bool fKey, bool fParent) {
     try {
         if(fShow) {
             if(Explorer.Busy || string.IsNullOrEmpty(tab.CurrentPath)) {
                 tabControl1.SetSubDirTipShown(false);
             }
             else {
                 string currentPath = tab.CurrentPath;
                 if(fParent || ShellMethods.TryMakeSubDirTipPath(ref currentPath)) {
                     if(subDirTip_Tab == null) {
                         subDirTip_Tab = new SubDirTipForm(Handle, true, listView);
                         subDirTip_Tab.MenuItemClicked += subDirTip_MenuItemClicked;
                         subDirTip_Tab.MultipleMenuItemsClicked += subDirTip_MultipleMenuItemsClicked;
                         subDirTip_Tab.MenuItemRightClicked += subDirTip_MenuItemRightClicked;
                         subDirTip_Tab.MenuClosed += subDirTip_Tab_MenuClosed;
                         subDirTip_Tab.MultipleMenuItemsRightClicked += subDirTip_MultipleMenuItemsRightClicked;
                     }
                     ContextMenuedTab = tab;
                     Point pnt = tabControl1.PointToScreen(new Point(tab.TabBounds.X + offsetX, fParent ? tab.TabBounds.Top : (tab.TabBounds.Bottom - 3)));
                     if(tab != CurrentTab) {
                         pnt.X += 2;
                     }
                     tabControl1.SetSubDirTipShown(subDirTip_Tab.ShowMenuWithoutShowForm(currentPath, pnt, fParent));
                 }
                 else {
                     tabControl1.SetSubDirTipShown(false);
                     HideSubDirTip_Tab_Menu();
                 }
             }
         }
         else {
             HideSubDirTip_Tab_Menu();
         }
     }
     catch(Exception exception) {
         QTUtility2.MakeErrorLog(exception, "tabsubdir");
     }
 }
Пример #31
0
            public ITab HitTest(Point pnt)
            {
                QTabItem tabMouseOn = tabBar.tabControl1.GetTabMouseOn();

                return(tabMouseOn != null ? new TabWrapper(tabMouseOn, tabBar) : null);
            }
Пример #32
0
        private void ShowToolTipForDD(QTabItem tab, int iState, int grfKeyState) {
            if(((tabForDD == null) || (tabForDD != tab)) || (iModKeyStateDD != grfKeyState)) {
                tabForDD = tab;
                iModKeyStateDD = grfKeyState;
                if(timerOnTab == null) {
                    timerOnTab = new Timer(components);
                    timerOnTab.Tick += timerOnTab_Tick;
                }
                timerOnTab.Enabled = false;
                timerOnTab.Interval = QTUtility.CheckConfig(Settings.DragDropOntoTabs) ? 0x4b0 : 700;
                timerOnTab.Enabled = true;
                if(QTUtility.CheckConfig(Settings.DragDropOntoTabs) && (iState != -1)) {
                    Rectangle tabRect = tabControl1.GetTabRect(tab);
                    Point lpPoints = new Point(tabRect.X + ((tabRect.Width * 3) / 4), tabRect.Bottom + 0x10);
                    string[] strArray = QTUtility.TextResourcesDic["DragDropToolTip"];
                    string str;
                    switch((grfKeyState & 12)) {
                        case 4:
                            str = strArray[1];
                            break;

                        case 8:
                            str = strArray[0];
                            break;

                        case 12:
                            str = strArray[2];
                            break;

                        default:
                            if(iState == 1) {
                                str = strArray[0];
                            }
                            else {
                                str = strArray[1];
                            }
                            break;
                    }
                    if(toolTipForDD == null) {
                        toolTipForDD = new ToolTip(components);
                        toolTipForDD.UseAnimation = toolTipForDD.UseFading = false;
                    }
                    toolTipForDD.ToolTipTitle = str;
                    if(PInvoke.GetForegroundWindow() != ExplorerHandle) {
                        Type type = typeof(ToolTip);
                        BindingFlags bindingAttr = BindingFlags.NonPublic | BindingFlags.Instance;
                        MethodInfo method = type.GetMethod("SetTrackPosition", bindingAttr);
                        MethodInfo info2 = type.GetMethod("SetTool", bindingAttr);
                        PInvoke.MapWindowPoints(tabControl1.Handle, IntPtr.Zero, ref lpPoints, 1);
                        method.Invoke(toolTipForDD, new object[] { lpPoints.X, lpPoints.Y });
                        info2.Invoke(toolTipForDD, new object[] { tabControl1, tab.CurrentPath, 2, lpPoints });
                    }
                    else {
                        toolTipForDD.Active = true;
                        toolTipForDD.Show(tab.CurrentPath, tabControl1, lpPoints);
                    }
                }
            }
        }
Пример #33
0
 private void tab_Closed(object sender, EventArgs e)
 {
     tab.Closed -= tab_Closed;
     tab         = null;
     tabBar      = null;
 }
Пример #34
0
 private void tabControl1_CloseButtonClicked(object sender, QTabCancelEventArgs e) {
     if(NowTabDragging) {
         Cursor = Cursors.Default;
         NowTabDragging = false;
         DraggingTab = null;
         DraggingDestRect = Rectangle.Empty;
         SyncButtonBarCurrent(12);
         e.Cancel = true;
     }
     else if(!Explorer.Busy) {
         QTabItem tabPage = (QTabItem)e.TabPage;
         if(tabControl1.TabCount > 1) {
             e.Cancel = !CloseTab(tabPage);
         }
         else {
             WindowUtils.CloseExplorer(ExplorerHandle, 1);
         }
     }
 }
Пример #35
0
 private void tabControl1_MouseDown(object sender, MouseEventArgs e) {
     QTabItem tabMouseOn = (QTabItem)tabControl1.GetTabMouseOn();
     DraggingTab = null;
     if(tabMouseOn != null) {
         if(e.Button == MouseButtons.Left) {
             NowTabDragging = true;
             DraggingTab = tabMouseOn;
         }
         else if(e.Button == MouseButtons.Right) {
             ContextMenuedTab = tabMouseOn;
         }
     }
 }
Пример #36
0
 private void tabControl1_MouseMove(object sender, MouseEventArgs e) {
     RECT rect;
     if((tabControl1.Capture && (((e.X < 0) || (e.Y < 0)) || ((e.X > tabControl1.Width) || (e.Y > tabControl1.Height)))) && (PInvoke.GetWindowRect(ReBarHandle, out rect) && !PInvoke.PtInRect(ref rect, tabControl1.PointToScreen(e.Location)))) {
         Cursor = Cursors.Default;
         tabControl1.Capture = false;
     }
     else if((NowTabDragging && (DraggingTab != null)) && ((ModifierKeys & Keys.Shift) != Keys.Shift)) {
         if(Explorer.Busy || (MouseButtons != MouseButtons.Left)) {
             NowTabDragging = false;
             DraggingTab = null;
         }
         else {
             int num;
             QTabItem tabMouseOn = (QTabItem)tabControl1.GetTabMouseOn(out num);
             int index = tabControl1.TabPages.IndexOf(DraggingTab);
             if((num > (tabControl1.TabCount - 1)) || (num < 0)) {
                 if((num == -1) && (ModifierKeys == Keys.Control)) {
                     Cursor = GetCursor(false);
                     DraggingDestRect = new Rectangle(1, 0, 0, 0);
                 }
                 else {
                     Cursor = Cursors.Default;
                 }
             }
             else if((index <= (tabControl1.TabCount - 1)) && (index >= 0)) {
                 Rectangle tabRect = tabControl1.GetTabRect(num, false);
                 Rectangle rectangle2 = tabControl1.GetTabRect(index, false);
                 if(tabMouseOn != null) {
                     if(tabMouseOn != DraggingTab) {
                         if(!DraggingDestRect.Contains(tabControl1.PointToClient(MousePosition))) {
                             Cursor = GetCursor(true);
                             bool flag = tabMouseOn.Row != DraggingTab.Row;
                             bool flag2 = tabControl1.SelectedTab != DraggingTab;
                             tabControl1.TabPages.Relocate(index, num);
                             if(num < index) {
                                 DraggingDestRect = new Rectangle(tabRect.X + rectangle2.Width, tabRect.Y, tabRect.Width - rectangle2.Width, tabRect.Height);
                             }
                             else {
                                 DraggingDestRect = new Rectangle(tabRect.X, tabRect.Y, tabRect.Width - rectangle2.Width, tabRect.Height);
                             }
                             if((flag && !flag2) && !QTUtility.CheckConfig(Settings.MultipleRow2)) {
                                 Rectangle rectangle3 = tabControl1.GetTabRect(num, false);
                                 Point p = new Point(rectangle3.X + (rectangle3.Width / 2), rectangle3.Y + (QTUtility.TabHeight / 2));
                                 Cursor.Position = tabControl1.PointToScreen(p);
                             }
                             SyncButtonBarCurrent(12);
                         }
                     }
                     else if((curTabCloning != null) && (Cursor == curTabCloning)) {
                         Cursor = GetCursor(true);
                     }
                 }
             }
         }
     }
 }
Пример #37
0
 public QTabCancelEventArgs(QTabItem tabPage, int tabPageIndex, bool cancel, TabControlAction action)
     : base(null, tabPageIndex, cancel, action)
 {
     this.tabPage = tabPage;
 }
Пример #38
0
 public QTabCancelEventArgs(QTabItem tabPage, int tabPageIndex, bool cancel, TabControlAction action)
     : base(null, tabPageIndex, cancel, action)
 {
     this.tabPage = tabPage;
 }