Skip to content

Commit

Permalink
Merge #3980 Show tag-hiding menu on clicking hidden tag
Browse files Browse the repository at this point in the history
  • Loading branch information
HebaruSan committed Dec 24, 2023
2 parents 7ff3486 + 3f46250 commit 71ee319
Show file tree
Hide file tree
Showing 7 changed files with 75 additions and 26 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file.

- [CLI] Pause after administrator error message (#3966 by: HebaruSan; reviewed: techman83)
- [Multiple] Put auto-installed mods in ignored modpack group by default (#3978 by: HebaruSan)
- [GUI] Add links to hidden tags and labels below mod list (#3979 by: HebaruSan)
- [GUI] Add links to hidden tags and labels below mod list (#3979, #3980 by: HebaruSan)

### Bugfixes

Expand Down
4 changes: 3 additions & 1 deletion GUI/Controls/ManageMods.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

41 changes: 34 additions & 7 deletions GUI/Controls/ManageMods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -594,9 +594,24 @@ private void ModGrid_HeaderMouseClick(object sender, DataGridViewCellMouseEventA
// Right click -> Bring up context menu to change visibility of columns.
else if (e.Button == MouseButtons.Right)
{
// Start from scrap: clear the entire item list, then add all options again.
ModListHeaderContextMenuStrip.Items.Clear();
ShowHeaderContextMenu();
}
}

private void ShowHeaderContextMenu(bool columns = true,
bool tags = true)
{
if (!columns && !tags)
{
// Don't show a blank menu
return;
}

// Start from scratch: clear the entire item list, then add all options again
ModListHeaderContextMenuStrip.Items.Clear();

if (columns)
{
// Add columns
ModListHeaderContextMenuStrip.Items.AddRange(
ModGrid.Columns.Cast<DataGridViewColumn>()
Expand All @@ -610,10 +625,16 @@ private void ModGrid_HeaderMouseClick(object sender, DataGridViewCellMouseEventA
})
.ToArray()
);
}

if (columns && tags)
{
// Separator
ModListHeaderContextMenuStrip.Items.Add(new ToolStripSeparator());
}

if (tags)
{
// Add tags
var registry = RegistryManager.Instance(Main.Instance.CurrentInstance, repoData).registry;
ModListHeaderContextMenuStrip.Items.AddRange(
Expand All @@ -627,10 +648,10 @@ private void ModGrid_HeaderMouseClick(object sender, DataGridViewCellMouseEventA
})
.ToArray()
);

// Show the context menu on cursor position.
ModListHeaderContextMenuStrip.Show(Cursor.Position);
}

// Show the context menu on cursor position.
ModListHeaderContextMenuStrip.Show(Cursor.Position);
}

/// <summary>
Expand Down Expand Up @@ -1595,9 +1616,15 @@ private void UpdateHiddenTagsAndLabels()
});
}

private void hiddenTagsLabelsLinkList_OnChangeFilter(SavedSearch search, bool merge)
private void hiddenTagsLabelsLinkList_TagClicked(ModuleTag tag, bool merge)
{
ShowHeaderContextMenu(columns: false);
}

private void hiddenTagsLabelsLinkList_LabelClicked(ModuleLabel label, bool merge)
{
Filter(search, merge);
Filter(ModList.FilterToSavedSearch(GUIModFilter.CustomLabel, null, label),
merge);
}

#endregion
Expand Down
1 change: 1 addition & 0 deletions GUI/Controls/ManageMods.resx
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@
<data name="FilterLabelsToolButton.Text" xml:space="preserve"><value>Labels</value></data>
<data name="NavBackwardToolButton.ToolTipText" xml:space="preserve"><value>Previous selected mod...</value></data>
<data name="NavForwardToolButton.ToolTipText" xml:space="preserve"><value>Next selected mod...</value></data>
<data name="hiddenTagsLabelsLinkList.TagToolTipText" xml:space="preserve"><value>Click to show or hide tags</value></data>
<data name="Installed.HeaderText" xml:space="preserve"><value>Installed</value></data>
<data name="AutoInstalled.HeaderText" xml:space="preserve"><value>Auto-installed</value></data>
<data name="UpdateCol.HeaderText" xml:space="preserve"><value>Update</value></data>
Expand Down
3 changes: 2 additions & 1 deletion GUI/Controls/ModInfo.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 10 additions & 4 deletions GUI/Controls/ModInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -159,10 +159,16 @@ private void UpdateTagsAndLabels(CkanModule mod)
});
}

private void tagsLabelsLinkList_OnChangeFilter(SavedSearch search, bool merge)
{
OnChangeFilter?.Invoke(search, merge);
}

private void tagsLabelsLinkList_TagClicked(ModuleTag tag, bool merge)
=> OnChangeFilter?.Invoke(ModList.FilterToSavedSearch(GUIModFilter.Tag,
tag, null),
merge);

private void tagsLabelsLinkList_LabelClicked(ModuleLabel label, bool merge)
=> OnChangeFilter?.Invoke(ModList.FilterToSavedSearch(GUIModFilter.CustomLabel,
null, label),
merge);

private void Metadata_OnChangeFilter(SavedSearch search, bool merge)
{
Expand Down
36 changes: 24 additions & 12 deletions GUI/Controls/TagsLabelsLinkList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public void UpdateTagsAndLabels(IEnumerable<ModuleTag> tags,
foreach (ModuleTag tag in tags)
{
Controls.Add(TagLabelLink(
tag.Name, tag,
tag.Name, tag, tagToolTip,
new LinkLabelLinkClickedEventHandler(TagLinkLabel_LinkClicked)));
}
}
Expand All @@ -39,15 +39,32 @@ public void UpdateTagsAndLabels(IEnumerable<ModuleTag> tags,
foreach (ModuleLabel mlbl in labels)
{
Controls.Add(TagLabelLink(
mlbl.Name, mlbl,
mlbl.Name, mlbl, Properties.Resources.FilterLinkToolTip,
new LinkLabelLinkClickedEventHandler(LabelLinkLabel_LinkClicked)));
}
}
ResumeLayout();
});
}

public event Action<SavedSearch, bool> OnChangeFilter;
public string TagToolTipText
{
get => tagToolTip;
set
{
tagToolTip = value;
foreach (var lbl in Controls.OfType<LinkLabel>()
.Where(lbl => lbl.Tag is ModuleTag))
{
ToolTip.SetToolTip(lbl, tagToolTip);
}
}
}

public event Action<ModuleTag, bool> TagClicked;
public event Action<ModuleLabel, bool> LabelClicked;

private string tagToolTip = Properties.Resources.FilterLinkToolTip;

private static int LinkLabelBottom(LinkLabel lbl)
=> lbl == null ? 0
Expand All @@ -59,6 +76,7 @@ public int TagsHeight

private LinkLabel TagLabelLink(string name,
object tag,
string toolTip,
LinkLabelLinkClickedEventHandler onClick)
{
var link = new LinkLabel()
Expand All @@ -71,28 +89,22 @@ private LinkLabel TagLabelLink(string name,
Tag = tag,
};
link.LinkClicked += onClick;
ToolTip.SetToolTip(link, Properties.Resources.FilterLinkToolTip);
ToolTip.SetToolTip(link, toolTip);
return link;
}

private void TagLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
var link = sender as LinkLabel;
var merge = ModifierKeys.HasAnyFlag(Keys.Control, Keys.Shift);
OnChangeFilter?.Invoke(
ModList.FilterToSavedSearch(GUIModFilter.Tag,
link.Tag as ModuleTag, null),
merge);
TagClicked?.Invoke(link.Tag as ModuleTag, merge);
}

private void LabelLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
var link = sender as LinkLabel;
var merge = ModifierKeys.HasAnyFlag(Keys.Control, Keys.Shift);
OnChangeFilter?.Invoke(
ModList.FilterToSavedSearch(GUIModFilter.CustomLabel, null,
link.Tag as ModuleLabel),
merge);
LabelClicked?.Invoke(link.Tag as ModuleLabel, merge);
}

private readonly ToolTip ToolTip = new ToolTip()
Expand Down

0 comments on commit 71ee319

Please sign in to comment.