/// <summary>Add page to settings tree</summary> /// <param name="page">The settings page to add</param> /// <param name="parentPageReference">An already added settings page to be a parent in the tree</param> /// <param name="icon">An icon to display in tree node</param> /// <param name="asRoot">only one page can be set as the root page (for the GitExt and Plugin root node)</param> public void AddSettingsPage(ISettingsPage page, SettingsPageReference parentPageReference, Image icon, bool asRoot = false) { TreeNode node; if (parentPageReference == null) { // add one of the root nodes (e. g. "Git Extensions" or "Plugins" node = AddPage(treeView1.Nodes, page, icon); } else { if (asRoot) { // e. g. to set the Checklist on the "Git Extensions" node node = _pages2NodeMap[parentPageReference]; } else { if (!_pages2NodeMap.TryGetValue(parentPageReference, out var parentNode)) { throw new ArgumentException("You have to add parent page first: " + parentPageReference); } node = AddPage(parentNode.Nodes, page, icon); } } node.Tag = page; _pages2NodeMap.Add(page.PageReference, node); _settingsPages.Add(page); }
/// <summary> /// </summary> /// <param name="page"></param> /// <param name="parentPageReference"></param> /// <param name="asRoot">only one page can be set as the root page (for the GitExt and Plugin root node)</param> public void AddSettingsPage(ISettingsPage page, SettingsPageReference parentPageReference, bool asRoot = false) { TreeNode node; if (parentPageReference == null) { // add one of the root nodes (e. g. "Git Extensions" or "Plugins" node = treeView1.Nodes.Add(page.GetTitle()); } else { if (asRoot) { // e. g. to set the Checklist on the "Git Extensions" node node = _Pages2NodeMap[parentPageReference]; } else { TreeNode parentNode; if (!_Pages2NodeMap.TryGetValue(parentPageReference, out parentNode)) throw new ArgumentException("You have to add parent page first: " + parentPageReference); node = parentNode.Nodes.Add(page.GetTitle()); } } node.Tag = page; _Pages2NodeMap.Add(page.PageReference, node); _SettingsPages.Add(page); }
public void UpdateSettingsFrame(ISettingsPage settingsPage) { if (settingsPage == null) { return; } settingsFrame.Content = settingsPage; }
private TreeNode AddPage(TreeNodeCollection treeNodeCollection, ISettingsPage page, Image icon) { var node = treeNodeCollection.Add(page.GetTitle()); if (icon == null) { return(node); } treeView1.ImageList.Images.Add(icon); node.ImageIndex = node.SelectedImageIndex = treeView1.ImageList.Images.Count - 1; return(node); }
private void PageTree_AfterSelect(object sender, TreeViewEventArgs e) { ISettingsPage page = e.Node.Tag as ISettingsPage; if (!_applyList.Contains(page)) { _applyList.Add(page); } page.Control.Dock = DockStyle.Fill; SplitBox.Panel2.Controls.Add(page.Control); if (_currentPage != null) { _currentPage.Hide(); } page.Control.Show(); _currentPage = page.Control; }
public void AddSettingsPage(ISettingsPage page, SettingsPageReference parentPageReference) { TreeNode node; if (parentPageReference == null) node = treeView1.Nodes.Add(page.GetTitle()); else { TreeNode parentNode; if (!_Pages2NodeMap.TryGetValue(parentPageReference, out parentNode)) throw new ArgumentException("You have to add parent page first: " + parentPageReference.ToString()); node = parentNode.Nodes.Add(page.GetTitle()); } node.Tag = page; _Pages2NodeMap.Add(page.PageReference, node); _SettingsPages.Add(page); }
public void Setup() { this._logger = A.Fake <ICustomLoggerFactory>(); this._menuVisualizer = A.Fake <IMenuVisualizer>(); this._outputEnvironment = A.Fake <IOutputEnvironment>(); this._authService = A.Fake <IAuthService>(); this._bookPage = A.Fake <IBookPage>(); this._clientPage = A.Fake <IClientPage>(); this._settingsPage = A.Fake <ISettingsPage>(); _page = new MainPage( _logger, _menuVisualizer, _outputEnvironment, _authService, _bookPage, _clientPage, _settingsPage); }
/// <summary> /// Initializes a new instance of the <see cref="MainPage"/> class. /// </summary> /// <param name="loggerFactory">Logger factory</param> /// <param name="menuVisualizer">Menu visualizer</param> /// <param name="outputEnvironment">Output environment implementation</param> /// <param name="authService">Authorization service implementation</param> /// <param name="bookPage">Book page implementation</param> /// <param name="clientPage">Client page implementation</param> /// <param name="settingsPage">Settings page implementation</param> public MainPage( ICustomLoggerFactory loggerFactory, IMenuVisualizer menuVisualizer, IOutputEnvironment outputEnvironment, IAuthService authService, IBookPage bookPage, IClientPage clientPage, ISettingsPage settingsPage) { this._logger = loggerFactory.CreateLogger <MainPage>(); this._clientPage = clientPage; this._bookPage = bookPage; this._settingsPage = settingsPage; this._menuVisualizer = menuVisualizer; this._outputEnvironment = outputEnvironment; this._authService = authService; }
private void FireSettingsPageSelectedEvent(TreeNode node) { if (SettingsPageSelected != null) { ISettingsPage page = node.Tag as ISettingsPage; if (page.GuiControl == null) { var firstSubNode = node.FirstNode; if (firstSubNode != null) { treeView1.SelectedNode = firstSubNode; return; } } SettingsPageSelected(this, new SettingsPageSelectedEventArgs { SettingsPage = page, IsTriggeredByGoto = _isSelectionChangeTriggeredByGoto }); } }
private void SortSettingsPages() { List <ISettingsPage> sorted = SettingsPages.OrderBy(x => x.SettingsFile.NameID).ThenByDescending(x => x.SettingsFile.FileInfo.Name).ToList(); int ptr = 0; while (ptr < sorted.Count) { if (!SettingsPages[ptr].Equals(sorted[ptr])) { ISettingsPage t = SettingsPages[ptr]; int ptr1 = ptr; Application.Current.Dispatcher?.Invoke(() => SettingsPages.Move(ptr1, sorted.IndexOf(t))); } else { ptr++; } } }
public void AddSettingsPage(ISettingsPage page, SettingsPageReference parentPageReference) { TreeNode node; if (parentPageReference == null) { node = treeView1.Nodes.Add(page.GetTitle()); } else { TreeNode parentNode; if (!_Pages2NodeMap.TryGetValue(parentPageReference, out parentNode)) { throw new ArgumentException("You have to add parent page first: " + parentPageReference); } node = parentNode.Nodes.Add(page.GetTitle()); } node.Tag = page; _Pages2NodeMap.Add(page.PageReference, node); _SettingsPages.Add(page); }
private void SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { ISettingsPage page = e.NewValue as ISettingsPage; ISettingsSection section = e.NewValue as ISettingsSection; if (page == null && section != null) { foreach (var settingsPage in Model.SettingPages) { if (settingsPage.Sections.Contains(section)) { page = settingsPage; break; } } } Model.CurrentPage = page; if (section != null) { Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action <ISettingsSection>(ScrollSectionIntoView), section); } }
private int GetOrder(ISettingsPage page) { var orderedPage = page as IOrderedSettingsPage; return orderedPage == null ? 10 : orderedPage.Order; }
public void UpdateSettings(List <SettingsFile> settingsFiles) { foreach (SettingsFile settingsFile in settingsFiles) { bool add = true; ISettingsPage existingPage = null; foreach (ISettingsPage setting in SettingsPages) { //Edge case for Settings without file if (settingsFile == null || setting.SettingsFile == null) { continue; } if (settingsFile.FileInfo.FullName.Equals(setting.SettingsFile.FileInfo.FullName)) { add = false; existingPage = setting; break; } } if (add) { switch (settingsFile.Type) { case SettingsFile.SettingsType.Vanilla: Application.Current.Dispatcher?.Invoke(() => SettingsPages.Add(new VanillaSettingsPage(this, settingsFile))); break; case SettingsFile.SettingsType.Bungee: if (EntityViewModel is NetworkViewModel) { Application.Current.Dispatcher?.Invoke(() => SettingsPages.Add(new ProxySettingsPage(this, settingsFile))); break; } goto default; default: Application.Current.Dispatcher?.Invoke(() => SettingsPages.Add(new DefaultSettingsPage(settingsFile))); break; } } bool remove = true; int removeIndex = 0; foreach (ISettingsPage setting in SettingsPages) { //Edge case for Settings without file if (setting.SettingsFile == null) { continue; } if (settingsFile.FileInfo.FullName.Equals(setting.SettingsFile.FileInfo.FullName)) { remove = false; removeIndex = SettingsPages.IndexOf(setting); } } if (remove) { Application.Current.Dispatcher?.Invoke(() => SettingsPages.RemoveAt(removeIndex)); } if (!add && !remove) { existingPage.SettingsFile.ReadText(); } } SortSettingsPages(); }
private int GetOrder(ISettingsPage page) { var orderedPage = page as IOrderedSettingsPage; return(orderedPage == null ? 10 : orderedPage.Order); }
public SettingsPageSelectedEventArgs(ISettingsPage settingsPage, bool isTriggeredByGoto) { SettingsPage = settingsPage; IsTriggeredByGoto = isTriggeredByGoto; }
public void FlyoutTo(Type type, object parameter = null) { if (type == null) { throw new ArgumentNullException(nameof(type)); } if (!this.IsFlyoutAllowed()) { this.Navigate(type, parameter); } else { var currentFlyoutControl = this.PeekFlyout(); if (currentFlyoutControl != null && currentFlyoutControl.Content.GetType() == type) { // if this flyout is currently opened, signal new parameter if (currentFlyoutControl.Content is ISettingsPage) { ((ISettingsPage)currentFlyoutControl.Content).OnNavigatedTo(parameter); } return; } SettingsSizeMode size = SettingsSizeMode.Small; object content = null; if (type == typeof(TaskPage)) { // only cache TaskPage because of side effects with other pages + // for memory usage (TaskPage is the only one used many times during the lifetime // of the app) if (!this.flyoutsCache.ContainsKey(type)) { this.flyoutsCache.Add(type, Activator.CreateInstance(type)); } content = this.flyoutsCache[type]; } else { content = Activator.CreateInstance(type); } if (content is Page) { Page page = (Page)content; if (page is ISettingsPage) { ISettingsPage settingsPage = (ISettingsPage)content; size = settingsPage.Size; settingsPage.OnNavigatedTo(parameter); } else { size = SettingsSizeMode.Small; } } var flyoutControl = new FlyoutControl { Content = content, Size = size, StaysOpen = true }; flyoutControl.Show(this.OnFlyoutClosed); this.flyouts.Push(flyoutControl); } }
void INavigationAware.OnNavigatedTo(NavigationContext navigationContext) { SettingPages.ForEach(page => page.Sections.ForEach(section => section.Load())); CurrentPage = SettingPages.FirstOrDefault(); }