private BufermanMenuItem _GeneratePluginsMenu(IBufermanHost bufermanHost) { var pluginsMenu = bufermanHost.CreateMenuItem(() => Resource.MenuToolsPlugins); foreach (var plugin in this._plugins) { if (plugin.Available) { try { var pluginMenuItem = plugin.CreateMainMenuItem(); pluginsMenu.AddMenuItem(pluginMenuItem); } catch (Exception exc) { bufermanHost .UserInteraction .ShowPopup(exc.Message, plugin.Name); } } } if (pluginsMenu.Children.Any()) { pluginsMenu.AddSeparator(); pluginsMenu.AddMenuItem(bufermanHost.CreateMenuItem(() => Resource.MenuPluginsManagement));// Should open a window to enable/disable, change order (in menu items and so on). return(pluginsMenu); } else { return(null); } }
public ChangeTextMenuItem(BufermanMenuItem menuItem, IBufer bufer, IBufermanHost bufermanHost, IProgramSettingsGetter settings) : base(menuItem, bufer, bufermanHost) { menuItem.AddOnClickHandler(this._ChangeText); menuItem.ShortCut = Shortcut.CtrlH; this._settings = settings; }
private EventHandler _GetOnDeleteAllHandler(IBufermanHost bufermanHost) { return((object sender, EventArgs args) => { if (this._clipboardBuferService.GetPinnedBufers().Any()) { var result = bufermanHost.UserInteraction.ShowYesNoCancelPopup(Resource.MenuEditDelText, Resource.MenuEditDelTitle); switch (result) { case true: this._clipboardBuferService.RemoveTemporaryClips(); break; case false: this._clipboardBuferService.RemoveAllBufers(); break; } } else { this._clipboardBuferService.RemoveTemporaryClips(); } bufermanHost.RerenderBufers(this._clipboardBuferService.GetTemporaryBufers(), this._clipboardBuferService.GetPinnedBufers()); }); }
public Starter(IBufermanHost bufermanHost, IBufermanApplication bufermanApp, IProgramSettingsGetter settings) { this._bufermanHost = bufermanHost; this._bufermanApp = bufermanApp; this._settings = settings; }
public IList <BufermanMenuItem> Generate(IList <BufermanMenuItem> menuItems, IBufermanHost bufermanHost) { var httpUrlBuferExplanationCounter = this._settingsGetter.HttpUrlBuferExplanationCounter; if (httpUrlBuferExplanationCounter < int.MaxValue / 8) { if (this._IsPowerOfTwo(httpUrlBuferExplanationCounter)) { bufermanHost.NotificationEmitter.ShowInfoNotification(Resource.HttpUrlBuferExplanation, 2500); httpUrlBuferExplanationCounter *= 4; } this._settingsSetter.HttpUrlBuferExplanationCounter = httpUrlBuferExplanationCounter - 1; } menuItems.Add(bufermanHost.CreateMenuSeparatorItem()); var openInBrowserMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuOpenInBrowser, (object sender, EventArgs e) => Process.Start(this._url)); openInBrowserMenuItem.ShortCut = Shortcut.CtrlB; menuItems.Add(openInBrowserMenuItem); return(menuItems); }
protected ChangingTextMenuItemBase(BufermanMenuItem menuItem, IBufer bufer, IBufermanHost bufermanHost) { this.MenuItem = menuItem; this.Bufer = bufer; this.ViewModel = bufer.ViewModel; this.BufermanHost = bufermanHost; }
private EventHandler _OnDeleteAllTemporary(IBufermanHost bufermanHost) { return((object sender, EventArgs args) => { this._clipboardBuferService.RemoveTemporaryClips(); bufermanHost.RerenderBufers(this._clipboardBuferService.GetTemporaryBufers(), this._clipboardBuferService.GetPinnedBufers()); }); }
private BufermanMenuItem _GenerateFileMenu(IBufermanHost bufermanHost) { var fileMenu = bufermanHost.CreateMenuItem(() => Resource.MenuFile); // TODO (l) add menu item "Load bufers from storage" - will open dialog with default storage, or list of files, or other options. Also setting: check storage(s) to load on start // Option: reload from storage/file fileMenu.AddMenuItem(bufermanHost.CreateMenuItem(() => Resource.MenuFileLoad, (object sender, EventArgs args) => { this._userFileSelector.TrySelectBufersStorage(storage => storage.LoadBufers()); })); fileMenu.AddMenuItem(bufermanHost.CreateMenuItem(() => Resource.MenuFileChangeDefault, (object sender, EventArgs args) => { var defaultBufersFilePath = this._fileStorage.CombinePaths( this._fileStorage.DataDirectory, this._settings.DefaultBufersFileName); Process.Start(defaultBufersFilePath); })); fileMenu.AddSeparator(); var pauseResumeMenuItem = bufermanHost.CreateMenuItem(() => (bufermanHost.ShouldCatchCopies ? Resource.MenuFilePause : Resource.MenuFileResume) + $" {new String('\t', 1)} Alt+P"); pauseResumeMenuItem.AddOnClickHandler((object sender, EventArgs args) => { bufermanHost.ShouldCatchCopies = !bufermanHost.ShouldCatchCopies; }); fileMenu.AddMenuItem(pauseResumeMenuItem); if (this._sessionManager.IsLatestSessionSaved()) { var restoreSessionMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuFileRestoreSession); // no needs to display bufers count from the recent session because cost/benefit ratio is too high if (this._settings.RestorePreviousSession) { restoreSessionMenuItem.Enabled = false; this._sessionManager.RestoreSession(); } else { restoreSessionMenuItem.AddOnClickHandler((object sender, EventArgs args) => { restoreSessionMenuItem.Enabled = false; this._sessionManager.RestoreSession(); }); restoreSessionMenuItem.ShortCut = Shortcut.CtrlR; } fileMenu.AddMenuItem(restoreSessionMenuItem); } fileMenu.AddSeparator(); fileMenu.AddMenuItem(bufermanHost.CreateMenuItem(() => Resource.MenuFileExit, (object sender, EventArgs args) => bufermanHost.Exit())); return(fileMenu); }
public override void Initialize(IBufermanHost bufermanHost) { if (this.Available) { base.Initialize(bufermanHost); this._timer.Interval = this._settings.IntervalInSeconds * 1000; this._timer.Tick += this._BatteryCheckHandler; } }
public override void Initialize(IBufermanHost bufermanHost) { base.Initialize(bufermanHost); this._lastInactivityTime = this._time.LocalTime; bufermanHost.WindowHidden += BufermanHost_WindowHidden; bufermanHost.WindowActivated += BufermanHost_WindowActivated; bufermanHost.ClipbordUpdated += BufermanHost_ClipbordUpdated; }
public override void Initialize(IBufermanHost bufermanHost) { base.Initialize(bufermanHost); if (this.Enabled) { this.BufermanHost.AddStatusLinePart(null, new Icon(SystemIcons.Information, 30, 30), this._StatisticsLabel_MouseEnter); bufermanHost.ClipbordUpdated += this._BufermanHost_ClipbordUpdated; } }
public IEnumerable <BufermanMenuItem> GenerateMainMenu(IBufermanHost bufermanHost) { var items = new List <BufermanMenuItem> { this._GenerateFileMenu(bufermanHost), this._GenerateEditMenu(bufermanHost), this._GenerateToolsMenu(bufermanHost), this._GenerateHelpMenu(bufermanHost) }; return(items); }
public EditBuferTextMenuItem( BufermanMenuItem menuItem, BuferContextMenuState buferContextMenuState, IBufermanHost bufermanHost, IProgramSettingsGetter settings, IClipboardWrapper clipboardWrapper) { this._settings = settings; this._bufermanHost = bufermanHost; this._buferContextMenuState = buferContextMenuState; this._clipboardWrapper = clipboardWrapper; menuItem.AddOnClickHandler(this._ChangeBufer); menuItem.ShortCut = Shortcut.CtrlE; }
private EventHandler _GetShowMemoryUsageHandler(IBufermanHost bufermanHost) {// 1) Clear old bufers when memory taken is too much (can be a settings); return((object sender, EventArgs args) => { using (var performanceCounter = new PerformanceCounter()) { var proc = Process.GetCurrentProcess(); performanceCounter.CategoryName = "Process"; performanceCounter.CounterName = "Working Set - Private"; performanceCounter.InstanceName = proc.ProcessName; var memorySize = Convert.ToInt32(performanceCounter.NextValue()) / 1024; performanceCounter.Close(); bufermanHost.UserInteraction.ShowPopup(string.Format(Resource.MenuToolsMemoryMessageFormat, memorySize), Resource.MenuToolsMemoryCaption); } }); }
private BufermanMenuItem _GenerateToolsMenu(IBufermanHost bufermanHost) { var toolsMenu = bufermanHost.CreateMenuItem(() => Resource.MenuTools); toolsMenu.AddMenuItem(bufermanHost.CreateMenuItem(() => Resource.MenuToolsMemory, this._GetShowMemoryUsageHandler(bufermanHost))); var pluginsMenuItems = this._GeneratePluginsMenu(bufermanHost); if (pluginsMenuItems != null) { toolsMenu.AddMenuItem(pluginsMenuItems); } toolsMenu.AddMenuItem(this._GenerateLanguageMenu(bufermanHost)); toolsMenu.AddMenuItem(bufermanHost.CreateMenuSeparatorItem()); toolsMenu.AddMenuItem(bufermanHost.CreateMenuItem(() => Resource.MenuToolsOptions, (object sender, EventArgs args) => this._optionsWindowFactory.Create().Open())); return(toolsMenu); }
public void Render(IBufermanHost bufermanHost, IEnumerable <BuferViewModel> temporaryBuferViewModels, IEnumerable <BuferViewModel> pinnedBuferViewModels) { if (this._clipboardBuferService.BufersCount > this._settings.MaxBufersCount) { temporaryBuferViewModels = temporaryBuferViewModels.Skip(this._clipboardBuferService.BufersCount - this._settings.MaxBufersCount).ToList(); }// TODO (l) remove this after scrolling will be added var deletedBufers = new List <IBufer>(); foreach (var bufer in bufermanHost.Bufers) { var equalKey = temporaryBuferViewModels .Union(pinnedBuferViewModels) .FirstOrDefault(b => b.ViewId == bufer.ViewModel.ViewId); if (equalKey == null) { deletedBufers.Add(bufer); } } foreach (var bufer in deletedBufers) { bufermanHost.RemoveBufer(bufer); } if (temporaryBuferViewModels.Any()) { this._DrawBufers(bufermanHost, temporaryBuferViewModels.ToList(), temporaryBuferViewModels.Count() * BUTTON_HEIGHT - BUTTON_HEIGHT, temporaryBuferViewModels.Count() - 1); } var pinnedBufersDividerY = temporaryBuferViewModels.Count() * BUTTON_HEIGHT + 1; bufermanHost.SetPinnedBufersDividerY(pinnedBufersDividerY); if (pinnedBuferViewModels.Any()) { this._DrawBufers( bufermanHost, pinnedBuferViewModels.ToList(), pinnedBufersDividerY + bufermanHost.PinnedBufersDividerHeight + 1 + pinnedBuferViewModels.Count() * BUTTON_HEIGHT - BUTTON_HEIGHT, temporaryBuferViewModels.Count() + pinnedBuferViewModels.Count() - 1, true); } }
public IList <BufermanMenuItem> Generate(IList <BufermanMenuItem> menuItems, IBufermanHost bufermanHost) { menuItems.Add(bufermanHost.CreateMenuSeparatorItem()); var openFileLocationMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuOpenFileLocation, (object sender, EventArgs args) => { var arguments = $"/select, \"{this._filePath}\""; Process.Start("explorer.exe", arguments).WaitForInputIdle(); }); openFileLocationMenuItem.ShortCut = Shortcut.CtrlShiftF; menuItems.Add(openFileLocationMenuItem); //menuItems.Add(MenuItem to copy file path); // TODO (m) //menuItems.Add(MenuItem to copy folder's files); - as a part of plugin return(menuItems); }
public BuferContextMenuState( IClipboardBuferService clipboardBuferService, IBuferSelectionHandler buferSelectionHandler, IBufermanHost bufermanHost, Func <string> resourceMenuPin, Func <string> resourceMenuUnpin, Func <string> resourceMenuAddedToFile, IBufer bufer) { this._clipboardBuferService = clipboardBuferService; this._buferSelectionHandler = buferSelectionHandler; this._bufermanHost = bufermanHost; // TODO (m) remove below 3 lines after this class is relocated from infrastructure assembly this._resourceMenuPin = resourceMenuPin; this._resourceMenuUnpin = resourceMenuUnpin; this._resourceMenuAddedToFile = resourceMenuAddedToFile; this.Bufer = bufer; this.MarkAsPinnedMenuItem = bufermanHost.CreateMenuItem(this.Bufer.ViewModel.Pinned ? resourceMenuUnpin : resourceMenuPin, this.TryTogglePinBufer); }
private BufermanMenuItem _GenerateHelpMenu(IBufermanHost buferManHost) { var helpMenuItem = buferManHost.CreateMenuItem(() => Resource.MenuHelp); Func <string> documentationPath = () => Resource.DocumentationPath; helpMenuItem.AddMenuItem(buferManHost.CreateMenuItem(() => Resource.DocumentationMenuItem, (object sender, EventArgs e) => Process.Start(documentationPath()))); //helpMenuItem.AddSeparator(); var supportMenuItem = buferManHost.CreateMenuItem(() => Resource.MenuHelpSupport); supportMenuItem.AddMenuItem(buferManHost.CreateMenuItem("reformal.ru (на русском)", (object sender, EventArgs e) => Process.Start("http://buferman.reformal.ru/"))); supportMenuItem.AddMenuItem(buferManHost.CreateMenuItem("idea.informer.com (in English)", (object sender, EventArgs e) => Process.Start("http://buferman.idea.informer.com/"))); supportMenuItem.AddMenuItem(buferManHost.CreateMenuItem(() => Resource.MenuHelpSend, (object sender, EventArgs e) => Process.Start("mailto:[email protected]?subject=BuferMAN"))); supportMenuItem.AddMenuItem(buferManHost.CreateMenuItem(() => Resource.MenuHelpGitHub, (object sender, EventArgs e) => Process.Start("https://github.com/magicmanam/buferman/issues"))); helpMenuItem.AddMenuItem(supportMenuItem); var donateMenuItem = buferManHost.CreateMenuItem(() => Resource.MenuHelpDonate); donateMenuItem.AddMenuItem(buferManHost.CreateMenuItem(() => Resource.MenuHelpDonateIdea, (object sender, EventArgs args) => buferManHost.UserInteraction.ShowPopup(Resource.MenuHelpDonateText, Resource.MenuHelpDonateTitle))); donateMenuItem.AddMenuItem(buferManHost.CreateMenuItem("-> klopat.by", (object sender, EventArgs e) => Process.Start("http://www.klopat.by/"))); helpMenuItem.AddMenuItem(donateMenuItem); helpMenuItem.AddSeparator(); helpMenuItem.AddMenuItem(buferManHost.CreateMenuItem(() => Resource.MenuHelpAbout, (object sender, EventArgs args) => { var version = ApplicationDeployment.IsNetworkDeployed ? ApplicationDeployment.CurrentDeployment.CurrentVersion : Assembly.GetEntryAssembly().GetName().Version; buferManHost.UserInteraction.ShowPopup(Resource.MenuHelpAboutText + " " + version.ToString(), Resource.MenuHelpAboutTitle); })); return(helpMenuItem); }
public DeferredBuferDeletionWrapper(BuferContextMenuState buferContextMenuState, IBufermanHost bufermanHost, ITime time) { this._bufermanHost = bufermanHost; this._buferContextMenuState = buferContextMenuState; this._time = time; var deleteBuferNowMenuItem = bufermanHost.CreateMenuItem(() => Resource.DeleteBuferNowMenuItem, this._DeleteBuferImmediately); deleteBuferNowMenuItem.ShortCut = Shortcut.Del; buferContextMenuState.DeleteBuferMenuItem.AddMenuItem(deleteBuferNowMenuItem); buferContextMenuState.DeleteBuferMenuItem.AddMenuItem(bufermanHost.CreateMenuItem(() => string.Format(Resource.DeleteBuferInNMinutesMenuItem, 1), this._GetDeferredDeleteBuferHandler(1))); buferContextMenuState.DeleteBuferMenuItem.AddMenuItem(bufermanHost.CreateMenuItem(() => string.Format(Resource.DeleteBuferInNMinutesMenuItem, 10), this._GetDeferredDeleteBuferHandler(10))); buferContextMenuState.DeleteBuferMenuItem.AddMenuItem(bufermanHost.CreateMenuItem(() => string.Format(Resource.DeleteBuferInNMinutesMenuItem, 45), this._GetDeferredDeleteBuferHandler(45))); buferContextMenuState.PinnedBufer += (object sender, BuferPinnedEventArgs args) => { if (this.IsDeferredDeletionActivated()) { this.CancelDeferredBuferDeletion(sender, args); } }; }
private BufermanMenuItem _GenerateEditMenu(IBufermanHost bufermanHost) { var editMenu = bufermanHost.CreateMenuItem(() => Resource.MenuEdit); var undoMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuEditUndo, (sender, args) => { UndoableContext <ApplicationStateSnapshot> .Current.Undo(); bufermanHost.RerenderBufers(this._clipboardBuferService.GetTemporaryBufers(), this._clipboardBuferService.GetPinnedBufers()); }); undoMenuItem.ShortCut = Shortcut.CtrlZ; undoMenuItem.Enabled = false; editMenu.AddMenuItem(undoMenuItem); var redoMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuEditRedo, (sender, args) => { UndoableContext <ApplicationStateSnapshot> .Current.Redo(); bufermanHost.RerenderBufers(this._clipboardBuferService.GetTemporaryBufers(), this._clipboardBuferService.GetPinnedBufers()); }); redoMenuItem.ShortCut = Shortcut.CtrlY; redoMenuItem.Enabled = false; editMenu.AddMenuItem(redoMenuItem); var deleteAllMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuEditDel, this._GetOnDeleteAllHandler(bufermanHost)); editMenu.AddMenuItem(deleteAllMenuItem); var deleteTemporaryMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuEditDelTemp, this._OnDeleteAllTemporary(bufermanHost)); editMenu.AddMenuItem(deleteTemporaryMenuItem); editMenu.SetOnPopupHandler((object sender, EventArgs args) => { deleteTemporaryMenuItem.Enabled = this._clipboardBuferService.GetTemporaryBufers().Count() > 0; deleteAllMenuItem.Enabled = deleteTemporaryMenuItem.Enabled || this._clipboardBuferService.GetPinnedBufers().Count() > 0; }); UndoableContext <ApplicationStateSnapshot> .Current.UndoableAction += (object sender, UndoableActionEventArgs <ApplicationStateSnapshot> e) => { undoMenuItem.Enabled = e.CanUndo; redoMenuItem.Enabled = e.CanRedo; }; return(editMenu); }
private BufermanMenuItem _GenerateLanguageMenu(IBufermanHost bufermanHost) { var languageMenu = bufermanHost.CreateMenuItem(() => Resource.MenuToolsLanguage); var englishMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuToolsLanguageEn); languageMenu.AddMenuItem(englishMenuItem); var russianMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuToolsLanguageRu); languageMenu.AddMenuItem(russianMenuItem); switch (bufermanHost.HostLanguage) { case "ru": this._UpdateLanguageMenuItems(russianMenuItem, englishMenuItem); break; case "en": this._UpdateLanguageMenuItems(englishMenuItem, russianMenuItem); break; } englishMenuItem.AddOnClickHandler((object sender, EventArgs args) => { bufermanHost.ChangeLanguage("en"); this._settingsSetter.PreferredTwoLetterISOLanguageName = "en"; this._UpdateLanguageMenuItems(englishMenuItem, russianMenuItem); }); russianMenuItem.AddOnClickHandler((object sender, EventArgs args) => { bufermanHost.ChangeLanguage("ru"); this._settingsSetter.PreferredTwoLetterISOLanguageName = "ru"; this._UpdateLanguageMenuItems(russianMenuItem, englishMenuItem); }); return(languageMenu); }
private void _DrawBufers(IBufermanHost bufermanHost, List <BuferViewModel> bufers, int y, int currentButtonIndex, bool pinned = false)// TODO (l) remove this parameter: get from bufers collection, but be careful!!! { foreach (var buferViewModel in bufers) { var bufer = bufermanHost.Bufers.SingleOrDefault(b => b.ViewModel.ViewId == buferViewModel.ViewId); if (bufer == null) { bufer = bufermanHost.CreateBufer(); bufer.BackColor = this._settings.BuferDefaultBackgroundColor; bufer.ViewModel = buferViewModel; bufer.Width = bufermanHost.InnerAreaWidth; this._buferHandlersBinder.Bind(bufer, bufermanHost); this._TryApplyPresentation(bufer); bufermanHost.AddBufer(bufer); } var isCurrentBufer = buferViewModel.ViewId == bufermanHost.CurrentBuferViewId; this._UpdateCtrlCMenuItem(bufer.ContextMenu, isCurrentBufer); var defaultBackColor = isCurrentBufer ? (pinned ? this._settings.PinnedCurrentBuferBackColor : this._settings.CurrentBuferBackgroundColor) : (pinned ? this._settings.PinnedBuferBackgroundColor : this._settings.BuferDefaultBackgroundColor); bufer.BackColor = defaultBackColor; bufer.ViewModel.DefaultBackColor = defaultBackColor; bufer.TabIndex = currentButtonIndex; bufer.Location = new Point(0, y); currentButtonIndex -= 1; y -= BUTTON_HEIGHT; } }
public BuferHandlersWrapper( IClipboardBuferService clipboardBuferService, IBuferContextMenuGenerator buferContextMenuGenerator, IBuferSelectionHandlerFactory buferSelectionHandlerFactory, IFileStorage fileStorage, IBufermanHost bufermanHost, IProgramSettingsGetter settingsGetter, IProgramSettingsSetter settingsSetter, IEnumerable<IBufermanPlugin> plugins, IBufer bufer) { this._settingsGetter = settingsGetter; this._settingsSetter = settingsSetter; this._clipboardBuferService = clipboardBuferService; this._bufermanHost = bufermanHost; this._bufer = bufer; this._buferSelectionHandlerFactory = buferSelectionHandlerFactory; this._fileStorage = fileStorage; var formats = this._bufer.ViewModel.Clip.GetFormats(); string buferTitle = null; var clipFiles = this._bufer.ViewModel.Clip.GetData(DataFormats.FileDrop) as string[]; if (clipFiles != null && clipFiles.Length > 0) { var firstFile = clipFiles.First(); var onlyFolders = clipFiles.Select(f => this._fileStorage.GetFileAttributes(f).HasFlag(FileAttributes.Directory)) .All(f => f); if (clipFiles.Length == 1) { buferTitle = this._MakeSpecialBuferText( firstFile.Length < settingsGetter.MaxFilePathLengthForBuferTitle ? firstFile : (onlyFolders ? Resource.FolderBufer : Resource.FileBufer));// TODO (m) these resources are duplicated in BuferMAN.Application project } else { buferTitle = this._MakeSpecialBuferText($"{(onlyFolders ? Resource.FoldersBufer : Resource.FilesBufer)} ({clipFiles.Length})"); } } else { if (formats.Contains(ClipboardFormats.CUSTOM_IMAGE_FORMAT) || formats.Contains(ClipboardFormats.FILE_CONTENTS_FORMAT)) { this._bufer.ApplyFontStyle(FontStyle.Italic | FontStyle.Bold); } } string buferText = buferTitle ?? this._bufer.ViewModel.TextRepresentation; if (string.IsNullOrWhiteSpace(buferText)) { this._bufer.ApplyFontStyle(FontStyle.Italic | FontStyle.Bold); this._bufer.ViewModel.IsChangeTextAvailable = false; if (buferText == null) { if (formats.Any(f => string.Equals(f, ClipboardFormats.VISUAL_STUDIO_PROJECT_ITEMS, StringComparison.InvariantCultureIgnoreCase))) { buferText = "<< VISUAL STUDIO project items >>"; } else { buferText = Resource.NotTextBufer; // TODO (l) maybe track such cases and/or ask user to send info (at least formats list) of this bufer? // Or user can think of some name for this combination of formats } } else { buferText = this._MakeSpecialBuferText($"{buferText.Length} {Resource.WhiteSpaces}"); this._bufer.ViewModel.TooltipTitle = buferText; } } this._bufer.ViewModel.DefaultBackColor = this._bufer.BackColor; buferText = buferText.Trim(); this._bufer.SetText(buferText); this._bufer.ViewModel.OriginBuferTitle = buferText; this._bufer.SetMouseOverToolTip(this._bufer.ViewModel.TextRepresentation); this._bufer.ViewModel.TooltipTitle = this._bufer.ViewModel.TooltipTitle ?? buferTitle; if (!string.IsNullOrWhiteSpace(this._bufer.ViewModel.TooltipTitle)) { this._bufer.MouseOverTooltip.ToolTipTitle = this._bufer.ViewModel.TooltipTitle; this._bufer.FocusTooltip.ToolTipTitle = this._bufer.ViewModel.TooltipTitle; } IBuferTypeMenuGenerator buferTypeMenuGenerator = null; if (Uri.TryCreate(this._bufer.ViewModel.OriginBuferTitle, UriKind.Absolute, out var uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps)) { buferTypeMenuGenerator = new HttpUrlBuferMenuGenerator(this._bufer.ViewModel.OriginBuferTitle, this._settingsGetter, this._settingsSetter); } else { var files = this._bufer.ViewModel.Clip.GetData(DataFormats.FileDrop) as string[]; if (files != null && files.Length > 0) { var firstFile = files.First(); if (files.Length == 1) { buferTypeMenuGenerator = new FileBuferMenuGenerator(firstFile); } } } if (formats.Contains(ClipboardFormats.CUSTOM_IMAGE_FORMAT)) { var image = this._bufer.ViewModel.Clip.GetData(ClipboardFormats.CUSTOM_IMAGE_FORMAT) as Image; if (image != null) { this._bufer.ViewModel.Representation = image; this._bufer.MouseOverTooltip.IsBalloon = false; this._bufer.MouseOverTooltip.OwnerDraw = true; this._bufer.MouseOverTooltip.Popup += (object sender, PopupEventArgs e) => { e.ToolTipSize = new Size((int)(image.Width * IMAGE_SCALE), (int)(image.Height * IMAGE_SCALE)); }; this._bufer.MouseOverTooltip.Draw += (object sender, DrawToolTipEventArgs e) => { using (var b = new TextureBrush(new Bitmap(image))) { b.ScaleTransform(IMAGE_SCALE, IMAGE_SCALE); var g = e.Graphics; g.FillRectangle(b, e.Bounds); } }; } } this._bufer.AddOnFocusHandler(this._Bufer_GotFocus); this._bufer.AddOnUnfocusHandler(this._Bufer_LostFocus); var buferSelectionHandler = this._buferSelectionHandlerFactory.CreateHandler(this._bufer, bufermanHost); if (this._settingsGetter.IsBuferClickingExplained) { this._bufer.AddOnClickHandler(buferSelectionHandler.DoOnClipSelection); } else { this._bufer.AddOnClickHandler((object sender, EventArgs e) => { if (this._settingsGetter.IsBuferClickingExplained) { buferSelectionHandler.DoOnClipSelection(sender, e); } else { this._bufermanHost.UserInteraction.ShowPopup(Resource.BuferClickingExplanationText, Application.ProductName); this._settingsSetter.MarkThatBuferClickingWasExplained(); } }); } var buferContextMenuState = new BuferContextMenuState( clipboardBuferService, buferSelectionHandler, bufermanHost, () => Resource.MenuPin, // TODO (m) remove these actions () => Resource.MenuUnpin, () => Resource.MenuAddedToFile, bufer); bufer.ContextMenu = buferContextMenuGenerator.GenerateContextMenuItems(buferContextMenuState, bufermanHost, buferTypeMenuGenerator); foreach (var plugin in plugins) if (plugin.Available && plugin.Enabled) { try { plugin.UpdateBuferItem(buferContextMenuState); } catch (Exception exc) { bufermanHost .UserInteraction .ShowPopup(exc.Message, plugin.Name); } } }
public BuferSelectionHandler(IBufer bufer, IClipboardWrapper clipboardWrapper, IBufermanHost bufermanHost) { this._bufer = bufer; this._clipboardWrapper = clipboardWrapper; this._bufermanHost = bufermanHost; }
public CreateLoginCredentialsMenuItem(BufermanMenuItem menuItem, IBufer bufer, IBufermanHost bufermanHost) : base(menuItem, bufer, bufermanHost) { menuItem.AddOnClickHandler(this._CreateLoginCredentials); menuItem.ShortCut = Shortcut.CtrlL; }
public void SetHost(IBufermanHost bufermanHost) { this.Host = bufermanHost; this.Host.HostLanguage = this._settings.PreferredTwoLetterISOLanguageName; }
public void Bind(IBufer bufer, IBufermanHost bufermanHost) { new BuferHandlersWrapper(this._clipboardBuferService, this._buferContextMenuGenerator, this._buferSelectionHandlerFactory, this._fileStorage, bufermanHost, this._settingsGetter, this._settingsSetter, this._plugins, bufer); }
public IEnumerable <BufermanMenuItem> GenerateContextMenuItems(BuferContextMenuState buferContextMenuState, IBufermanHost bufermanHost, IBuferTypeMenuGenerator buferTypeMenuGenerator) { var bufer = buferContextMenuState.Bufer; var buferViewModel = bufer.ViewModel; IList <BufermanMenuItem> menuItems = new List <BufermanMenuItem>(); buferContextMenuState.MarkAsPinnedMenuItem.ShortCut = Shortcut.CtrlS; menuItems.Add(buferContextMenuState.MarkAsPinnedMenuItem); var formats = buferContextMenuState.Bufer.ViewModel.Clip.GetFormats(); var formatsMenuItems = new List <BufermanMenuItem>(); foreach (var format in formats) { if (format != ClipboardFormats.CUSTOM_IMAGE_FORMAT && format != ClipboardFormats.FROM_FILE_FORMAT) { var particularFormatMenu = bufermanHost.CreateMenuItem(format); var formatData = buferContextMenuState.Bufer.ViewModel.Clip.GetData(format); if (formatData is Stream) { particularFormatMenu.Text += $" ({Resource.StreamFormat})"; } else if (formatData is string) { particularFormatMenu.Text += $" ({Resource.TextFormat})"; } if (formatData == null) { particularFormatMenu.Enabled = false; } else { var data = formatData.ToString(); if (data.Length > 2300) { data = $"{data.Substring(0, 2000)}{Environment.NewLine}{Environment.NewLine}..."; } particularFormatMenu.AddOnClickHandler((object sender, EventArgs args) => { bufermanHost.UserInteraction.ShowPopup(data, format); }); } formatsMenuItems.Add(particularFormatMenu); } } var formatsMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuFormats + $" ({formatsMenuItems.Count})"); foreach (var formatMenuItem in formatsMenuItems) { formatsMenuItem.AddMenuItem(formatMenuItem); } menuItems.Add(formatsMenuItem); buferContextMenuState.DeleteBuferMenuItem = bufermanHost.CreateMenuItem(() => Resource.DeleteBuferMenuItem, (object sender, EventArgs args) => { buferContextMenuState.RemoveBufer(); }); menuItems.Add(buferContextMenuState.DeleteBuferMenuItem); buferContextMenuState.PasteMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuPaste); menuItems.Add(buferContextMenuState.PasteMenuItem); buferContextMenuState.PlaceInBuferMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuPlaceInBufer, (object sender, EventArgs e) => { this._clipboardWrapper.SetDataObject(buferContextMenuState.Bufer.ViewModel.Clip); }); buferContextMenuState.PlaceInBuferMenuItem.ShortCut = Shortcut.CtrlC; if (bufer.ViewModel.IsChangeTextAvailable) { buferContextMenuState.PasteMenuItem.AddMenuItem(bufermanHost.CreateMenuItem(() => Resource.MenuPasteAsIs + $" {new String('\t', 4)} Enter", (object sender, EventArgs ars) => { new KeyboardEmulator().PressEnter(); })); if (formats.Length != 3 || ClipboardFormats.TextFormats.Any(tf => !formats.Contains(tf))) { var pasteAsTextMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuPasteAsText, (object sender, EventArgs args) => { var textDataObject = new DataObject(); textDataObject.SetText(buferViewModel.OriginBuferTitle); var oldClip = buferViewModel.Clip; buferViewModel.Clip = textDataObject; var textBuferSelectionHandler = this._buferSelectionHandlerFactory.CreateHandler(bufer, bufermanHost); textBuferSelectionHandler.DoOnClipSelection(sender, args); buferViewModel.Clip = oldClip; }); buferContextMenuState.PasteMenuItem.AddMenuItem(pasteAsTextMenuItem); pasteAsTextMenuItem.ShortCut = Shortcut.CtrlA; } buferContextMenuState.PasteMenuItem.AddMenuItem(bufermanHost.CreateMenuItem(() => Resource.MenuCharByChar, (object sender, EventArgs args) => { bufermanHost.HideWindow(); new KeyboardEmulator().TypeText(buferContextMenuState.Bufer.ViewModel.OriginBuferTitle); })); menuItems.Add(bufermanHost.CreateMenuSeparatorItem()); var editTextMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuEdit); new EditBuferTextMenuItem(editTextMenuItem, buferContextMenuState, bufermanHost, this._settings, this._clipboardWrapper); menuItems.Add(editTextMenuItem); var returnTextToInitialMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuReturn); new ReturnToInitialTextMenuItem(returnTextToInitialMenuItem, buferContextMenuState.Bufer, bufermanHost); buferContextMenuState.ReturnTextToInitialMenuItem = returnTextToInitialMenuItem; var changeTextMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuChange); var ctmi = new ChangeTextMenuItem(changeTextMenuItem, buferContextMenuState.Bufer, bufermanHost, this._settings); if (!string.IsNullOrWhiteSpace(buferViewModel.Alias)) { ctmi.TryChangeText(buferViewModel.Alias); } ctmi.TextChanged += (object sender, TextChangedEventArgs e) => { buferContextMenuState.ReturnTextToInitialMenuItem.Enabled = !e.IsOriginText; }; buferContextMenuState.ChangeTextMenuItem = changeTextMenuItem; menuItems.Add(buferContextMenuState.ChangeTextMenuItem); menuItems.Add(buferContextMenuState.ReturnTextToInitialMenuItem); buferContextMenuState.AddToFileMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuAddToFile); if (formats.Contains(ClipboardFormats.FROM_FILE_FORMAT)) { buferContextMenuState.MarkMenuItemAsAddedToFile(); } else { var addToDefaultFileMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuAddToDefaultFile, (object sender, EventArgs args) => { var bufersStorage = this._bufersStorageFactory.CreateStorageByFileExtension( this._fileStorage.CombinePaths( this._fileStorage.DataDirectory, this._settings.DefaultBufersFileName)); var buferItem = buferContextMenuState.Bufer.ViewModel.ToModel(); bufersStorage.SaveBufer(buferItem); buferContextMenuState.MarkMenuItemAsAddedToFile(); }); addToDefaultFileMenuItem.ShortCut = Shortcut.CtrlF; buferContextMenuState.AddToFileMenuItem.AddMenuItem(addToDefaultFileMenuItem); var addToFileMenuItem = bufermanHost.CreateMenuItem(() => Resource.MenuAddToSelectedFile, (object sender, EventArgs args) => { var buferItem = buferContextMenuState.Bufer.ViewModel.ToModel(); this._userFileSelector.TrySelectBufersStorage(storage => storage.SaveBufer(buferItem)); }); buferContextMenuState.AddToFileMenuItem.AddSeparator(); buferContextMenuState.AddToFileMenuItem.AddMenuItem(addToFileMenuItem); } menuItems.Add(buferContextMenuState.AddToFileMenuItem); var loginCredentialsMenuItem = bufermanHost.CreateMenuItem(() => Resource.CreateCredsMenuItem); var clcmi = new CreateLoginCredentialsMenuItem(loginCredentialsMenuItem, buferContextMenuState.Bufer, bufermanHost); clcmi.LoginCreated += (object sender, CreateLoginCredentialsEventArgs e) => { buferContextMenuState.PasteMenuItem.SetTextFunction(() => $"{Resource.LoginWith} {new String('\t', 2)} Enter"); buferContextMenuState.PasteMenuItem.TextRefresh(); buferContextMenuState.ReturnTextToInitialMenuItem.Enabled = false; buferContextMenuState.PlaceInBuferMenuItem.Enabled = false; buferContextMenuState.ChangeTextMenuItem.Enabled = false; buferViewModel.Clip.SetData(ClipboardFormats.PASSWORD_FORMAT, e.Password); if (!buferViewModel.Pinned) { buferContextMenuState.TryTogglePinBufer(sender, e); } buferContextMenuState.RemoveBuferSelectionHandler(); }; buferContextMenuState.CreateLoginDataMenuItem = loginCredentialsMenuItem; menuItems.Add(buferContextMenuState.CreateLoginDataMenuItem); buferContextMenuState.PasteMenuItem.AddSeparator(); buferContextMenuState.PasteMenuItem.AddMenuItem(buferContextMenuState.PlaceInBuferMenuItem); } else { buferContextMenuState.PasteMenuItem.Text += $" {new String('\t', 4)} Enter"; buferContextMenuState.PasteMenuItem.AddOnClickHandler((object sender, EventArgs ars) => { new KeyboardEmulator().PressEnter(); }); menuItems.Add(buferContextMenuState.PlaceInBuferMenuItem); } if (buferTypeMenuGenerator != null) { menuItems = buferTypeMenuGenerator.Generate(menuItems, bufermanHost); } menuItems.Add(bufermanHost.CreateMenuSeparatorItem()); var createdAtMenuItem = bufermanHost.CreateMenuItem(() => string.Format(Resource.MenuCopyingTime, buferViewModel.CreatedAt)); createdAtMenuItem.Enabled = false; menuItems.Add(createdAtMenuItem); return(menuItems); }
public virtual void Initialize(IBufermanHost bufermanHost) { this.BufermanHost = bufermanHost; }