/// <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; }
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); } }