コード例 #1
0
ファイル: MainForm.cs プロジェクト: oqewok/gitter
        /// <summary>Initializes a new instance of the <see cref="MainForm"/> class.</summary>
        public MainForm()
        {
            InitializeComponent();

            _configurationService     = GitterApplication.ConfigurationService;
            _repositoryManagerService = new RepositoryManagerService(SavedRecentRepositories);
            _viewDockService          = new ViewDockService(this, _toolDockGrid, _configurationService.ViewsSection);
            _notificationService      = new BalloonNotificationService();

            _repositoryManagerService.RecentRepositories.Changed += OnRecentRepositoriesChanged;

            ProvideToolbar(new StandardToolbar(this));

            _mnuRepository.DropDownItems.Insert(0,
                                                new ToolStripMenuItem(Resources.StrInit.AddEllipsis(), CachedResources.Bitmaps["ImgRepositoryInitSmall"], OnInitRepositoryClick));
            _mnuRepository.DropDownItems.Insert(1,
                                                new ToolStripMenuItem(Resources.StrClone.AddEllipsis(), CachedResources.Bitmaps["ImgRepositoryCloneSmall"], OnCloneRepositoryClick));
            _mnuRepository.DropDownItems.Insert(2,
                                                new ToolStripSeparator());

            _viewDockService = new ViewDockService(this, _toolDockGrid, _configurationService.ViewsSection);
            _viewDockService.RegisterFactory(
                _startPageFactory = new StartPageViewFactory());
            _viewDockService.RegisterFactory(
                _repositoryExplorerFactory = new RepositoryExplorerViewFactory(this));
            _viewDockService.RegisterFactory(
                _logFactory = new LogViewFactory());

            LoadOptions();
            LoadRecentRepositories();

            _viewDockService.ShowView(Guids.RepositoryExplorerView);

            _repositoryProviders         = new Dictionary <string, IRepositoryProvider>();
            _issueTrackerProviders       = new Dictionary <string, IRepositoryServiceProvider>();
            _activeIssueTrackerProviders = new HashSet <IRepositoryServiceProvider>();
            _additionalGui = new LinkedList <IGuiProvider>();

            LoadProviders();

            _mnuView.DropDownItems.Insert(0, new ViewMenuItem(_repositoryExplorerFactory, this));
            _mnuView.DropDownItems.Insert(1, new ViewMenuItem(_startPageFactory, this));
            _mnuView.DropDownItems.Insert(2, new ToolStripSeparator());

            _mnuView.DropDownItems.Add(new ToolStripSeparator());
            _mnuView.DropDownItems.Add(new ViewMenuItem(_logFactory, this));

            _mnuRepository.Text         = Resources.StrRepository;
            _mnuExit.Text               = Resources.StrExit;
            _mnuOpenRepository.Text     = Resources.StrOpen.AddEllipsis();
            _mnuRecentRepositories.Text = Resources.StrRecent;

            _mnuView.Text     = Resources.StrView;
            _mnuToolbars.Text = Resources.StrToolbars;

            _mnuTools.Text   = Resources.StrTools;
            _mnuOptions.Text = Resources.StrOptions.AddEllipsis();

            _mnuHelp.Text  = Resources.StrHelp;
            _mnuAbout.Text = Resources.StrAbout.AddEllipsis();

            _recentRepositoryPath = string.Empty;
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: oqewok/gitter
        public bool OpenRepository(string path, bool allowRecursiveSearch)
        {
            if (_repository != null && _repository.WorkingDirectory == path)
            {
                _repositoryGui.ActivateDefaultView();
                return(true);
            }
            try
            {
                _recentRepositoryPath = Path.GetFullPath(path);
            }
            catch (Exception exc)
            {
                if (exc.IsCritical())
                {
                    throw;
                }
                _recentRepositoryPath = string.Empty;
            }
            var prov = FindProviderForDirectory(path);

            if (prov == null && allowRecursiveSearch)
            {
                var di = new DirectoryInfo(path);
                if (di.Exists)
                {
                    while (di.Parent != null)
                    {
                        di   = di.Parent;
                        prov = FindProviderForDirectory(di.FullName);
                        if (prov != null)
                        {
                            path = di.FullName;
                            break;
                        }
                    }
                }
            }
            if (prov == null)
            {
                GitterApplication.MessageBoxService.Show(
                    this,
                    string.Format(Resources.ErrPathIsNotValidRepository, path),
                    Resources.ErrFailedToOpenRepository,
                    MessageBoxButton.Close,
                    MessageBoxIcon.Information);
                return(false);
            }
            else
            {
                var wasOpened = OpenRepository(path, prov);
                if (wasOpened)
                {
                    RepositoryManagerService.RegisterRecentRepository(path);
                    _repositoryExplorerFactory.RootItem.RepositoryDisplayName =
                        Path.GetFileName(path.EndsWithOneOf(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar) ?
                                         path.Substring(0, path.Length - 1) : path);
                }
                return(wasOpened);
            }
        }