Пример #1
0
        public ShellViewModel(
            IDialogService dialogService,
            IWindowManager windowManager,
            ISettingsProvider settingsService,
            IEventAggregator eventAggregator,
            MDIViewModel mdi,
            SettingsViewModel settingsViewModel,
            UpdaterViewModel updaterViewModel,
            Func <DocumentViewModel> documentCreator,
            Func <OpenFromWebViewModel> openFromWebCreator)
        {
            this.eventAggregator = eventAggregator;
            this.dialogService   = dialogService;
            this.windowManager   = windowManager;
            this.settingsService = settingsService;
            MDI     = mdi;
            Updater = updaterViewModel;
            this.documentCreator    = documentCreator;
            this.openFromWebCreator = openFromWebCreator;

            Settings = settingsViewModel;
            Settings.Initialize();

            ActivateItem(mdi);
        }
Пример #2
0
        public ShellViewModel(
            IDialogService dialogService,
            IEventAggregator eventAggregator,
            MdiViewModel mdi,
            SettingsViewModel settingsViewModel,
            UpdaterViewModel updaterViewModel,
            Func <DocumentViewModel> documentViewModelFactory,
            IDocumentFactory documentFactory,
            IFileSystem fileSystem,
            SearchSettings searchSettings, IOpenDocumentFromWeb openDocumentFromWeb)
        {
            this.eventAggregator = eventAggregator;
            this.dialogService   = dialogService;
            MDI     = mdi;
            Updater = updaterViewModel;
            this.documentViewModelFactory = documentViewModelFactory;
            this.documentFactory          = documentFactory;
            this.fileSystem          = fileSystem;
            SearchSettings           = searchSettings;
            this.openDocumentFromWeb = openDocumentFromWeb;

            Settings = settingsViewModel;
            Settings.Initialize();
            NewDocumentCommand       = new DelegateCommand(() => NewDocument());
            NewJekyllDocumentCommand = new DelegateCommand(() => NewDocument(CreateJekyllHeader()));
            SaveDocumentCommand      = new AwaitableDelegateCommand(SaveDocument, () => !IsWorking);
            SaveDocumentAsCommand    = new AwaitableDelegateCommand(SaveDocumentAs, () => !IsWorking);
            SaveAllDocumentsCommand  = new AwaitableDelegateCommand(SaveAllDocuments, () => !IsWorking);
            PublishDocumentCommand   = new AwaitableDelegateCommand(PublishDocument, () => !IsWorking);
            OpenDocumentCommand      = new DelegateCommand(OpenDocument, () => !IsWorking);
            OpenFromWebCommand       = new AwaitableDelegateCommand(OpenFromWeb, () => !IsWorking);
            CloseDocumentCommand     = new DelegateCommand(CloseDocument, () => ActiveDocumentViewModel != null);

            ActivateItem(mdi);
        }
Пример #3
0
        public ShellViewModel(
            IDialogService dialogService,
            IEventAggregator eventAggregator,
            MdiViewModel mdi,
            SettingsViewModel settingsViewModel,
            UpdaterViewModel updaterViewModel,
            Func <DocumentViewModel> documentViewModelFactory,
            IDocumentFactory documentFactory,
            IFileSystem fileSystem,
            SearchSettings searchSettings)
        {
            this.eventAggregator = eventAggregator;
            this.dialogService   = dialogService;
            MDI     = mdi;
            Updater = updaterViewModel;
            this.documentViewModelFactory = documentViewModelFactory;
            this.documentFactory          = documentFactory;
            this.fileSystem = fileSystem;
            SearchSettings  = searchSettings;

            Settings = settingsViewModel;
            Settings.Initialize();

            ActivateItem(mdi);
        }
Пример #4
0
        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
            Logger.Info("ThisAddIn_Shutdown: Starting to clean up after ourselves");
            XLToolbox.UserSettings.UserSettings.Default.Running = false;
            XLToolbox.UserSettings.UserSettings.Default.Save();
            XLToolbox.Backup.Backups.BackupFailed -= Backups_BackupFailed;

            if (XLToolbox.Legacy.LegacyToolbox.IsInitialized)
            {
                Logger.Info("Disposing legacy add-in");
                XLToolbox.Legacy.LegacyToolbox.Default.Dispose();
            }

            if (Updater.Default != null && Updater.Default.Status == Bovender.Versioning.UpdaterStatus.Downloaded)
            {
                Logger.Info("ThisAddIn_Shutdown: Offering to install update that was previously downloaded");
                UpdaterViewModel updaterVM = new UpdaterViewModel(Updater.Default);
                // Must show the InstallUpdateView modally, because otherwise Excel would
                // continue to shut down and immediately remove the view while doing so.
                updaterVM.InjectInto <XLToolbox.Versioning.InstallUpdateView>().ShowDialogInForm();
            }
            ;

            // Prevent "LocalDataSlot storage has been freed" exceptions;
            // see http://j.mp/localdatastoreslot
            Dispatcher.CurrentDispatcher.InvokeShutdown();
            Logger.Info("ThisAddIn_Shutdown: Done.");
        }
Пример #5
0
        public UpdaterWindow(UpdateItem updateItem)
        {
            if (updateItem == null)
            {
                throw new ArgumentNullException(nameof(updateItem));
            }

            updaterViewModel = new WpfUpdaterViewModel(this, updateItem);
            DataContext      = updaterViewModel;

            InitializeComponent();

            new XcbWebView(webBrowser);
            webBrowser.Loaded     += (o, e) => webBrowser.NavigateToString(updaterViewModel.ReleaseNotes);
            webBrowser.Navigating += (o, e) => {
                if (e.Uri != null)
                {
                    Process.Start(e.Uri.ToString());
                    e.Cancel = true;
                }
            };

            remindMeLaterButton.Click += (o, e) => Close();
            downloadButton.Click      += (o, e) => updaterViewModel.StartDownloadAsync().Forget();
            cancelButton.Click        += (o, e) => updaterViewModel.CancelDownload();

            preferenceChangeSubscription = PreferenceStore.Default.Subscribe(ObservePreferenceChange);
        }
Пример #6
0
        public UpdatePage(UpdaterViewModel updaterModel)
        {
            InitializeComponent();
            UpdaterModel     = updaterModel;
            this.DataContext = UpdaterModel;

//            this.Loaded += UpdatePage_Loaded;
        }
Пример #7
0
        private void AppOnStartup(object sender, StartupEventArgs e)
        {
            foreach (var proc in Process.GetProcessesByName("CappuChat"))
            {
                proc.Kill();
            }

            var serverConfigurationController = new ConfigurationController <ServerConfiguration>();

            if (!serverConfigurationController.TryReadConfiguration(out var serverConfiguration))
            {
                MessageBox.Show("Could not retrieve Configuration to download files.");
            }

            var chatClientPath = $"{Environment.CurrentDirectory}\\CappuChat.exe";

            string[] arguments =
            {
                $"-assemblyPath=\"{chatClientPath}\" ",
                $"-host=\"{serverConfiguration.Host}\" ",
                $"-ftpuser=\"{serverConfiguration.FtpUser}\" ",
                $"-ftppassword=\"{serverConfiguration.FtpPassword}\" "
            };

            var updaterArguments = new UpdaterArguments(arguments);
            var updaterViewModel = new UpdaterViewModel(updaterArguments);

            var window = new MainWindow
            {
                DataContext           = updaterViewModel,
                WindowStartupLocation = WindowStartupLocation.CenterScreen
            };

            var colorConfigurationController = new ConfigurationController <ColorConfiguration>();
            var colorConfiguration           = colorConfigurationController.ReadConfiguration(new ColorConfiguration
            {
                Color = "Steel"
            });

            ThemeManager.AddAccent("Orgadata", new Uri("Styles/OrgadataTheme.xaml"));

            var foundAccent = ThemeManager.Accents.FirstOrDefault(accent =>
                                                                  accent.Name.Equals(colorConfiguration.Color, StringComparison.CurrentCultureIgnoreCase));
            var theme = ThemeManager.DetectAppStyle(Current);

            ThemeManager.ChangeAppStyle(Current, foundAccent, theme.Item1);

            window.Show();

            Task.Run(async() =>
            {
                await updaterViewModel.Update().ConfigureAwait(false);
            });
        }
Пример #8
0
        public void PresentUpdate(UpdateItem updateItem)
        {
            viewModel = new MacUpdaterViewModel(View.Window, updateItem);
            viewModel.PropertyChanged += ViewModel_PropertyChanged;
            viewModel.DownloadItem.PropertyChanged += DownloadItem_PropertyChanged;

            ViewModel_PropertyChanged(null, null);
            DownloadItem_PropertyChanged(null, null);

            webView.MainFrame.LoadHtmlString(updateItem.ReleaseNotes, NSBundle.MainBundle.ResourceUrl);

            View.Window.MakeKeyAndOrderFront(this);
        }
Пример #9
0
        static void CheckForUpdate()
        {
            Updater.CanCheck = false;
            ReleaseInfo releaseInfo = new ReleaseInfo();

            Bovender.Versioning.ReleaseInfoViewModel releaseInfoVM = new Bovender.Versioning.ReleaseInfoViewModel(
                releaseInfo, XLToolbox.Versioning.SemanticVersion.Current);
            releaseInfoVM.ShowProgressMessage.Sent += (sender, args) =>
            {
                args.Content.Caption          = Strings.CheckForUpdates;
                args.Content.CancelButtonText = Strings.Cancel;
                args.Content.InjectInto <Bovender.Mvvm.Views.ProcessView>().ShowInForm();
            };
            releaseInfoVM.UpdateAvailableMessage.Sent += (sender, args) =>
            {
                Logger.Info("CheckForUpdate: UpdateAvailableMessage received");
                UpdaterViewModel updaterVM = new UpdaterViewModel(Updater.CreateDefault(releaseInfo));
                updaterVM.ShowUpdateAvailableView();
            };
            releaseInfoVM.NoUpdateAvailableMessage.Sent += (sender, args) =>
            {
                Logger.Info("CheckForUpdate: NoUpdateAvailableMessage received");
                ProcessCompletedAction a = new ProcessCompletedAction(
                    args.Content as ProcessMessageContent,
                    Strings.CheckForUpdates,
                    Strings.YouHaveTheLatestVersion,
                    Strings.OK);
                a.InvokeWithContent(args.Content);
                Updater.CanCheck = true;
            };
            releaseInfoVM.ExceptionMessage.Sent += (sender, args) =>
            {
                Logger.Warn("CheckForUpdate: ExceptionMessage received");
                Logger.Warn(releaseInfoVM.Exception);
                ProcessCompletedAction a = new ProcessCompletedAction(
                    args.Content as ProcessMessageContent,
                    Strings.CheckForUpdates,
                    Strings.FetchingVersionInformationFailed,
                    Strings.OK);
                a.InvokeWithContent(args.Content);
                Updater.CanCheck = true;
            };
            releaseInfoVM.StartProcess();
        }