Пример #1
0
        public SmilesToolbarGenerator(
            IServiceProvider provider, string menuName, SmilesToolbar toolbar)
        {
            if (provider == null)
            {
                throw new ArgumentNullException("provider");
            }
            if (menuName == null)
            {
                throw new ArgumentNullException("menuName");
            }
            if (toolbar == null)
            {
                throw new ArgumentNullException("toolbar");
            }

            _serviceProvider = provider;
            _toolbar         = toolbar;
            _menuName        = menuName;

            _menuService           = _serviceProvider.GetRequiredService <IMenuService>();
            _commandHandlerService = _serviceProvider.GetRequiredService <ICommandHandlerService>();
            _styleImageManager     = _serviceProvider.GetRequiredService <IStyleImageManager>();

            UpdateMenu();

            _menuChangedSubscription = _menuService
                                       .MenuChanged
                                       .Where(changedMenuName => _menuName == changedMenuName)
                                       .Subscribe(changedMenuName => UpdateMenu());
            _toolbar.ButtonClick += ToolbarButtonClick;
        }
        /// <summary>
        /// Попытаться получить картику, в случае если картинка найдена не будет
        /// вернуть специальную картинку, показывающую, что искомая картинка не найдена.
        /// </summary>
        public static Image TryGetImage(
            [NotNull] this IStyleImageManager styleImageManager,
            [NotNull] string name,
            StyleImageType imageType)
        {
            if (styleImageManager == null)
            {
                throw new ArgumentNullException("styleImageManager");
            }
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            return(styleImageManager.GetImage(name, imageType));
            //ToDo: сппециальная картинка для отсутствующих картинок
        }
        /// <summary>
        /// Добавить картинку с указанным типом в <see cref="ImageList"/>.
        /// </summary>
        /// <returns>Индекс добавлененой картинки или -1 если картинка не найдена.</returns>
        public static int AppendImage(
            this IStyleImageManager styleImageManager,
            [Localizable(false)] string name,
            StyleImageType imageType,
            ImageList imageList)
        {
            if (styleImageManager == null)
            {
                throw new ArgumentNullException("styleImageManager");
            }

            var img = styleImageManager.GetImage(name, imageType);

            if (img == null)
            {
                return(-1);
            }
            imageList.Images.Add(img);
            return(imageList.Images.Count - 1);
        }
Пример #4
0
        public StripMenuGenerator(
            [NotNull] IServiceProvider serviceProvider,
            [NotNull] ToolStrip toolStrip,
            [NotNull] string menuName,
            bool useSmallImages)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException("serviceProvider");
            }
            if (menuName == null)
            {
                throw new ArgumentNullException("menuName");
            }
            if (toolStrip == null)
            {
                throw new ArgumentNullException("toolStrip");
            }

            _serviceProvider = serviceProvider;
            _toolStrip       = toolStrip;
            _menuName        = menuName;
            _useSmallImages  = useSmallImages;

            if (toolStrip is ContextMenuStrip)
            {
                _menuType = TargetMenuType.ContextMenu;
            }
            else if (toolStrip is MenuStrip || toolStrip is ToolStripDropDownMenu)
            {
                _menuType = TargetMenuType.Menu;
            }
            else
            {
                _menuType = TargetMenuType.Toolbar;
            }

            _styleImageManager     = _serviceProvider.GetRequiredService <IStyleImageManager>();
            _menuService           = _serviceProvider.GetRequiredService <IMenuService>();
            _commandHandlerService = _serviceProvider.GetRequiredService <ICommandHandlerService>();
            _defaultCommandService = _serviceProvider.GetService <IDefaultCommandService>();
            _checkStateService     = _serviceProvider.GetService <ICheckStateService>();

            _uiAsyncOperation = _serviceProvider.GetRequiredService <IUIShell>().CreateUIAsyncOperation();

            Init();

            _disposables.Add(
                _menuService
                .MenuChanged
                .Where(changedMenuName => changedMenuName == _menuName)
                .Subscribe(arg => Init()));

            _disposables.Add(
                _commandHandlerService.SubscribeCommandStatusChanged(_serviceProvider, CommandStatusChanged));

            if (_checkStateService != null)
            {
                _disposables.Add(
                    _checkStateService.SubscribeCheckStateChanged(_serviceProvider, CheckStateChanged));
            }

            if (_defaultCommandService != null)
            {
                _disposables.Add(
                    _defaultCommandService.DefaultCommandChanged.Subscribe(
                        arg => _uiAsyncOperation.Post(Init)));
            }
        }