protected override void OnClick(MouseEventArgs mouseEvent) { if (mouseEvent.Button == MouseButtons.Right) { var theme = ApplicationController.Instance.MenuTheme; var printTasks = PrintHistoryData.Instance.GetHistoryItems(1000); var popupMenu = new PopupMenu(theme); var printHistoryEditor = new PrintHistoryEditor(theme, printTask, printTasks); printHistoryEditor.AddQualityMenu(popupMenu, () => { printInfoWidget.Text = GetPrintInfo(); SetIndicatorColor(); }); printHistoryEditor.AddNotesMenu(popupMenu, printTasks, () => { printInfoWidget.Text = GetPrintInfo(); }); popupMenu.CreateSeparator(); AddExportMenu(popupMenu, printTasks); popupMenu.CreateSeparator(); AddClearHistorMenu(popupMenu, printTasks); popupMenu.ShowMenu(this, mouseEvent); } base.OnClick(mouseEvent); }
protected override void OnClick(MouseEventArgs mouseEvent) { if (mouseEvent.Button == MouseButtons.Right) { var theme = ApplicationController.Instance.MenuTheme; // show a right click menu ('Set as Default' & 'Help') var popupMenu = new PopupMenu(theme); var historyItems = PrintHistoryData.Instance.GetHistoryItems(1).Select(f => new PrintHistoryItem(f)).ToList <ILibraryItem>(); var exportPrintHistory = popupMenu.CreateMenuItem("Export History".Localize() + "..."); exportPrintHistory.Enabled = historyItems.Count > 0; exportPrintHistory.Click += (s, e) => { }; bool showFilter = false; if (showFilter) { popupMenu.CreateSubMenu("Filter".Localize(), theme, (subMenu) => { // foreach (var printer in AllPrinters) // { // var menuItem = subMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme.InvertIcons)); // menuItem.Click += (s, e) => // { // nodeOperation.Operation(selectedItem, scene).ConfigureAwait(false); // }; // } }); } popupMenu.CreateSeparator(); var clearPrintHistory = popupMenu.CreateMenuItem("Clear History".Localize()); clearPrintHistory.Enabled = historyItems.Count > 0; clearPrintHistory.Click += (s, e) => { // clear history StyledMessageBox.ShowMessageBox( (clearHistory) => { if (clearHistory) { PrintHistoryData.Instance.ClearHistory(); } }, "Are you sure you want to clear your print history?".Localize(), "Clear History?".Localize(), StyledMessageBox.MessageType.YES_NO, "Clear History".Localize()); }; ShowMenu(mouseEvent, popupMenu); } base.OnClick(mouseEvent); }
protected override void OnClick(MouseEventArgs mouseEvent) { if (mouseEvent.Button == MouseButtons.Right) { var theme = ApplicationController.Instance.MenuTheme; var printTasks = PrintHistoryData.Instance.GetHistoryItems(1000); var popupMenu = new PopupMenu(theme); var printHistoryEditor = new PrintHistoryEditor(null, theme, printTask, printTasks); var qualityWidget = PrintHistoryEditor.GetQualityWidget(theme, printTask, () => { popupMenu.Unfocus(); printInfoWidget.Text = GetPrintInfo(); SetIndicatorColor(); }, theme.DefaultFontSize); var menuItem = new PopupMenu.MenuItem(qualityWidget, theme) { HAnchor = HAnchor.Fit | HAnchor.Stretch, VAnchor = VAnchor.Fit, HoverColor = Color.Transparent, }; popupMenu.AddChild(menuItem); printHistoryEditor.AddNotesMenu(popupMenu, printTasks, () => { printInfoWidget.Text = GetPrintInfo(); }); popupMenu.CreateSeparator(); AddExportMenu(popupMenu, printTasks); popupMenu.CreateSeparator(); AddClearHistorMenu(popupMenu, printTasks); popupMenu.ShowMenu(this, mouseEvent); } base.OnClick(mouseEvent); }
public FlowLayoutWidget CreateMenuItems(PopupMenu popupMenu, IEnumerable <NamedAction> menuActions, bool emptyMenu = true) { // Retain past behavior, where menu is cleared each call. More recent callers many pass in a newly populated menu and // not require the clear if (emptyMenu) { popupMenu.CloseAllChildren(); } // Create menu items in the DropList for each element in this.menuActions foreach (var menuAction in menuActions) { if (menuAction is ActionSeparator) { popupMenu.CreateSeparator(); } else { PopupMenu.MenuItem menuItem; if (menuAction is NamedBoolAction boolAction) { menuItem = popupMenu.CreateBoolMenuItem(menuAction.Title, boolAction.GetIsActive, boolAction.SetIsActive); } else { menuItem = popupMenu.CreateMenuItem(menuAction.Title, menuAction.Icon, menuAction.Shortcut); } menuItem.Name = $"{menuAction.Title} Menu Item"; menuItem.Enabled = menuAction.Action != null && menuAction.IsEnabled?.Invoke() != false; menuItem.ClearRemovedFlag(); if (menuItem.Enabled) { menuItem.Click += (s, e) => { menuAction.Action(); }; } } } return(popupMenu); }
public static void AddTextWidgetRightClickMenu() { InternalTextEditWidget.DefaultRightClick += (s, e) => { var textEditWidget = s as InternalTextEditWidget; var theme = ApplicationController.Instance.MenuTheme; var popupMenu = new PopupMenu(theme); var cut = popupMenu.CreateMenuItem("Cut".Localize()); cut.Enabled = !string.IsNullOrEmpty(s.Selection); cut.Click += (s2, e2) => { textEditWidget?.CopySelection(); textEditWidget?.DeleteSelection(); }; var copy = popupMenu.CreateMenuItem("Copy".Localize()); copy.Enabled = !string.IsNullOrEmpty(s.Selection); copy.Click += (s2, e2) => { textEditWidget?.CopySelection(); }; var paste = popupMenu.CreateMenuItem("Paste".Localize()); paste.Enabled = Clipboard.Instance.ContainsText; paste.Click += (s2, e2) => { textEditWidget?.PasteFromClipboard(); }; popupMenu.CreateSeparator(); var selectAll = popupMenu.CreateMenuItem("Select All".Localize()); selectAll.Enabled = !string.IsNullOrEmpty(textEditWidget.Text); selectAll.Click += (s2, e2) => { textEditWidget?.SelectAll(); }; textEditWidget.KeepMenuOpen = true; popupMenu.Closed += (s3, e3) => { textEditWidget.KeepMenuOpen = false; }; popupMenu.ShowMenu(s, e); }; }
public static PopupMenu CreateSortingMenu(PopupMenu popupMenu, LibraryListView libraryView) { var siblingList = new List <GuiWidget>(); popupMenu.CreateBoolMenuItem( "Date Created".Localize(), () => libraryView.ActiveSort.HasFlag(SortKey.CreatedDate), (v) => libraryView.ActiveSort = SortKey.CreatedDate, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "Date Modified".Localize(), () => libraryView.ActiveSort.HasFlag(SortKey.ModifiedDate), (v) => libraryView.ActiveSort = SortKey.ModifiedDate, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "Name".Localize(), () => libraryView.ActiveSort.HasFlag(SortKey.Name), (v) => libraryView.ActiveSort = SortKey.Name, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateSeparator(); siblingList = new List <GuiWidget>(); popupMenu.CreateBoolMenuItem( "Ascending".Localize(), () => libraryView.Ascending, (v) => libraryView.Ascending = true, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "Descending".Localize(), () => !libraryView.Ascending, (v) => libraryView.Ascending = false, useRadioStyle: true, siblingRadioButtonList: siblingList); return(popupMenu); }
public FlowLayoutWidget CreateMenuItems(PopupMenu popupMenu, IEnumerable <NamedAction> menuActions) { // Create menu items in the DropList for each element in this.menuActions foreach (var menuAction in menuActions) { if (menuAction is ActionSeparator) { popupMenu.CreateSeparator(); } else { PopupMenu.MenuItem menuItem; if (menuAction is NamedBoolAction boolAction) { menuItem = popupMenu.CreateBoolMenuItem(menuAction.Title, boolAction.GetIsActive, boolAction.SetIsActive); } else { menuItem = popupMenu.CreateMenuItem(menuAction.Title, menuAction.Icon, menuAction.Shortcut); } menuItem.Name = $"{menuAction.Title} Menu Item"; menuItem.Enabled = menuAction.Action != null && menuAction.IsEnabled?.Invoke() != false; menuItem.ClearRemovedFlag(); if (menuItem.Enabled) { menuItem.Click += (s, e) => { menuAction.Action(); }; } } } return(popupMenu); }
private static PopupMenu CreatePopupMenu() { var menuTheme = ApplicationController.Instance.MenuTheme; var popupMenu = new PopupMenu(menuTheme) { MinimumSize = new Vector2(300, 0) }; var linkIcon = StaticData.Instance.LoadIcon("fa-link_16.png", 16, 16, menuTheme.InvertIcons); PopupMenu.MenuItem menuItem; menuItem = popupMenu.CreateMenuItem("Help".Localize(), StaticData.Instance.LoadIcon("help_page.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => ApplicationController.Instance.ShowApplicationHelp("Docs"); menuItem = popupMenu.CreateMenuItem("Interface Tour".Localize(), StaticData.Instance.LoadIcon("tour.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => { UiThread.RunOnIdle(() => { DialogWindow.Show <Tour.WelcomePage>(); }); }; if (Application.EnableNetworkTraffic) { popupMenu.CreateSeparator(); menuItem = popupMenu.CreateMenuItem("Check For Update".Localize(), StaticData.Instance.LoadIcon("update.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => UiThread.RunOnIdle(() => { UpdateControlData.Instance.CheckForUpdate(); DialogWindow.Show <CheckForUpdatesPage>(); }); } popupMenu.CreateSeparator(); menuItem = popupMenu.CreateMenuItem("Settings".Localize(), StaticData.Instance.LoadIcon("fa-cog_16.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => DialogWindow.Show <ApplicationSettingsPage>(); menuItem.Name = "Settings MenuItem"; popupMenu.CreateSeparator(); ImageBuffer indicatorIcon = null; if (IntPtr.Size == 8) { indicatorIcon = StaticData.Instance.LoadIcon("x64.png", 16, 16, menuTheme.InvertIcons); } popupMenu.CreateSubMenu("Community".Localize(), menuTheme, (modifyMenu) => { menuItem = modifyMenu.CreateMenuItem("Forums".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://forums.matterhackers.com/category/20/mattercontrol"); menuItem = modifyMenu.CreateMenuItem("Guides and Articles".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://www.matterhackers.com/topic/mattercontrol"); menuItem = modifyMenu.CreateMenuItem("Support".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://www.matterhackers.com/mattercontrol/support"); menuItem = modifyMenu.CreateMenuItem("Release Notes".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://www.matterhackers.com/mattercontrol/support/release-notes"); modifyMenu.CreateSeparator(); menuItem = modifyMenu.CreateMenuItem("Report a Bug".Localize(), StaticData.Instance.LoadIcon("feedback.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://github.com/MatterHackers/MatterControl/issues"); }, StaticData.Instance.LoadIcon("feedback.png", 16, 16, menuTheme.InvertIcons)); popupMenu.CreateSeparator(); var imageBuffer = new ImageBuffer(18, 18); // x64 indicator icon if (IntPtr.Size == 8) { var graphics = imageBuffer.NewGraphics2D(); graphics.Clear(menuTheme.BackgroundColor); graphics.Rectangle(imageBuffer.GetBoundingRect(), menuTheme.PrimaryAccentColor); graphics.DrawString("64", imageBuffer.Width / 2, imageBuffer.Height / 2, 8, Agg.Font.Justification.Center, Agg.Font.Baseline.BoundsCenter, color: menuTheme.PrimaryAccentColor); } menuItem = popupMenu.CreateMenuItem("About".Localize() + " MatterControl", imageBuffer); menuItem.Click += (s, e) => ApplicationController.Instance.ShowAboutPage(); return(popupMenu); }
private GuiWidget CreateVisibilityOptions(ThemeConfig theme) { var visibilityOptionsButton = new PopupMenuButton("Visibility Options", theme) { VAnchor = VAnchor.Center }; var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); visibilityOptionsButton.PopupContent = popupMenu; // put in options for filtering various output popupMenu.CreateBoolMenuItem( "Line Checksums".Localize(), () => UserSettings.Instance.Fields.GetBool(UserSettingsKey.TerminalShowChecksum, true), (isChecked) => { UserSettings.Instance.Fields.SetBool(UserSettingsKey.TerminalShowChecksum, isChecked); textScrollWidget.RebuildFilteredList(); }); popupMenu.CreateBoolMenuItem( "In / Out Indicators".Localize(), () => UserSettings.Instance.Fields.GetBool(UserSettingsKey.TerminalShowInputOutputMarks, true), (isChecked) => { UserSettings.Instance.Fields.SetBool(UserSettingsKey.TerminalShowInputOutputMarks, isChecked); textScrollWidget.RebuildFilteredList(); }); // request section popupMenu.CreateSeparator(); popupMenu.CreateBoolMenuItem( "Temperature Requests".Localize(), () => UserSettings.Instance.Fields.GetBool(UserSettingsKey.TerminalShowTempRequests, true), (isChecked) => { UserSettings.Instance.Fields.SetBool(UserSettingsKey.TerminalShowTempRequests, isChecked); textScrollWidget.RebuildFilteredList(); }); popupMenu.CreateBoolMenuItem( "Movement Requests".Localize(), () => UserSettings.Instance.Fields.GetBool(UserSettingsKey.TerminalShowMovementRequests, true), (isChecked) => { UserSettings.Instance.Fields.SetBool(UserSettingsKey.TerminalShowMovementRequests, isChecked); textScrollWidget.RebuildFilteredList(); }); // response section popupMenu.CreateSeparator(); popupMenu.CreateBoolMenuItem( "Temperature Responses".Localize(), () => UserSettings.Instance.Fields.GetBool(UserSettingsKey.TerminalShowTempResponse, true), (isChecked) => { UserSettings.Instance.Fields.SetBool(UserSettingsKey.TerminalShowTempResponse, isChecked); textScrollWidget.RebuildFilteredList(); }); popupMenu.CreateBoolMenuItem( "'Ok' Responses".Localize(), () => UserSettings.Instance.Fields.GetBool(UserSettingsKey.TerminalShowOks, true), (isChecked) => { UserSettings.Instance.Fields.SetBool(UserSettingsKey.TerminalShowOks, isChecked); textScrollWidget.RebuildFilteredList(); }); popupMenu.CreateBoolMenuItem( "'Wait' Responses".Localize(), () => UserSettings.Instance.Fields.GetBool(UserSettingsKey.TerminalShowWaitResponse, false), (isChecked) => { UserSettings.Instance.Fields.SetBool(UserSettingsKey.TerminalShowWaitResponse, isChecked); textScrollWidget.RebuildFilteredList(); }); return(visibilityOptionsButton); }
public static GuiWidget CreateViewOptionsMenuButton(ThemeConfig theme, LibraryListView libraryView, Action <bool> showContainers, Func <bool> containersShown) { var viewMenuButton = new PopupMenuButton( new ImageWidget(StaticData.Instance.LoadIcon("mi-view-list_10.png", 32, 32, theme.InvertIcons)) { // VAnchor = VAnchor.Center }, theme) { AlignToRightEdge = true, ToolTipText = "View Settings".Localize() }; viewMenuButton.DynamicPopupContent = () => { var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); var listView = libraryView; var siblingList = new List <GuiWidget>(); popupMenu.CreateBoolMenuItem( "Show Folders".Localize(), () => containersShown(), (isChecked) => { showContainers(isChecked); listView.Reload().ConfigureAwait(false); }); popupMenu.CreateSeparator(); popupMenu.CreateBoolMenuItem( "View List".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.RowListView, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.RowListView; listView.ListContentView = new RowListView(theme); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); #if DEBUG popupMenu.CreateBoolMenuItem( "View XSmall Icons".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.IconListView18, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.IconListView18; listView.ListContentView = new IconListView(theme, 18); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "View Small Icons".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.IconListView70, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.IconListView70; listView.ListContentView = new IconListView(theme, 70); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); #endif popupMenu.CreateBoolMenuItem( "View Icons".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.IconListView, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.IconListView; listView.ListContentView = new IconListView(theme); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "View Large Icons".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.IconListView256, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.IconListView256; listView.ListContentView = new IconListView(theme, 256); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); return(popupMenu); }; return(viewMenuButton); }
public FlowLayoutWidget CreateMenuItems(PopupMenu popupMenu, IEnumerable <NamedAction> menuActions) { // Create menu items in the DropList for each element in this.menuActions foreach (var menuAction in menuActions) { if (menuAction is ActionSeparator) { popupMenu.CreateSeparator(); } else { if (menuAction is NamedActionGroup namedActionButtons) { var content = new FlowLayoutWidget() { HAnchor = HAnchor.Fit | HAnchor.Stretch }; var textWidget = new TextWidget(menuAction.Title, pointSize: this.DefaultFontSize, textColor: this.TextColor) { // Padding = MenuPadding, VAnchor = VAnchor.Center }; content.AddChild(textWidget); content.AddChild(new HorizontalSpacer()); foreach (var actionButton in namedActionButtons.Group) { var button = new TextButton(actionButton.Title, this) { Border = new BorderDouble(1, 0, 0, 0), BorderColor = this.MinimalShade, HoverColor = this.AccentMimimalOverlay, Enabled = actionButton.IsEnabled() }; content.AddChild(button); if (actionButton.IsEnabled()) { button.Click += (s, e) => { actionButton.Action(); popupMenu.Unfocus(); }; } } var menuItem = new PopupMenu.MenuItem(content, this) { HAnchor = HAnchor.Fit | HAnchor.Stretch, VAnchor = VAnchor.Fit, HoverColor = Color.Transparent, }; popupMenu.AddChild(menuItem); menuItem.Padding = new BorderDouble(menuItem.Padding.Left, menuItem.Padding.Bottom, 0, menuItem.Padding.Top); } else { PopupMenu.MenuItem menuItem; if (menuAction is NamedBoolAction boolAction) { menuItem = popupMenu.CreateBoolMenuItem(menuAction.Title, boolAction.GetIsActive, boolAction.SetIsActive); } else { menuItem = popupMenu.CreateMenuItem(menuAction.Title, menuAction.Icon, menuAction.Shortcut); } menuItem.Name = $"{menuAction.Title} Menu Item"; menuItem.Enabled = menuAction is NamedActionGroup || (menuAction.Action != null && menuAction.IsEnabled?.Invoke() != false); menuItem.ClearRemovedFlag(); if (menuItem.Enabled) { menuItem.Click += (s, e) => { menuAction.Action(); }; } } } } return(popupMenu); }
public LibraryWidget(MainViewWidget mainViewWidget, ThemeConfig theme) { this.theme = theme; this.mainViewWidget = mainViewWidget; this.Padding = 0; this.AnchorAll(); var allControls = new FlowLayoutWidget(FlowDirection.TopToBottom); libraryContext = ApplicationController.Instance.LibraryTabContext; libraryView = new LibraryListView(libraryContext, theme) { Name = "LibraryView", // Drop containers if ShowContainers != 1 ContainerFilter = (container) => UserSettings.Instance.ShowContainers, BackgroundColor = theme.BackgroundColor, Border = new BorderDouble(top: 1), DoubleClickAction = LibraryListView.DoubleClickActions.PreviewItem }; navBar = new OverflowBar(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, }; allControls.AddChild(navBar); theme.ApplyBottomBorder(navBar); breadCrumbWidget = new FolderBreadCrumbWidget(libraryContext, theme); navBar.AddChild(breadCrumbWidget); var searchPanel = new SearchInputBox(theme) { Visible = false, Margin = new BorderDouble(10, 0, 5, 0), }; searchPanel.searchInput.ActualTextEditWidget.EnterPressed += (s, e) => { this.PerformSearch(); }; searchPanel.ResetButton.Click += (s, e) => { breadCrumbWidget.Visible = true; searchPanel.Visible = false; searchPanel.searchInput.Text = ""; this.ClearSearch(); }; // Store a reference to the input field this.searchInput = searchPanel.searchInput; navBar.AddChild(searchPanel); searchButton = theme.CreateSearchButton(); searchButton.Enabled = false; searchButton.Name = "Search Library Button"; searchButton.Click += (s, e) => { if (searchPanel.Visible) { PerformSearch(); } else { searchContainer = libraryContext.ActiveContainer; breadCrumbWidget.Visible = false; searchPanel.Visible = true; searchInput.Focus(); } }; navBar.AddChild(searchButton); PopupMenuButton viewOptionsButton; navBar.AddChild( viewOptionsButton = new PopupMenuButton( new ImageWidget(AggContext.StaticData.LoadIcon("fa-sort_16.png", 32, 32, theme.InvertIcons)) { //VAnchor = VAnchor.Center }, theme) { AlignToRightEdge = true, Name = "Print Library View Options" }); viewOptionsButton.DynamicPopupContent = () => { var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); var siblingList = new List <GuiWidget>(); popupMenu.CreateBoolMenuItem( "Date Created".Localize(), () => libraryView.ActiveSort.HasFlag(SortKey.CreatedDate), (v) => libraryView.ActiveSort = SortKey.CreatedDate, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "Date Modified".Localize(), () => libraryView.ActiveSort.HasFlag(SortKey.ModifiedDate), (v) => libraryView.ActiveSort = SortKey.ModifiedDate, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "Name".Localize(), () => libraryView.ActiveSort.HasFlag(SortKey.Name), (v) => libraryView.ActiveSort = SortKey.Name, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateSeparator(); siblingList = new List <GuiWidget>(); popupMenu.CreateBoolMenuItem( "Ascending".Localize(), () => libraryView.Ascending, (v) => libraryView.Ascending = true, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "Descending".Localize(), () => !libraryView.Ascending, (v) => libraryView.Ascending = false, useRadioStyle: true, siblingRadioButtonList: siblingList); return(popupMenu); }; PopupMenuButton viewMenuButton; navBar.AddChild( viewMenuButton = new PopupMenuButton( new ImageWidget(AggContext.StaticData.LoadIcon("mi-view-list_10.png", 32, 32, theme.InvertIcons)) { //VAnchor = VAnchor.Center }, theme) { AlignToRightEdge = true }); viewMenuButton.DynamicPopupContent = () => { var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); var listView = this.libraryView; var siblingList = new List <GuiWidget>(); popupMenu.CreateBoolMenuItem( "View List".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.RowListView, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.RowListView; listView.ListContentView = new RowListView(theme); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); #if DEBUG popupMenu.CreateBoolMenuItem( "View XSmall Icons".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.IconListView18, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.IconListView18; listView.ListContentView = new IconListView(theme, 18); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "View Small Icons".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.IconListView70, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.IconListView70; listView.ListContentView = new IconListView(theme, 70); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); #endif popupMenu.CreateBoolMenuItem( "View Icons".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.IconListView, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.IconListView; listView.ListContentView = new IconListView(theme); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); popupMenu.CreateBoolMenuItem( "View Large Icons".Localize(), () => ApplicationController.Instance.ViewState.LibraryViewMode == ListViewModes.IconListView256, (isChecked) => { ApplicationController.Instance.ViewState.LibraryViewMode = ListViewModes.IconListView256; listView.ListContentView = new IconListView(theme, 256); listView.Reload().ConfigureAwait(false); }, useRadioStyle: true, siblingRadioButtonList: siblingList); return(popupMenu); }; var horizontalSplitter = new Splitter() { SplitterDistance = UserSettings.Instance.LibraryViewWidth, SplitterSize = theme.SplitterWidth, SplitterBackground = theme.SplitterBackground }; horizontalSplitter.AnchorAll(); horizontalSplitter.DistanceChanged += (s, e) => { UserSettings.Instance.LibraryViewWidth = horizontalSplitter.SplitterDistance; }; allControls.AddChild(horizontalSplitter); libraryTreeView = new TreeView(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Margin = 5 }; libraryTreeView.AfterSelect += async(s, e) => { if (libraryTreeView.SelectedNode is ContainerTreeNode treeNode) { if (!treeNode.ContainerAcquired) { await this.EnsureExpanded(treeNode.Tag as ILibraryItem, treeNode); } if (treeNode.ContainerAcquired) { libraryContext.ActiveContainer = treeNode.Container; } } }; horizontalSplitter.Panel1.AddChild(libraryTreeView); var rootColumn = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Fit, VAnchor = VAnchor.Fit, Margin = new BorderDouble(left: 10) }; libraryTreeView.AddChild(rootColumn); if (AppContext.IsLoading) { ApplicationController.StartupActions.Add(new ApplicationController.StartupAction() { Title = "Initializing Library".Localize(), Priority = 0, Action = () => { this.LoadRootLibraryNodes(rootColumn); } }); } else { this.LoadRootLibraryNodes(rootColumn); } horizontalSplitter.Panel2.AddChild(libraryView); buttonPanel = new FlowLayoutWidget() { HAnchor = HAnchor.Stretch, Padding = theme.ToolbarPadding, }; AddLibraryButtonElements(); allControls.AddChild(buttonPanel); allControls.AnchorAll(); this.AddChild(allControls); // Register listeners libraryView.SelectedItems.CollectionChanged += SelectedItems_CollectionChanged; libraryContext.ContainerChanged += Library_ContainerChanged; }
public HardwareTabPage(ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.theme = theme; this.Padding = 0; this.HAnchor = HAnchor.Stretch; this.VAnchor = VAnchor.Stretch; var toolbar = new Toolbar(theme.TabbarPadding, theme.CreateSmallResetButton()) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Padding = theme.ToolbarPadding }; theme.ApplyBottomBorder(toolbar); toolbar.AddChild(new TextButton("Inventory".Localize(), theme) { Padding = new BorderDouble(6, 0), MinimumSize = new Vector2(0, theme.ButtonHeight), Selectable = false }); this.AddChild(toolbar); var horizontalSplitter = new Splitter() { SplitterDistance = UserSettings.Instance.LibraryViewWidth, SplitterSize = theme.SplitterWidth, SplitterBackground = theme.SplitterBackground, HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }; horizontalSplitter.DistanceChanged += (s, e) => { UserSettings.Instance.LibraryViewWidth = horizontalSplitter.SplitterDistance; }; this.AddChild(horizontalSplitter); var treeView = new HardwareTreeView(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Width = 300, Margin = 5 }; treeView.NodeMouseDoubleClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Left && mouseEvent.Clicks == 2) { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { ApplicationController.Instance.OpenPrinter(printerInfo); } } }; treeView.NodeMouseClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Right) { UiThread.RunOnIdle(() => { var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); var openMenuItem = popupMenu.CreateMenuItem("Open".Localize()); openMenuItem.Click += (s2, e2) => { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { ApplicationController.Instance.OpenPrinter(printerInfo); } }; popupMenu.CreateSeparator(); var deleteMenuItem = popupMenu.CreateMenuItem("Delete".Localize()); deleteMenuItem.Click += (s2, e2) => { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { // Delete printer StyledMessageBox.ShowMessageBox( (deletePrinter) => { if (deletePrinter) { ProfileManager.Instance.DeletePrinter(printerInfo.ID); } }, "Are you sure you want to delete printer '{0}'?".Localize().FormatWith(printerInfo.Name), "Delete Printer?".Localize(), StyledMessageBox.MessageType.YES_NO, "Delete Printer".Localize()); } }; popupMenu.ShowMenu(clickedWidget, mouseEvent); }); } }; treeView.ScrollArea.HAnchor = HAnchor.Stretch; treeView.AfterSelect += (s, e) => { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { horizontalSplitter.Panel2.CloseChildren(); horizontalSplitter.Panel2.AddChild(new PrinterDetails(printerInfo, theme, true) { HAnchor = HAnchor.MaxFitOrStretch, VAnchor = VAnchor.Stretch, Padding = theme.DefaultContainerPadding }); } }; horizontalSplitter.Panel1.AddChild(treeView); horizontalSplitter.Panel2.AddChild(new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }); }
public HardwareTabPage(ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.theme = theme; this.Padding = 0; this.HAnchor = HAnchor.Stretch; this.VAnchor = VAnchor.Stretch; var toolbar = new Toolbar(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Padding = theme.ToolbarPadding }; theme.ApplyBottomBorder(toolbar); toolbar.AddChild(new TextButton("Inventory".Localize(), theme) { Padding = new BorderDouble(6, 0), MinimumSize = new Vector2(0, theme.ButtonHeight), Selectable = false }); this.AddChild(toolbar); var horizontalSplitter = new Splitter() { SplitterDistance = UserSettings.Instance.LibraryViewWidth, SplitterSize = theme.SplitterWidth, SplitterBackground = theme.SplitterBackground, HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }; horizontalSplitter.DistanceChanged += (s, e) => { UserSettings.Instance.LibraryViewWidth = horizontalSplitter.SplitterDistance; }; this.AddChild(horizontalSplitter); var treeView = new HardwareTreeView(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Width = 300, Margin = 5 }; treeView.NodeMouseDoubleClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Left && mouseEvent.Clicks == 2) { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { if (ApplicationController.Instance.ActivePrinters.FirstOrDefault(p => p.Settings.ID == printerInfo.ID) is PrinterConfig printer && ApplicationController.Instance.MainView.TabControl.AllTabs.FirstOrDefault(t => t.TabContent is PrinterTabPage printerTabPage && printerTabPage.printer == printer) is ITab tab) { // Switch to existing printer tab ApplicationController.Instance.MainView.TabControl.ActiveTab = tab; } else { // Open new printer tab ApplicationController.Instance.OpenPrinter(printerInfo.ID).ConfigureAwait(false); } } } }; treeView.NodeMouseClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Right) { UiThread.RunOnIdle(() => { var menu = new PopupMenu(ApplicationController.Instance.MenuTheme); var openMenuItem = menu.CreateMenuItem("Open".Localize()); openMenuItem.Click += (s2, e2) => { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { // Open printer ApplicationController.Instance.OpenPrinter(printerInfo.ID).ConfigureAwait(false); } }; menu.CreateSeparator(); var deleteMenuItem = menu.CreateMenuItem("Delete".Localize()); deleteMenuItem.Click += (s2, e2) => { // Delete printer StyledMessageBox.ShowMessageBox( (deletePrinter) => { if (deletePrinter) { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { ProfileManager.Instance.DeletePrinter(printerInfo.ID); } } }, "Are you sure you want to delete your currently selected printer?".Localize(), "Delete Printer?".Localize(), StyledMessageBox.MessageType.YES_NO, "Delete Printer".Localize()); }; var systemWindow = this.Parents <SystemWindow>().FirstOrDefault(); systemWindow.ShowPopup( new MatePoint(clickedWidget) { Mate = new MateOptions(MateEdge.Left, MateEdge.Top), AltMate = new MateOptions(MateEdge.Left, MateEdge.Top) }, new MatePoint(menu) { Mate = new MateOptions(MateEdge.Left, MateEdge.Top), AltMate = new MateOptions(MateEdge.Right, MateEdge.Top) }, altBounds: new RectangleDouble(mouseEvent.X + 1, mouseEvent.Y + 1, mouseEvent.X + 1, mouseEvent.Y + 1)); }); } }; treeView.ScrollArea.HAnchor = HAnchor.Stretch; treeView.AfterSelect += async(s, e) => { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { horizontalSplitter.Panel2.CloseAllChildren(); horizontalSplitter.Panel2.AddChild(new PrinterDetails(printerInfo, theme) { HAnchor = HAnchor.MaxFitOrStretch, VAnchor = VAnchor.Stretch, Padding = theme.DefaultContainerPadding }); } }; horizontalSplitter.Panel1.AddChild(treeView); horizontalSplitter.Panel2.AddChild(new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }); }