public void NewTab(string Location, bool IsNavigate = false) { CloseableTabItem newt = new CloseableTabItem(); CreateTabbarRKMenu(newt); ShellObject DefPath; if (Location.IndexOf("::") == 0 && Location.IndexOf(@"\") == -1) DefPath = ShellObject.FromParsingName("shell:" + Location); else DefPath = ShellObject.FromParsingName(Location); DefPath.Thumbnail.CurrentSize = new System.Windows.Size(16, 16); DefPath.Thumbnail.FormatOption = ShellThumbnailFormatOption.IconOnly; newt.Header = DefPath.GetDisplayName(DisplayNameType.Default); newt.TabIcon = DefPath.Thumbnail.BitmapSource; newt.Path = DefPath; newt.IsNavigate = IsNavigate; newt.Index = tabControl1.Items.Count; newt.AllowDrop = true; newt.CloseTab += new RoutedEventHandler(newt_CloseTab); newt.DragEnter += new DragEventHandler(newt_DragEnter); newt.DragOver += new DragEventHandler(newt_DragOver); newt.PreviewMouseMove += new MouseEventHandler(newt_PreviewMouseMove); newt.TabSelected += newt_TabSelected; newt.Drop += new DragEventHandler(newt_Drop); tabControl1.Items.Add(newt); LastTabIndex = tabControl1.SelectedIndex; if (IsNavigate) { //IsCancel = true; tabControl1.SelectedIndex = tabControl1.Items.Count - 1; tabControl1.SelectedItem = tabControl1.Items[tabControl1.Items.Count - 1]; //IsCancel = false; } else { newt.log.CurrentLocation = DefPath; } CurrentTabIndex = tabControl1.Items.Count - 1; ConstructMoveToCopyToMenu(); }
void CreateTabbarRKMenu(CloseableTabItem tabitem) { tabitem.mnu = new ContextMenu(); MenuItem miclosecurrentr = new MenuItem(); miclosecurrentr.Header = "Close current tab"; miclosecurrentr.Tag = tabitem; miclosecurrentr.Click += new RoutedEventHandler(miclosecurrentr_Click); tabitem.mnu.Items.Add(miclosecurrentr); MenuItem miclosealltab = new MenuItem(); miclosealltab.Header = "Close all tabs"; miclosealltab.Click += new RoutedEventHandler(miclosealltab_Click); tabitem.mnu.Items.Add(miclosealltab); MenuItem miclosealltabbd = new MenuItem(); miclosealltabbd.Header = "Close all other tabs"; miclosealltabbd.Tag = tabitem; miclosealltabbd.Click += new RoutedEventHandler(miclosealltabbd_Click); tabitem.mnu.Items.Add(miclosealltabbd); tabitem.mnu.Items.Add(new Separator()); //tabitem.mnu.Items.Add(new Separator()); MenuItem miopeninnew = new MenuItem(); miopeninnew.Header = "Open in new window"; miopeninnew.Tag = tabitem; miopeninnew.Click += new RoutedEventHandler(miopeninnew_Click); //tabitem.mnu.Items.Add(miopeninnew); }
void CloseAllTabsButThis(CloseableTabItem tabitem) { List<CloseableTabItem> tabs = new List<CloseableTabItem>(); foreach (object item in tabControl1.Items) { CloseableTabItem it = item as CloseableTabItem; tabs.Add(it); } foreach (CloseableTabItem item in tabs) { if (true) { if (item != tabitem) { CloseTab(item); } } } tabs = null; ConstructMoveToCopyToMenu(); }
void CloseTab(CloseableTabItem thetab, bool allowreopening = true) { if (thetab.Index == 0 && tabControl1.Items.Count == 1) { Close(); return; } if (thetab.Index == 0 && tabControl1.Items.Count > 1) { tabControl1.SelectedIndex = thetab.Index + 1; tabControl1.Items.Remove(thetab); } else if (thetab.Index == tabControl1.Items.Count - 1) { tabControl1.SelectedIndex = thetab.Index - 1; tabControl1.Items.Remove(thetab); } else { for (int i = thetab.Index + 1; i < tabControl1.Items.Count; i++) { CloseableTabItem tab = tabControl1.Items[i] as CloseableTabItem; tab.Index = tab.Index - 1; } tabControl1.Items.Remove(thetab); } ConstructMoveToCopyToMenu(); if (allowreopening == true) { reopenabletabs.Add(thetab.log); btnUndoClose.IsEnabled = true; } CloseableTabItem itb = tabControl1.SelectedItem as CloseableTabItem; isGoingBackOrForward = itb.log.HistoryItemsList.Count != 0; if (itb != null) { try { BeforeLastTabIndex = LastTabIndex; //tabControl1.SelectedIndex = itb.Index; //LastTabIndex = itb.Index; //CurrentTabIndex = LastTabIndex; if (itb.Path != Explorer.NavigationLog.CurrentLocation) { if (!Keyboard.IsKeyDown(Key.Tab)) { Explorer.Navigate(itb.Path); } else { t.Interval = 500; t.Tag = itb.Path; t.Tick += new EventHandler(t_Tick); t.Start(); } } } catch (StackOverflowException) { } //'btnTabCloseC.IsEnabled = tabControl1.Items.Count > 1; //'there's a bug that has this enabled when there's only one tab open, but why disable it //'if it never crashes the program? Closing the last tab simply closes the program, so I //'thought, what the heck... let's just keep it enabled. :) -JaykeBird } Explorer.ExplorerSetFocus(); Explorer.Focus(); }
/// <summary> /// Re-opens a previously closed tab using that tab's navigation log data. /// </summary> /// <param name="log">The navigation log data from the previously closed tab.</param> public void ReOpenTab(NavigationLog log) { CloseableTabItem newt = new CloseableTabItem(); CreateTabbarRKMenu(newt); ShellObject DefPath = log.CurrentLocation; DefPath.Thumbnail.CurrentSize = new System.Windows.Size(16, 16); DefPath.Thumbnail.FormatOption = ShellThumbnailFormatOption.IconOnly; newt.Header = DefPath.GetDisplayName(DisplayNameType.Default); newt.TabIcon = DefPath.Thumbnail.BitmapSource; newt.Path = DefPath; newt.IsNavigate = false; newt.Index = tabControl1.Items.Count; newt.AllowDrop = true; newt.CloseTab += new RoutedEventHandler(newt_CloseTab); newt.DragEnter += new DragEventHandler(newt_DragEnter); newt.DragOver += new DragEventHandler(newt_DragOver); newt.PreviewMouseMove += new MouseEventHandler(newt_PreviewMouseMove); newt.Drop += new DragEventHandler(newt_Drop); newt.TabSelected += newt_TabSelected; tabControl1.Items.Add(newt); LastTabIndex = tabControl1.SelectedIndex; newt.log.ImportData(log); CurrentTabIndex = tabControl1.Items.Count - 1; ConstructMoveToCopyToMenu(); }
public void CloneTab(CloseableTabItem CurTab) { CloseableTabItem newt = new CloseableTabItem(); CreateTabbarRKMenu(newt); newt.Header = CurTab.Header; newt.TabIcon = CurTab.TabIcon; newt.Path = CurTab.Path; newt.Index = tabControl1.Items.Count; newt.CloseTab += new RoutedEventHandler(newt_CloseTab); newt.DragEnter += new DragEventHandler(newt_DragEnter); newt.DragLeave += new DragEventHandler(newt_DragLeave); newt.DragOver += new DragEventHandler(newt_DragOver); newt.PreviewMouseMove += new MouseEventHandler(newt_PreviewMouseMove); newt.Drop += new DragEventHandler(newt_Drop); newt.TabSelected += newt_TabSelected; newt.AllowDrop = true; newt.log.CurrentLocation = CurTab.Path; tabControl1.Items.Add(newt); tabControl1.SelectedIndex = tabControl1.Items.Count - 1; tabControl1.SelectedItem = tabControl1.Items[tabControl1.Items.Count - 1]; LastTabIndex = CurrentTabIndex; CurrentTabIndex = tabControl1.Items.Count - 1; ConstructMoveToCopyToMenu(); }
private void Window_Loaded(object sender, RoutedEventArgs e) { bool exitApp = false; try { if (WindowsAPI.getOSInfo() == WindowsAPI.OsVersionInfo.Windows8) { TheStatusBar.Visibility = System.Windows.Visibility.Collapsed; rStatusbar.Height = new GridLength(0); } Handle = new WindowInteropHelper(Application.Current.MainWindow).Handle; //Itmpop = new ItemPopup(); //Itmpop.Visibility = System.Windows.Visibility.Hidden; //Itmpop.Owner = this; //Itmpop.Show(); //'sets up FileSystemWatcher for Favorites folder String FavPath = ""; try { FavPath = KnownFolders.Links.ParsingName; FileSystemWatcher fsw = new FileSystemWatcher(FavPath); fsw.Created += new FileSystemEventHandler(fsw_Created); fsw.Deleted += new FileSystemEventHandler(fsw_Deleted); fsw.Renamed += new RenamedEventHandler(fsw_Renamed); fsw.EnableRaisingEvents = true; } catch { FavPath = ""; } //' set up breadcrumb bar breadcrumbBarControl1.SetDragHandlers(new DragEventHandler(bbi_DragEnter), new DragEventHandler(bbi_DragLeave), new DragEventHandler(bbi_DragOver), new DragEventHandler(bbi_Drop)); Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (ThreadStart)(() => { //PicturePreview = new PreviewMedia(); //'set up Favorites menu (note that BetterExplorer does not support links to a Control Panel. lol -JaykeBird) //'I will probably use a modification to this code in the new breadcrumbbar if (FavPath != "") { DirectoryInfo FavInfo = new DirectoryInfo(FavPath); FileInfo[] FavFiles = FavInfo.GetFiles(); foreach (FileInfo item in FavFiles) { if (Path.GetExtension(item.FullName).ToLowerInvariant() == ".lnk") { try { ShellObject so = ShellObject.FromParsingName(item.FullName); MenuItem mi = new MenuItem(); mi.Header = so.GetDisplayName(DisplayNameType.Default); ShellLink lnk = new ShellLink(so.ParsingName); string Target = lnk.Target; if (Target.Contains("::")) { Target = "shell:" + Target; } if (item.Name.ToLowerInvariant() == "recentplaces.lnk") { Target = "shell:::{22877a6d-37a1-461a-91b0-dbda5aaebc99}"; } mi.Tag = Target; lnk.Dispose(); so.Thumbnail.FormatOption = ShellThumbnailFormatOption.IconOnly; so.Thumbnail.CurrentSize = new System.Windows.Size(16, 16); ImageSource icon = so.Thumbnail.BitmapSource; mi.Focusable = false; mi.Icon = icon; mi.Click += new RoutedEventHandler(mif_Click); so.Dispose(); btnFavorites.Items.Add(mi); } catch { } } } } else { btnFavorites.Visibility = System.Windows.Visibility.Collapsed; } //'set up Explorer control Explorer.SelectionChanged += new EventHandler(ExplorerBrowserControl_SelectionChanged); Explorer.NavigationComplete += new EventHandler<NavigationCompleteEventArgs>(ExplorerBrowserControl_NavigationComplete); Explorer.ViewEnumerationComplete += new EventHandler(ExplorerBrowserControl_ViewEnumerationComplete); Explorer.NavigationPending += new EventHandler<NavigationPendingEventArgs>(Explorer_NavigationPending); Explorer.GotFocus += new EventHandler(Explorer_GotFocus); Explorer.ExplorerGotFocus += new EventHandler(Explorer_ExplorerGotFocus); //Explorer.ExplorerGotFocus += new EventHandler(Explorer_ExplorerGotFocus); Explorer.RenameFinished += new EventHandler(Explorer_RenameFinished); Explorer.KeyUP += new EventHandler<ExplorerKeyUPEventArgs>(Explorer_KeyUP); Explorer.KeyUp += new System.Windows.Forms.KeyEventHandler(explorerBrowser1_KeyUp); Explorer.LostFocus += new EventHandler(Explorer_LostFocus); Explorer.NavigationOptions.PaneVisibility.Commands = PaneVisibilityState.Hide; Explorer.NavigationOptions.PaneVisibility.CommandsOrganize = PaneVisibilityState.Hide; Explorer.NavigationOptions.PaneVisibility.CommandsView = PaneVisibilityState.Hide; Explorer.ItemsChanged += new EventHandler(Explorer_ItemsChanged); Explorer.ContentOptions.FullRowSelect = true; //Explorer.ContentOptions.CheckSelect = false; Explorer.ClientSizeChanged += new EventHandler(ExplorerBrowserControl_ClientSizeChanged); Explorer.Paint += new System.Windows.Forms.PaintEventHandler(ExplorerBrowserControl_Paint); Explorer.ViewChanged += new EventHandler<ViewChangedEventArgs>(Explorer_ViewChanged); //Explorer.ItemHot += new EventHandler<ExplorerAUItemEventArgs>(Explorer_ItemHot); Explorer.ExplorerBrowserMouseLeave += new EventHandler(Explorer_ExplorerBrowserMouseLeave); Explorer.MouseMove += new System.Windows.Forms.MouseEventHandler(Explorer_MouseMove); IsCalledFromLoading = true; WindowsAPI.SHELLSTATE state = new WindowsAPI.SHELLSTATE(); WindowsAPI.SHGetSetSettings(ref state, WindowsAPI.SSF.SSF_SHOWALLOBJECTS | WindowsAPI.SSF.SSF_SHOWEXTENSIONS, false); chkHiddenFiles.IsChecked = (state.fShowAllObjects == 1); chkExtensions.IsChecked = (state.fShowExtensions == 1); IsCalledFromLoading = false; isOnLoad = true; //'load from Registry RegistryKey rk = Registry.CurrentUser; RegistryKey rks = rk.CreateSubKey(@"Software\BExplorer"); switch (Convert.ToString(rks.GetValue(@"CurrentTheme", "Blue"))) { case "Blue": btnBlue.IsChecked = true; break; case "Silver": btnSilver.IsChecked = true; break; case "Black": btnBlack.IsChecked = true; break; case "Green": btnGreen.IsChecked = true; break; default: btnBlue.IsChecked = true; break; } int HFlyoutEnabled = (int)rks.GetValue(@"HFlyoutEnabled", 0); IsHFlyoutEnabled = (HFlyoutEnabled == 1); chkIsFlyout.IsChecked = IsHFlyoutEnabled; int InfoPaneEnabled = (int)rks.GetValue(@"InfoPaneEnabled", 0); IsInfoPaneEnabled = (InfoPaneEnabled == 1); btnInfoPane.IsChecked = IsInfoPaneEnabled; int PreviewPaneEnabled = (int)rks.GetValue(@"PreviewPaneEnabled", 0); IsPreviewPaneEnabled = (PreviewPaneEnabled == 1); btnPreviewPane.IsChecked = IsPreviewPaneEnabled; int NavigationPaneEnabled = (int)rks.GetValue(@"NavigationPaneEnabled", 1); IsNavigationPaneEnabled = (NavigationPaneEnabled == 1); btnNavigationPane.IsChecked = IsNavigationPaneEnabled; int CheckBoxesEnabled = (int)rks.GetValue(@"CheckModeEnabled", 0); isCheckModeEnabled = (CheckBoxesEnabled == 1); chkShowCheckBoxes.IsChecked = isCheckModeEnabled; int ExFileOpEnabled = (int)rks.GetValue(@"FileOpExEnabled", 0); IsExtendedFileOpEnabled = (ExFileOpEnabled == 1); Explorer.IsExFileOpEnabled = IsExtendedFileOpEnabled; chkIsTerraCopyEnabled.IsChecked = IsExtendedFileOpEnabled; int CompartibleRename = (int)rks.GetValue(@"CompartibleRename", 1); IsCompartibleRename = (CompartibleRename == 1); //chkIsCompartibleRename.IsChecked = IsCompartibleRename; int RestoreTabs = (int)rks.GetValue(@"IsRestoreTabs", 1); IsrestoreTabs = (RestoreTabs == 1); chkIsRestoreTabs.IsChecked = IsrestoreTabs; int LogActions = (int)rks.GetValue(@"EnableActionLog", 0); canlogactions = (LogActions == 1); chkLogHistory.IsChecked = canlogactions; // load settings for auto-switch to contextual tab asFolder = ((int)rks.GetValue(@"AutoSwitchFolderTools", 0) == 1); asArchive = ((int)rks.GetValue(@"AutoSwitchArchiveTools", 1) == 1); asImage = ((int)rks.GetValue(@"AutoSwitchImageTools", 1) == 1); asApplication = ((int)rks.GetValue(@"AutoSwitchApplicationTools", 0) == 1); asLibrary = ((int)rks.GetValue(@"AutoSwitchLibraryTools", 1) == 1); asDrive = ((int)rks.GetValue(@"AutoSwitchDriveTools", 0) == 1); chkFolder.IsChecked = asFolder; chkArchive.IsChecked = asArchive; chkImage.IsChecked = asImage; chkApp.IsChecked = asApplication; chkLibrary.IsChecked = asLibrary; chkDrive.IsChecked = asDrive; // load OverwriteOnImages setting (default is false) int oor = (int)rks.GetValue(@"OverwriteImageWhileEditing", 0); OverwriteOnRotate = (oor == 1); chkOverwriteImages.IsChecked = (oor == 1); // set up history on breadcrumb bar (currently missing try-catch statement in order to catch error) try { breadcrumbBarControl1.ClearHistory(); breadcrumbBarControl1.HistoryItems = ReadHistoryFromFile(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\history.txt"); } catch (FileNotFoundException) { logger.Warn(String.Format("History file not found at location:{0}\\history.txt", Environment.SpecialFolder.LocalApplicationData)); } AddToLog("Session Began"); StartUpLocation = rks.GetValue(@"StartUpLoc", KnownFolders.Libraries.ParsingName).ToString(); if (StartUpLocation == "") { rks.SetValue(@"StartUpLoc", KnownFolders.Libraries.ParsingName); StartUpLocation = KnownFolders.Libraries.ParsingName; } char[] delimiters = new char[] { ';' }; string LastOpenedTabs = rks.GetValue(@"OpenedTabs", "").ToString(); string[] Tabs = LastOpenedTabs.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); rks.Close(); rk.Close(); try { RegistryKey rkbe = Registry.ClassesRoot; RegistryKey rksbe = rkbe.OpenSubKey(@"Folder\shell", RegistryKeyPermissionCheck.ReadSubTree); bool IsThereDefault = rksbe.GetValue("", "-1").ToString() != ""; chkIsDefault.IsChecked = IsThereDefault; chkIsDefault.IsEnabled = true; rksbe.Close(); rkbe.Close(); } catch (Exception) { chkIsDefault.IsChecked = false; chkIsDefault.IsEnabled = false; } RegistryKey rkfe = Registry.CurrentUser; RegistryKey rksfe = rk.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", RegistryKeyPermissionCheck.ReadSubTree); chkTreeExpand.IsChecked = (int)rksfe.GetValue("NavPaneExpandToCurrentFolder", 0) == 1; rksfe.Close(); rkfe.Close(); isOnLoad = false; //'Rest of the setup of Explorer control. We have to set up that here after //the initialization of registry settings Explorer.NavigationOptions.PaneVisibility.Preview = IsPreviewPaneEnabled ? PaneVisibilityState.Show : PaneVisibilityState.Hide; Explorer.NavigationOptions.PaneVisibility.Details = IsInfoPaneEnabled ? PaneVisibilityState.Show : PaneVisibilityState.Hide; Explorer.NavigationOptions.PaneVisibility.Navigation = IsNavigationPaneEnabled ? PaneVisibilityState.Show : PaneVisibilityState.Hide; Explorer.ContentOptions.CheckSelect = isCheckModeEnabled; if (StartUpLocation.IndexOf("::") == 0 && StartUpLocation.IndexOf(@"\") == -1) { btnSetCurrentasStartup.Header = ShellObject.FromParsingName("Shell:" + StartUpLocation).GetDisplayName(DisplayNameType.Default); btnSetCurrentasStartup.Icon = ShellObject.FromParsingName("Shell:" + StartUpLocation).Thumbnail.BitmapSource; } else { try { btnSetCurrentasStartup.Header = ShellObject.FromParsingName(StartUpLocation).GetDisplayName(DisplayNameType.Default); btnSetCurrentasStartup.Icon = ShellObject.FromParsingName(StartUpLocation).Thumbnail.BitmapSource; } catch { } } //'set StartUp location if (Application.Current.Properties["cmd"] != null) { String cmd = Application.Current.Properties["cmd"].ToString(); if (cmd.IndexOf("::") == 0) { Explorer.Navigate(ShellObject.FromParsingName("shell:" + cmd)); } else Explorer.Navigate(ShellObject.FromParsingName(cmd.Replace("\"", ""))); CloseableTabItem cti = new CloseableTabItem(); CreateTabbarRKMenu(cti); Explorer.NavigationLog.CurrentLocation.Thumbnail.CurrentSize = new System.Windows.Size(16, 16); cti.TabIcon = Explorer.NavigationLog.CurrentLocation.Thumbnail.BitmapSource; cti.Header = Explorer.NavigationLog.CurrentLocation.GetDisplayName(DisplayNameType.Default); cti.Path = Explorer.NavigationLog.CurrentLocation; cti.Index = 0; cti.log.CurrentLocation = Explorer.NavigationLog.CurrentLocation; cti.CloseTab += new RoutedEventHandler(cti_CloseTab); tabControl1.Items.Add(cti); //tabControl1.SelectedIndex = 0; //CurrentTabIndex = tabControl1.SelectedIndex; } else { if (Tabs.Length == 0 || !IsrestoreTabs) { if (StartUpLocation.IndexOf("::") == 0 && StartUpLocation.IndexOf(@"\") == -1) Explorer.Navigate(ShellObject.FromParsingName("shell:" + StartUpLocation)); else try { Explorer.Navigate(ShellObject.FromParsingName(StartUpLocation)); } catch { Explorer.Navigate((ShellObject)KnownFolders.Libraries); } } if (IsrestoreTabs) { isOnLoad = true; int i = 0; foreach (string str in Tabs) { try { i++; if (i == Tabs.Length) { NewTab(str, true); } else { NewTab(str, false); } if (i == Tabs.Count()) { if (str.IndexOf("::") == 0) { Explorer.Navigate(ShellObject.FromParsingName("shell:" + str)); } else Explorer.Navigate(ShellObject.FromParsingName(str.Replace("\"", ""))); (tabControl1.SelectedItem as CloseableTabItem).Path = Explorer.NavigationLog.CurrentLocation; } } catch { //AddToLog(String.Format("Unable to load {0} into a tab!", str)); MessageBox.Show("BetterExplorer is unable to load one of the tabs from your last session. Your other tabs are perfectly okay though! \r\n\r\nThis location was unable to be loaded: " + str, "Unable to Create New Tab", MessageBoxButton.OK, MessageBoxImage.Error); //NewTab(); } } if (tabControl1.Items.Count == 0) { NewTab(); if (StartUpLocation.IndexOf("::") == 0) { Explorer.Navigate(ShellObject.FromParsingName("shell:" + StartUpLocation)); } else Explorer.Navigate(ShellObject.FromParsingName(StartUpLocation.Replace("\"", ""))); (tabControl1.SelectedItem as CloseableTabItem).Path = Explorer.NavigationLog.CurrentLocation; }; isOnLoad = false; } } //sets up Jump List AppJL.ShowRecentCategory = true; AppJL.ShowFrequentCategory = true; JumpList.SetJumpList(Application.Current, AppJL); JumpTask newTab = new JumpTask(); newTab.ApplicationPath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; newTab.Arguments = "t"; newTab.Title = "Open Tab"; newTab.Description = "Opens new tab with default location"; JumpTask newWindow = new JumpTask(); newWindow.ApplicationPath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; newWindow.Arguments = "/nw"; newWindow.Title = "New Window"; newWindow.Description = "Creates a new window with default location"; AppJL.JumpItems.Add(newTab); AppJL.JumpItems.Add(newWindow); AppJL.Apply(); //Setup Clipboard monitor cbm.ClipboardChanged += new EventHandler<ClipboardChangedEventArgs>(cbm_ClipboardChanged); #region unneeded code //if (Tabs.Length == 0 || !IsrestoreTabs) //{ // CloseableTabItem cti = new CloseableTabItem(); // CreateTabbarRKMenu(cti); // Explorer.NavigationLog.CurrentLocation.Thumbnail.CurrentSize = new System.Windows.Size(16, 16); // cti.TabIcon = Explorer.NavigationLog.CurrentLocation.Thumbnail.BitmapSource; // cti.Header = Explorer.NavigationLog.CurrentLocation.GetDisplayName(DisplayNameType.Default); // cti.Path = Explorer.NavigationLog.CurrentLocation; // cti.Index = 0; // cti.log.CurrentLocation = Explorer.NavigationLog.CurrentLocation; // cti.CloseTab += new RoutedEventHandler(cti_CloseTab); // tabControl1.Items.Add(cti); // tabControl1.SelectedIndex = 0; // CurrentTabIndex = tabControl1.SelectedIndex; //} #endregion } )); if (exitApp) { Application.Current.Shutdown(); return; } try { Updater = UpdateManager.Instance; Updater.UpdateFeedReader = new NAppUpdate.Framework.FeedReaders.NauXmlFeedReader(); Updater.UpdateExecutableName = "Web Update.exe"; Updater.UpdateSource = new NAppUpdate.Framework.Sources.SimpleWebSource("http://better-explorer.com/onlineupdate/update.xml"); //TODO: reeable updates when there is site ready //CheckForUpdate(false); } catch (IOException) { this.stiUpdate.Content = "Switch to another BetterExplorer window or restart to check for updates."; this.btnUpdateCheck.IsEnabled = false; } verNumber.Content = "Version " + (System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false).FirstOrDefault() as AssemblyInformationalVersionAttribute).InformationalVersion; lblArchitecture.Content = Is64bitProcess(Process.GetCurrentProcess()) ? "64-bit version" : "32-bit version"; if (!TheRibbon.IsMinimized) { TheRibbon.SelectedTabItem = HomeTab; this.TheRibbon.SelectedTabIndex = 0; } //MessageBox.Show(TheRibbon.SelectedTabIndex.ToString(), "SelectedTabIndex Should be 0", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception exe) { MessageBox.Show("An error occurred while loading the window. Please report this issue at http://bexplorer.codeplex.com/. \r\n\r\n Here is some information about the error: \r\n\r\n" + exe.Message + "\r\n\r\n" + exe.ToString(), "Error While Loading", MessageBoxButton.OK, MessageBoxImage.Error); } }
/// <summary> /// Single instance callback handler. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="SingleInstanceApplication.InstanceCallbackEventArgs"/> instance containing the event data.</param> private void SingleInstanceCallback(object sender, InstanceCallbackEventArgs args) { string StartUpLocation = KnownFolders.Libraries.ParsingName; RegistryKey rk = Registry.CurrentUser; RegistryKey rks = rk.OpenSubKey(@"Software\BExplorer", false); StartUpLocation = rks.GetValue(@"StartUpLoc", KnownFolders.Libraries.ParsingName).ToString(); rks.Close(); rk.Close(); if (args == null || Dispatcher == null) return; Action<bool> d = (bool x) => { var win = MainWindow as MainWindow; if (win == null) return; win.ApendArgs(args.CommandLineArgs); //win.Activate(x); if (x) { ShellObject sho = null; if (args != null && args.CommandLineArgs != null) { if (args.CommandLineArgs.Length > 1 && args.CommandLineArgs[1] != null) { if (args.CommandLineArgs[1] != "t") { if (args.CommandLineArgs[1] == "nw") { BetterExplorer.MainWindow g = new MainWindow(); g.Show(); return; } else { String cmd = args.CommandLineArgs[1]; if (cmd.IndexOf("::") == 0) { sho = ShellObject.FromParsingName("shell:" + cmd); } else sho = ShellObject.FromParsingName(args.CommandLineArgs[1].Replace("\"", "")); } } else { if (StartUpLocation.IndexOf("::") == 0 && StartUpLocation.IndexOf(@"\") == -1) sho = ShellObject.FromParsingName("shell:" + StartUpLocation); else try { sho = ShellObject.FromParsingName(StartUpLocation); } catch { sho = (ShellObject)KnownFolders.Libraries; } } } else if (StartUpLocation.IndexOf("::") == 0 && StartUpLocation.IndexOf(@"\") == -1) sho = ShellObject.FromParsingName("shell:" + StartUpLocation); else try { sho = ShellObject.FromParsingName(StartUpLocation); } catch { sho = (ShellObject)KnownFolders.Libraries; } sho.Thumbnail.FormatOption = ShellThumbnailFormatOption.IconOnly; sho.Thumbnail.CurrentSize = new Size(16, 16); CloseableTabItem newt = new CloseableTabItem(); newt.Header = sho.GetDisplayName(DisplayNameType.Default); newt.TabIcon = sho.Thumbnail.BitmapSource; newt.Path = sho; win.CloneTab(newt); win.NavigateAfterTabChange(); IntPtr MainWinHandle = WindowsHelper.WindowsAPI.FindWindow(null, Process.GetCurrentProcess().MainWindowTitle); if (win.WindowState == WindowState.Minimized) { WindowsHelper.WindowsAPI.ShowWindow((int)MainWinHandle, (int)WindowsHelper.WindowsAPI.ShowCommands.SW_RESTORE); } WindowsHelper.WindowsAPI.BringWindowToTop(MainWinHandle); WindowsHelper.WindowsAPI.SetForegroundWindow(MainWinHandle); win.Activate(); } } }; Dispatcher.BeginInvoke(d, true); }
public void NewTab(bool IsNavigate = true) { CloseableTabItem newt = new CloseableTabItem(); CreateTabbarRKMenu(newt); ShellObject DefPath; if (StartUpLocation.IndexOf("::") == 0 && StartUpLocation.IndexOf(@"\") == -1) DefPath = ShellObject.FromParsingName("shell:" + StartUpLocation); else try { DefPath = ShellObject.FromParsingName(StartUpLocation); } catch { DefPath = (ShellObject)KnownFolders.Libraries; } DefPath.Thumbnail.CurrentSize = new System.Windows.Size(16, 16); DefPath.Thumbnail.FormatOption = ShellThumbnailFormatOption.IconOnly; newt.Header = DefPath.GetDisplayName(DisplayNameType.Default); newt.TabIcon = DefPath.Thumbnail.BitmapSource; newt.Path = DefPath; newt.IsNavigate = IsNavigate; newt.Index = tabControl1.Items.Count; newt.AllowDrop = true; newt.log.CurrentLocation = DefPath; newt.CloseTab += new RoutedEventHandler(newt_CloseTab); newt.DragEnter += new DragEventHandler(newt_DragEnter); newt.DragOver += new DragEventHandler(newt_DragOver); newt.Drop += new DragEventHandler(newt_Drop); tabControl1.Items.Add(newt); LastTabIndex = tabControl1.SelectedIndex; tabControl1.SelectedIndex = tabControl1.Items.Count - 1; tabControl1.SelectedItem = tabControl1.Items[tabControl1.Items.Count - 1]; CurrentTabIndex = tabControl1.Items.Count - 1; ConstructMoveToCopyToMenu(); }
void CloseTab(CloseableTabItem thetab) { if (thetab.Index == 0 && tabControl1.Items.Count == 1) { Close(); return; } int CurSelIndex = thetab.Index; if (CurSelIndex == 0) { if (LastTabIndex != -1) { try { tabControl1.SelectedItem = tabControl1.Items[LastTabIndex]; CurrentTabIndex = LastTabIndex; } catch { tabControl1.SelectedItem = tabControl1.Items[tabControl1.Items.Count - 1]; CurrentTabIndex = tabControl1.Items.Count - 1; } } else { tabControl1.SelectedItem = tabControl1.Items[1]; CurrentTabIndex = 0; } } else { if (CurSelIndex == tabControl1.Items.Count - 1) { if (CurSelIndex == LastTabIndex) { if (BeforeLastTabIndex != -1 && tabControl1.Items.Count >= BeforeLastTabIndex + 1) { tabControl1.SelectedItem = tabControl1.Items[BeforeLastTabIndex]; CurrentTabIndex = BeforeLastTabIndex; } else { tabControl1.SelectedItem = tabControl1.Items[CurSelIndex - 1]; CurrentTabIndex = CurSelIndex - 1; LastTabIndex = CurrentTabIndex; } } else { if (LastTabIndex != -1) { try { tabControl1.SelectedItem = tabControl1.Items[LastTabIndex]; CurrentTabIndex = LastTabIndex; } catch { //Handle the exeption on using Close all tabs command since we dont need to keep any index just to close the app } } } } else { if (CurSelIndex == LastTabIndex) { if (BeforeLastTabIndex != -1 && tabControl1.Items.Count >= BeforeLastTabIndex + 1) { tabControl1.SelectedItem = tabControl1.Items[BeforeLastTabIndex]; CurrentTabIndex = BeforeLastTabIndex; } else { tabControl1.SelectedItem = tabControl1.Items[CurSelIndex + 1]; CurrentTabIndex = CurSelIndex + 1; LastTabIndex = CurrentTabIndex; } } else { if (LastTabIndex != -1) { try { tabControl1.SelectedItem = tabControl1.Items[LastTabIndex]; CurrentTabIndex = LastTabIndex; } catch { if (LastTabIndex != 0) { tabControl1.SelectedItem = tabControl1.Items[tabControl1.Items.Count - 1]; CurrentTabIndex = tabControl1.Items.Count - 1; } else { tabControl1.SelectedItem = tabControl1.Items[0]; CurrentTabIndex = 0; } } } } } } for (int i = CurSelIndex + 1; i < tabControl1.Items.Count; i++) { CloseableTabItem tab = tabControl1.Items[i] as CloseableTabItem; tab.Index = tab.Index - 1; } try { tabControl1.Items.RemoveAt(CurSelIndex); } catch { tabControl1.Items.RemoveAt(CurSelIndex - 1); } ConstructMoveToCopyToMenu(); }