Skip to content
This repository was archived by the owner on Oct 4, 2021. It is now read-only.

Commit 8c635f2

Browse files
committed
[NuGet] Simplify logic for license files
It is not possible to have more than one license file defined for a NuGet package and it is not possible to use one in an expression. This means the markup builder does not need to handle this and simplifies the logic here.
1 parent 5d6cc72 commit 8c635f2

File tree

5 files changed

+13
-63
lines changed

5 files changed

+13
-63
lines changed

main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/LicenseAcceptanceDialog.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ static void AddLicenseWarningLabel (WarningText warning, VBox parentVBox)
196196
static void AddFileLicenseLinkLabel (LicenseFileText licenseFileText, VBox parentVBox)
197197
{
198198
var licenseLabel = new LinkLabel (GettextCatalog.GetString ("View License"));
199-
licenseLabel.Uri = licenseFileText.CreateLicenseFileUri (1);
199+
licenseLabel.Uri = licenseFileText.CreateLicenseFileUri ();
200200
licenseLabel.Tag = licenseFileText;
201201
licenseLabel.NavigateToUrl += (sender, e) => ShowFileDialog ((LinkLabel)sender);
202202
parentVBox.PackStart (licenseLabel);

main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/LicenseFileDialog.cs

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
using System;
2828
using System.Collections.Generic;
29-
using System.ComponentModel;
29+
using System.ComponentModel;
3030
using NuGet.PackageManagement.UI;
3131
using Xwt;
3232
using Xwt.Formats;
@@ -79,42 +79,5 @@ protected override void Dispose (bool disposing)
7979
licenseFileText.PropertyChanged -= LicenseFileTextPropertyChanged;
8080
}
8181
}
82-
83-
public static bool ShowDialog (Uri uri, IReadOnlyList<IText> licenseLinks, Dialog parent)
84-
{
85-
if (!uri.IsFile)
86-
return false;
87-
88-
if (uri.Fragment?.Length > 0) {
89-
if (int.TryParse (uri.Fragment.Substring (1), out int fileNumber)) {
90-
ShowLicenseFile (fileNumber, licenseLinks, parent);
91-
return true;
92-
}
93-
}
94-
return false;
95-
}
96-
97-
static void ShowLicenseFile (int fileNumber, IReadOnlyList<IText> licenseLinks, Dialog parent)
98-
{
99-
LicenseFileText licenseFileText = GetLicenseFile (fileNumber, licenseLinks);
100-
if (licenseFileText != null) {
101-
var dialog = new LicenseFileDialog (licenseFileText);
102-
dialog.Run (parent);
103-
}
104-
}
105-
106-
static LicenseFileText GetLicenseFile (int fileNumber, IReadOnlyList<IText> licenseLinks)
107-
{
108-
int currentFileNumber = 0;
109-
foreach (IText text in licenseLinks) {
110-
if (text is LicenseFileText licenseFileText) {
111-
currentFileNumber++;
112-
if (currentFileNumber == fileNumber) {
113-
return licenseFileText;
114-
}
115-
}
116-
}
117-
return null;
118-
}
11982
}
12083
}

main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/LicenseFileTextExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ namespace MonoDevelop.PackageManagement
3131
{
3232
static class LicenseFileTextExtensions
3333
{
34-
public static Uri CreateLicenseFileUri (this LicenseFileText licenseFileText, int licenseCount)
34+
public static Uri CreateLicenseFileUri (this LicenseFileText licenseFileText)
3535
{
36-
return new Uri ($"file:///{licenseFileText.Text}#{licenseCount}");
36+
return new Uri ($"file:///{licenseFileText.Text}");
3737
}
3838
}
3939
}

main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/LicenseLinkMarkupBuilder.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,12 @@ public string GetMarkup (IReadOnlyList<IText> textLinks)
4141
{
4242
var markupBuilder = StringBuilderCache.Allocate ();
4343

44-
int fileLicenseCount = 0; // Should be one but handle multiple.
4544
foreach (IText textLink in textLinks) {
4645
if (textLink is LicenseText licenseText) {
4746
markupBuilder.Append (GetUriMarkup (licenseText.Link, licenseText.Text));
4847
} else if (textLink is LicenseFileText licenseFileText) {
49-
fileLicenseCount++;
50-
markupBuilder.Append (GetUriMarkup (licenseFileText.CreateLicenseFileUri (fileLicenseCount), licenseFileText.Text));
48+
// Should not happen. Building an expression should not contain a license file.
49+
LoggingService.LogError ("Unexpected LicenseFileText when building markup {0}", licenseFileText.Text);
5150
} else if (textLink is WarningText warning) {
5251
warnings ??= new List<WarningText> ();
5352
warnings.Add (warning);

main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/ManagePackagesDialog.cs

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ public ManagePackagesDialog (
9999

100100
closeButton.Clicked += CloseButtonClicked;
101101
packageLicenseLink.NavigateToUrl += PackageLicenseNavigateToUrl;
102-
packageLicenseMetadataLabel.LinkClicked += PackageLicenseLinkClicked;
103102
this.showPrereleaseCheckBox.Clicked += ShowPrereleaseCheckBoxClicked;
104103
this.packageSourceComboBox.SelectionChanged += PackageSourceChanged;
105104
this.addPackagesButton.Clicked += AddPackagesButtonClicked;
@@ -119,7 +118,6 @@ protected override void Dispose (bool disposing)
119118
{
120119
closeButton.Clicked -= CloseButtonClicked;
121120
packageLicenseLink.NavigateToUrl -= PackageLicenseNavigateToUrl;
122-
packageLicenseMetadataLabel.LinkClicked -= PackageLicenseLinkClicked;
123121
currentPackageVersionLabel.BoundsChanged -= PackageVersionLabelBoundsChanged;
124122

125123
imageLoader.Loaded -= ImageLoaded;
@@ -1170,6 +1168,7 @@ void ProjectCheckBoxCellViewToggled (object sender, WidgetEventArgs e)
11701168

11711169
void ShowLicense (ManagePackagesSearchResultViewModel packageViewModel)
11721170
{
1171+
packageLicenseLink.Tag = null;
11731172
if (packageViewModel.HasLicenseMetadata) {
11741173
ShowLicenseMetadata (packageViewModel);
11751174
} else {
@@ -1181,26 +1180,14 @@ void ShowLicense (ManagePackagesSearchResultViewModel packageViewModel)
11811180

11821181
void PackageLicenseNavigateToUrl (object sender, NavigateToUrlEventArgs e)
11831182
{
1184-
if (ShowLicenseFile (e.Uri)) {
1183+
var licenseFileText = packageLicenseLink.Tag as LicenseFileText;
1184+
if (licenseFileText != null) {
11851185
e.SetHandled ();
1186+
var dialog = new LicenseFileDialog (licenseFileText);
1187+
dialog.Run (this);
11861188
}
11871189
}
11881190

1189-
void PackageLicenseLinkClicked (object sender, LinkEventArgs e)
1190-
{
1191-
if (ShowLicenseFile (e.Target)) {
1192-
e.SetHandled ();
1193-
}
1194-
}
1195-
1196-
bool ShowLicenseFile (Uri uri)
1197-
{
1198-
return LicenseFileDialog.ShowDialog (
1199-
uri,
1200-
viewModel.SelectedPackage.GetLicenseLinks (),
1201-
this);
1202-
}
1203-
12041191
void ShowLicenseMetadata (ManagePackagesSearchResultViewModel packageViewModel)
12051192
{
12061193
var textLinks = packageViewModel.GetLicenseLinks ();
@@ -1225,7 +1212,8 @@ void ShowLicenseMetadata (ManagePackagesSearchResultViewModel packageViewModel)
12251212
return;
12261213
} else if (textLink is LicenseFileText licenseFileText) {
12271214
packageLicenseLink.Text = GettextCatalog.GetString ("View License");
1228-
packageLicenseLink.Uri = licenseFileText.CreateLicenseFileUri (1);
1215+
packageLicenseLink.Uri = licenseFileText.CreateLicenseFileUri ();
1216+
packageLicenseLink.Tag = licenseFileText;
12291217
return;
12301218
} else {
12311219
// Warning or plain text - handled below.

0 commit comments

Comments
 (0)