示例#1
0
文件: MainForm.cs 项目: oqewok/gitter
        public void CloseRepository()
        {
            if (_repositoryGui != null)
            {
                SaveGuiView(_repositoryGui);
                _repositoryGui.DetachFromEnvironment(this);
                var disp = _repositoryGui as IDisposable;
                if (disp != null)
                {
                    disp.Dispose();
                }
                _repositoryGui = null;
            }
            if (_currentProvider != null)
            {
                DetachRepository();
                _currentProvider = null;
            }
            _repositoryExplorerFactory.RootItem.RepositoryDisplayName = null;
            foreach (var gui in _additionalGui)
            {
                gui.DetachFromEnvironment(this);
                var disposable = gui as IDisposable;
                if (disposable != null)
                {
                    disposable.Dispose();
                }
            }
            _additionalGui.Clear();
            _activeIssueTrackerProviders.Clear();

            Text = Application.ProductName;
        }
示例#2
0
文件: MainForm.cs 项目: oqewok/gitter
 private void SaveGuiView(IRepositoryGuiProvider gui)
 {
     gui.SaveTo(_configurationService.GetSectionForProviderGui(_currentProvider));
 }
示例#3
0
文件: MainForm.cs 项目: oqewok/gitter
        public bool OpenRepository(string path, IRepositoryProvider repositoryProvider)
        {
            if (_currentProvider != repositoryProvider)
            {
                CloseRepository();
                _currentProvider = repositoryProvider;
            }
            else
            {
                DetachRepository();
                foreach (var gui in _additionalGui)
                {
                    gui.DetachFromEnvironment(this);
                }
                _additionalGui.Clear();
                _activeIssueTrackerProviders.Clear();
            }

            try
            {
                _repository = null;
                _repository = ProgressForm.MonitorTaskAsModalWindow(
                    this,
                    Resources.StrLoadingRepository,
                    (p, c) => _currentProvider.OpenRepositoryAsync(path, p, c));
            }
            catch (OperationCanceledException)
            {
                return(false);
            }
            catch (Exception exc)
            {
                if (exc.IsCritical())
                {
                    throw;
                }
                GitterApplication.MessageBoxService.Show(
                    this,
                    exc.Message,
                    Resources.ErrFailedToOpenRepository,
                    MessageBoxButton.Close,
                    MessageBoxIcon.Error);
            }
            if (_repository == null)
            {
                return(false);
            }
            _repository.Deleted += OnRepositoryDeleted;
            if (_repositoryGui != null)
            {
                _repositoryGui.Repository = _repository;
            }
            else
            {
                _repositoryGui            = _currentProvider.GuiProvider;
                _repositoryGui.Repository = _repository;
                LoadGuiView(_repositoryGui);
                _repositoryGui.AttachToEnvironment(this);
            }
            _repositoryGui.ActivateDefaultView();

            Text = _repository.WorkingDirectory + " - " + Application.ProductName;

            repositoryProvider.OnRepositoryLoaded(_repository);

            OpenIssueTrackers();

            return(true);
        }
示例#4
0
文件: MainForm.cs 项目: oqewok/gitter
 private void LoadGuiView(IRepositoryGuiProvider gui)
 {
     gui.LoadFrom(_configurationService.GetSectionForProviderGui(_currentProvider));
 }