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

Commit 617951f

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 08ddf78 commit 617951f

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
@@ -101,7 +101,6 @@ public ManagePackagesDialog (
101101

102102
closeButton.Clicked += CloseButtonClicked;
103103
packageLicenseLink.NavigateToUrl += PackageLicenseNavigateToUrl;
104-
packageLicenseMetadataLabel.LinkClicked += PackageLicenseLinkClicked;
105104
showPrereleaseCheckBox.Clicked += ShowPrereleaseCheckBoxClicked;
106105
packageSourceComboBox.SelectionChanged += PackageSourceChanged;
107106
addPackagesButton.Clicked += AddPackagesButtonClicked;
@@ -152,7 +151,6 @@ protected override void Dispose (bool disposing)
152151
{
153152
closeButton.Clicked -= CloseButtonClicked;
154153
packageLicenseLink.NavigateToUrl -= PackageLicenseNavigateToUrl;
155-
packageLicenseMetadataLabel.LinkClicked -= PackageLicenseLinkClicked;
156154
currentPackageVersionLabel.BoundsChanged -= PackageVersionLabelBoundsChanged;
157155

158156
showPrereleaseCheckBox.Clicked -= ShowPrereleaseCheckBoxClicked;
@@ -1294,6 +1292,7 @@ void ProjectCheckBoxCellViewToggled (object sender, WidgetEventArgs e)
12941292

12951293
void ShowLicense (ManagePackagesSearchResultViewModel packageViewModel)
12961294
{
1295+
packageLicenseLink.Tag = null;
12971296
if (packageViewModel.HasLicenseMetadata) {
12981297
ShowLicenseMetadata (packageViewModel);
12991298
} else {
@@ -1305,26 +1304,14 @@ void ShowLicense (ManagePackagesSearchResultViewModel packageViewModel)
13051304

13061305
void PackageLicenseNavigateToUrl (object sender, NavigateToUrlEventArgs e)
13071306
{
1308-
if (ShowLicenseFile (e.Uri)) {
1307+
var licenseFileText = packageLicenseLink.Tag as LicenseFileText;
1308+
if (licenseFileText != null) {
13091309
e.SetHandled ();
1310+
var dialog = new LicenseFileDialog (licenseFileText);
1311+
dialog.Run (this);
13101312
}
13111313
}
13121314

1313-
void PackageLicenseLinkClicked (object sender, LinkEventArgs e)
1314-
{
1315-
if (ShowLicenseFile (e.Target)) {
1316-
e.SetHandled ();
1317-
}
1318-
}
1319-
1320-
bool ShowLicenseFile (Uri uri)
1321-
{
1322-
return LicenseFileDialog.ShowDialog (
1323-
uri,
1324-
viewModel.SelectedPackage.GetLicenseLinks (),
1325-
this);
1326-
}
1327-
13281315
void ShowLicenseMetadata (ManagePackagesSearchResultViewModel packageViewModel)
13291316
{
13301317
var textLinks = packageViewModel.GetLicenseLinks ();
@@ -1349,7 +1336,8 @@ void ShowLicenseMetadata (ManagePackagesSearchResultViewModel packageViewModel)
13491336
return;
13501337
} else if (textLink is LicenseFileText licenseFileText) {
13511338
packageLicenseLink.Text = GettextCatalog.GetString ("View License");
1352-
packageLicenseLink.Uri = licenseFileText.CreateLicenseFileUri (1);
1339+
packageLicenseLink.Uri = licenseFileText.CreateLicenseFileUri ();
1340+
packageLicenseLink.Tag = licenseFileText;
13531341
return;
13541342
} else {
13551343
// Warning or plain text - handled below.

0 commit comments

Comments
 (0)