Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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());
            });
        }
Ejemplo n.º 4
0
 public Starter(IBufermanHost bufermanHost, IBufermanApplication bufermanApp,
                IProgramSettingsGetter settings)
 {
     this._bufermanHost = bufermanHost;
     this._bufermanApp  = bufermanApp;
     this._settings     = settings;
 }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 protected ChangingTextMenuItemBase(BufermanMenuItem menuItem, IBufer bufer, IBufermanHost bufermanHost)
 {
     this.MenuItem     = menuItem;
     this.Bufer        = bufer;
     this.ViewModel    = bufer.ViewModel;
     this.BufermanHost = bufermanHost;
 }
Ejemplo n.º 7
0
 private EventHandler _OnDeleteAllTemporary(IBufermanHost bufermanHost)
 {
     return((object sender, EventArgs args) =>
     {
         this._clipboardBuferService.RemoveTemporaryClips();
         bufermanHost.RerenderBufers(this._clipboardBuferService.GetTemporaryBufers(), this._clipboardBuferService.GetPinnedBufers());
     });
 }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        public override void Initialize(IBufermanHost bufermanHost)
        {
            if (this.Available)
            {
                base.Initialize(bufermanHost);

                this._timer.Interval = this._settings.IntervalInSeconds * 1000;
                this._timer.Tick    += this._BatteryCheckHandler;
            }
        }
Ejemplo n.º 10
0
        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;
        }
Ejemplo n.º 11
0
        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;
            }
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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;
        }
Ejemplo n.º 14
0
        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);
                }
            });
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        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);
            }
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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);
                }
            };
        }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
0
        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;
            }
        }
Ejemplo n.º 24
0
        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);
                    }
                }
        }
Ejemplo n.º 25
0
 public BuferSelectionHandler(IBufer bufer, IClipboardWrapper clipboardWrapper, IBufermanHost bufermanHost)
 {
     this._bufer            = bufer;
     this._clipboardWrapper = clipboardWrapper;
     this._bufermanHost     = bufermanHost;
 }
Ejemplo n.º 26
0
 public CreateLoginCredentialsMenuItem(BufermanMenuItem menuItem, IBufer bufer, IBufermanHost bufermanHost) : base(menuItem, bufer, bufermanHost)
 {
     menuItem.AddOnClickHandler(this._CreateLoginCredentials);
     menuItem.ShortCut = Shortcut.CtrlL;
 }
Ejemplo n.º 27
0
 public void SetHost(IBufermanHost bufermanHost)
 {
     this.Host = bufermanHost;
     this.Host.HostLanguage = this._settings.PreferredTwoLetterISOLanguageName;
 }
Ejemplo n.º 28
0
 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);
        }
Ejemplo n.º 30
0
 public virtual void Initialize(IBufermanHost bufermanHost)
 {
     this.BufermanHost = bufermanHost;
 }