private async void Init()
        {
            var addins = await LoadAddins();

            AllAddins = new SourceList <AddinVM>();
            AllAddins.AddRange(addins.Select(s => new AddinVM(s)));

            var searchObs = this.WhenAnyValue(v => v.Search).Skip(1).Throttle(TimeSpan.FromMilliseconds(300)).Select(s => true);

            AllAddins.Connect()
            .Filter(filter)
            .AutoRefreshOnObservable(c => searchObs)
            .Bind(out var data)
            .Subscribe();
            Addins = data;

            if (!fileData.Data.LastAddin.IsNullOrEmpty())
            {
                Addin = AllAddins.Items.FirstOrDefault(a => a.Addin.AddinFile.EqualsIgnoreCase(fileData.Data.LastAddin));
                if (Addin != null && !fileData.Data.LastCommand.IsNullOrEmpty())
                {
                    Command = Addin.Addin.Commands.FirstOrDefault(
                        c => c.Command.GlobalName == fileData.Data.LastCommand);
                }
            }

            var canStart = this.WhenAnyValue(v => v.Command).Select(s => s != null);

            Start = CreateCommand(
                () =>
            {
                HideMe();
                var addin = Addin;
                var com   = Command;
                fileData.Data.AddinFiles.Remove(addin.Addin.AddinFile);
                fileData.Data.AddinFiles.Insert(0, addin.Addin.AddinFile);
                fileData.Data.LastAddin   = addin.Addin.AddinFile;
                fileData.Data.LastCommand = Command.Method.Name;
                OnClosing();
                AllAddins.Remove(addin);
                AllAddins.Insert(0, addin);
                Addin   = addin;
                Command = com;
                AddinManagerService.Invoke(com);
            }, canStart);
            RemoveAddin = this.CreateCommand <AddinVM>(a =>
            {
                AllAddins.Remove(a);
                fileData.Data.AddinFiles.Remove(a.Addin.AddinFile);
            });
            AddAddin = CreateCommand(AddAddinExec);
            if (!errors.IsNullOrEmpty())
            {
                ShowMessage(errors, "Đã xảy ra lỗi khi gọi tệp xung đột");
            }

            UpdateCommands = CreateCommand(UpdateCommandsExec);
        }
Exemple #2
0
        private async void Init()
        {
            var addins = await LoadAddins();

            AllAddins = new ReactiveList <AddinVM>(addins.Select(s => new AddinVM(s)));
            Addins    = AllAddins.CreateDerivedCollection(s => s, filter);
            if (!fileData.Data.LastAddin.IsNullOrEmpty())
            {
                Addin = AllAddins.FirstOrDefault(a => a.Addin.AddinFile.EqualsIgnoreCase(fileData.Data.LastAddin));
                if (Addin != null && !fileData.Data.LastCommand.IsNullOrEmpty())
                {
                    Command = Addin.Addin.Commands.FirstOrDefault(
                        c => c.Command.GlobalName == fileData.Data.LastCommand);
                }
            }

            var canStart = this.WhenAnyValue(v => v.Command).Select(s => s != null);

            Start = CreateCommand(() =>
            {
                HideMe();
                var addin = Addin;
                var com   = Command;
                fileData.Data.AddinFiles.Remove(addin.Addin.AddinFile);
                fileData.Data.AddinFiles.Insert(0, addin.Addin.AddinFile);
                fileData.Data.LastAddin   = addin.Addin.AddinFile;
                fileData.Data.LastCommand = Command.Method.Name;
                OnClosing();
                AllAddins.Remove(addin);
                AllAddins.Insert(0, addin);
                Addin   = addin;
                Command = com;
                AddinManagerService.Invoke(com);
            }, canStart);
            RemoveAddin = CreateCommand <AddinVM>(a =>
            {
                AllAddins.Remove(a);
                fileData.Data.AddinFiles.Remove(a.Addin.AddinFile);
            });
            AddAddin = CreateCommand(AddAddinExec);
            if (!errors.IsNullOrEmpty())
            {
                ShowMessage(errors, "Ошибка загрузки файлов сборок");
            }
            this.WhenAnyValue(v => v.Search).Skip(1).Throttle(TimeSpan.FromMilliseconds(300))
            .ObserveOn(dispatcher)
            .Subscribe(s =>
                       Addins.Reset());
        }
Exemple #3
0
        private void AddAddinExec()
        {
            var file       = SelectAddin();
            var addinExist = AllAddins.FirstOrDefault(a => a.Addin.AddinFile.EqualsIgnoreCase(file));

            if (addinExist != null)
            {
                ShowMessage("Такая сборка уже есть");
                Addin = addinExist;
                return;
            }

            var addin = AddinManagerService.GetAddin(file);

            AllAddins.Insert(0, new AddinVM(addin));
            fileData.Data.AddinFiles.Insert(0, file);
        }
Exemple #4
0
 private Task <List <Addin> > LoadAddins()
 {
     return(Task.Run(() =>
     {
         var file = NetLib.IO.Path.GetUserPluginFile("AcadAddinManager", "AcadAddinManagerData.json");
         fileData = new LocalFileData <AddinsData>(file, false);
         fileData.TryLoad(() => new AddinsData());
         errors = string.Empty;
         return fileData.Data.AddinFiles.Select(s =>
         {
             try
             {
                 return AddinManagerService.GetAddin(s);
             }
             catch (Exception ex)
             {
                 errors += $"{s} - {ex.Message}.\n\n";
                 return null;
             }
         })
         .Where(w => w != null).ToList();
     }));
 }
Exemple #5
0
 public void Update()
 {
     Addin = AddinManagerService.GetAddin(Addin.AddinFile);
     AllCommands.Clear();
     AllCommands.AddRange(Addin.Commands);
 }