Skip to content

Commit 3ad0e9e

Browse files
committed
Porting...
1 parent e160ba7 commit 3ad0e9e

25 files changed

+608
-278
lines changed

VisualStudioMac.SolutionTreeFilter/Cache/FilteredProjectCache.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using MonoDevelop.Ide.Gui.Pads.ProjectPad;
77
using MonoDevelop.Projects;
88
using VisualStudioMac.SolutionTreeFilter.Helpers;
9+
using VisualStudioMac.SolutionTreeFilter.Helpers.ExtensionSettings;
910

1011
namespace VisualStudioMac.SolutionTreeFilter.Cache
1112
{
@@ -27,7 +28,7 @@ public static void ScanProjectForFiles(Project project)
2728
{
2829
lock (_projectsDictionary)
2930
{
30-
var filter = EssentialProperties.SolutionFilter;
31+
var filter = FilterSettings.SolutionFilter;
3132

3233
// check if cache is still current according to filter used
3334
if (_lastFilter != filter)
@@ -46,8 +47,8 @@ public static void ScanProjectForFiles(Project project)
4647
return;
4748
}
4849
_projectsDictionary[project.Name] = DateTime.Now;
49-
var filterArray = EssentialProperties.SolutionFilterArray;
50-
var pinnedDocuments = EssentialProperties.PinnedDocuments;
50+
var filterArray = FilterSettings.SolutionFilterArray;
51+
var pinnedDocuments = FilterSettings.PinnedDocuments;
5152

5253
// clear all entries related to project.
5354
ClearCacheOfProject(project);

VisualStudioMac.SolutionTreeFilter/CommandHandlers/Editor/PinCommandHandler.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using MonoDevelop.Projects;
55
using VisualStudioMac.SolutionTreeFilter.Gui;
66
using VisualStudioMac.SolutionTreeFilter.Helpers;
7+
using VisualStudioMac.SolutionTreeFilter.Helpers.ExtensionSettings;
78

89
namespace VisualStudioMac.SolutionTreeFilter.CommandHandlers.Editor
910
{
@@ -16,21 +17,20 @@ protected override void Update(CommandInfo info)
1617
if (IdeApp.Workbench.ActiveDocument != null && IdeApp.Workbench.ActiveDocument.IsFile)
1718
{
1819
info.Enabled = true;
19-
var isPinned = EssentialProperties.IsPinned(IdeApp.Workbench.ActiveDocument);
20-
info.Text = isPinned ? "Pinned on Solution Tree" : "Pin on Solution Tree";
21-
info.Checked = isPinned;
20+
var isPinned = FilterSettings.IsPinned(IdeApp.Workbench.ActiveDocument);
21+
info.Text = isPinned ? "Unpin from Solution Tree" : "Pin on Solution Tree";
2222
}
2323
}
2424

2525
protected override void Run()
2626
{
2727
if (IdeApp.Workbench.ActiveDocument != null && IdeApp.Workbench.ActiveDocument.IsFile)
2828
{
29-
var isPinned = EssentialProperties.IsPinned(IdeApp.Workbench.ActiveDocument);
29+
var isPinned = FilterSettings.IsPinned(IdeApp.Workbench.ActiveDocument);
3030
if (isPinned)
31-
EssentialProperties.RemovePinnedDocument(IdeApp.Workbench.ActiveDocument);
31+
FilterSettings.RemovePinnedDocument(IdeApp.Workbench.ActiveDocument);
3232
else
33-
EssentialProperties.AddPinnedDocument(IdeApp.Workbench.ActiveDocument);
33+
FilterSettings.AddPinnedDocument(IdeApp.Workbench.ActiveDocument);
3434

3535
var pad = (SolutionPad)IdeApp.Workbench.Pads.SolutionPad.Content;
3636
if (pad == null)

VisualStudioMac.SolutionTreeFilter/CommandHandlers/Node/PinCommandHandler.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using MonoDevelop.Ide.Gui.Pads;
44
using MonoDevelop.Projects;
55
using VisualStudioMac.SolutionTreeFilter.Helpers;
6+
using VisualStudioMac.SolutionTreeFilter.Helpers.ExtensionSettings;
67

78
namespace VisualStudioMac.SolutionTreeFilter.CommandHandlers.Node
89
{
@@ -15,9 +16,8 @@ protected override void Update(CommandInfo info)
1516
if (IdeApp.ProjectOperations.CurrentSelectedItem is ProjectFile projectFile)
1617
{
1718
info.Enabled = true;
18-
var isPinned = EssentialProperties.IsPinned(projectFile);
19-
info.Text = isPinned ? "Pinned on Solution Tree" : "Pin on Solution Tree";
20-
info.Checked = isPinned;
19+
var isPinned = FilterSettings.IsPinned(projectFile);
20+
info.Text = isPinned ? "Unpin document" : "Pin document";
2121
}
2222
}
2323

@@ -27,11 +27,11 @@ protected override void Run()
2727
&& projectFile.Subtype == Subtype.Code)
2828
{
2929

30-
var isPinned = EssentialProperties.IsPinned(projectFile);
30+
var isPinned = FilterSettings.IsPinned(projectFile);
3131
if (isPinned)
32-
EssentialProperties.RemovePinnedDocument(projectFile);
32+
FilterSettings.RemovePinnedDocument(projectFile);
3333
else
34-
EssentialProperties.AddPinnedDocument(projectFile);
34+
FilterSettings.AddPinnedDocument(projectFile);
3535

3636

3737
var pad = (SolutionPad)IdeApp.Workbench.Pads.SolutionPad.Content;

VisualStudioMac.SolutionTreeFilter/CommandHandlers/Node/UnPinAllCommandHandler.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using MonoDevelop.Ide;
44
using VisualStudioMac.SolutionTreeFilter.Gui;
55
using VisualStudioMac.SolutionTreeFilter.Helpers;
6+
using VisualStudioMac.SolutionTreeFilter.Helpers.ExtensionSettings;
67

78
namespace VisualStudioMac.SolutionTreeFilter.CommandHandlers.Node
89
{
@@ -16,7 +17,7 @@ protected override void Update(CommandInfo info)
1617

1718
protected override void Run()
1819
{
19-
EssentialProperties.ClearPinnedDocuments();
20+
FilterSettings.ClearPinnedDocuments();
2021
var pad = (FilterPad)IdeApp.Workbench.GetPad<FilterPad>().Content;
2122
if (pad == null)
2223
return;

VisualStudioMac.SolutionTreeFilter/CommandHandlers/StartupCommandHandler.cs

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,48 @@
22
using MonoDevelop.Components.Commands;
33
using MonoDevelop.Ide;
44
using VisualStudioMac.SolutionTreeFilter.Gui;
5+
using VisualStudioMac.SolutionTreeFilter.Helpers.ExtensionSettings;
56

67
namespace VisualStudioMac.SolutionTreeFilter.CommandHandlers
78
{
89
public class StartupCommandHandler : CommandHandler
910
{
1011
protected override void Run()
1112
{
12-
Debug.WriteLine("### STARTUP!!! ###");
13+
if (FilterSettings.IsFirstTime)
14+
{
15+
if (IdeApp.Workspace.CurrentSelectedSolution is null)
16+
{
17+
IdeApp.Workspace.SolutionLoaded += Workspace_SolutionLoaded;
18+
}
19+
}
20+
}
21+
22+
private void Workspace_SolutionLoaded(object sender, MonoDevelop.Projects.SolutionEventArgs e)
23+
{
24+
IdeApp.Workspace.SolutionLoaded -= Workspace_SolutionLoaded;
25+
if (e.Solution != null)
26+
{
27+
ShowMessageAndOpenPad();
28+
}
29+
}
30+
31+
void ShowMessageAndOpenPad()
32+
{
33+
MessageService.ShowMessage(
34+
"SolutionTree Filter Extension",
35+
$"Thank you for installing this Free extension. It adds a Pad which allows you to filter the solution tree by multiple search terms.\n\nEnjoy!\n\nby Ivo Krugers");
36+
37+
// Open the pad
38+
var pad = IdeApp.Workbench.GetPad<FilterPad>();
39+
if (pad != null)
40+
{
41+
pad.Visible = true;
42+
pad.IsOpenedAutomatically = true;
43+
pad.BringToFront(true);
44+
}
1345

14-
//var pad = IdeApp.Workbench.GetPad<FilterPad>();
15-
//if (pad != null)
16-
//{
17-
// pad.Visible = true;
18-
// pad.IsOpenedAutomatically = true;
19-
// pad.BringToFront(true);
20-
//}
46+
FilterSettings.IsFirstTime = false;
2147
}
2248
}
2349
}

VisualStudioMac.SolutionTreeFilter/Gui/FilterPad.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using MonoDevelop.Ide;
88
using MonoDevelop.Ide.Gui;
99
using VisualStudioMac.SolutionTreeFilter.Helpers;
10+
using VisualStudioMac.SolutionTreeFilter.Helpers.ExtensionSettings;
1011
using Xwt.Mac;
1112

1213
namespace VisualStudioMac.SolutionTreeFilter.Gui
@@ -50,7 +51,7 @@ protected override void Initialize(IPadWindow window)
5051

5152
StartListeningForWorkspaceChanges();
5253

53-
this.Window.Title = $"Solution Filter ({Constants.Version})";
54+
this.Window.Title = $"Solution Filter";
5455
}
5556

5657
void StartListeningForWorkspaceChanges()
@@ -83,7 +84,7 @@ private void StorePinnedDocuments(object sender)
8384
_semaphore.Wait();
8485
try
8586
{
86-
if (!EssentialProperties.Initialized)
87+
if (!FilterSettings.Initialized)
8788
return;
8889

8990
if (sender is Workbench wb)
@@ -106,7 +107,7 @@ private void StorePinnedDocuments(object sender)
106107
var isPinnedProp = tab.GetType().GetProperty("IsPinned");
107108
bool isPinned = (bool)isPinnedProp.GetValue(tab, null);
108109
if (isPinned)
109-
EssentialProperties.AddPinnedDocument(IdeApp.Workbench.Documents[index]);
110+
FilterSettings.AddPinnedDocument(IdeApp.Workbench.Documents[index]);
110111
index++;
111112
}
112113
}
@@ -122,14 +123,18 @@ private void StorePinnedDocuments(object sender)
122123

123124
internal void Initialize(bool forceReload = false)
124125
{
125-
PropertyService.Instance.Init(IdeApp.Workspace.CurrentSelectedSolution);
126+
if (IdeApp.Workspace.CurrentSelectedSolution is null)
127+
return;
128+
129+
130+
SolutionExtensionSettings.Instance.Init(IdeApp.Workspace.CurrentSelectedSolution);
126131

127132
if (this.widget is null)
128133
return;
129134

130135
var filterChanged =
131-
widget.FilterText != EssentialProperties.SolutionFilter
132-
|| widget.ExpandText != EssentialProperties.ExpandFilter;
136+
widget.FilterText != FilterSettings.SolutionFilter
137+
|| widget.ExpandText != FilterSettings.ExpandFilter;
133138

134139
widget.LoadProperties();
135140

VisualStudioMac.SolutionTreeFilter/Gui/FilterPadWidget.UI.cs

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,26 +19,10 @@ public partial class FilterPadWidget : Widget
1919

2020
private Button applyButton;
2121

22-
//private HBox hbox2;
23-
24-
//private CheckButton oneClickCheckbutton;
25-
26-
//private Button newReleaseAvailableButton;
27-
28-
//private HBox hbox3;
29-
30-
//private Label label2;
31-
32-
//private Entry collapseEntry;
33-
34-
//private Button collapseButton;
35-
36-
//private HBox hbox4;
22+
private CheckBox doubleClickToPinCheckbutton;
3723

3824
private Button resetPinnedButton;
39-
40-
//private Button ReloadPropertiesButton;
41-
25+
4226
private Button pinOpenDocumentsButton;
4327

4428
protected virtual void Build()
@@ -140,7 +124,7 @@ protected virtual void Build()
140124

141125
// Expand projects section
142126
var buttonsHBox = new HBox();
143-
pinOpenDocumentsButton = new Button(ImageService.GetIcon(Stock.PinDown, Gtk.IconSize.Button), "Pin All Open Documents")
127+
pinOpenDocumentsButton = new Button(ImageService.GetIcon(Stock.PinDown, Gtk.IconSize.Button), "Pin All Open Docs")
144128
{
145129
MarginLeft = 6,
146130
MarginRight = 2,
@@ -156,8 +140,17 @@ protected virtual void Build()
156140
HorizontalPlacement = WidgetPlacement.Center,
157141
};
158142

143+
doubleClickToPinCheckbutton = new CheckBox("Double-Click to Pin")
144+
{
145+
MarginLeft = 6,
146+
MarginRight = 6,
147+
ExpandHorizontal = true,
148+
HorizontalPlacement = WidgetPlacement.Center,
149+
};
150+
159151
buttonsHBox.PackStart(pinOpenDocumentsButton);
160-
buttonsHBox.PackStart(new FrameBox(), true, true);
152+
//buttonsHBox.PackStart(new FrameBox(), true, true);
153+
buttonsHBox.PackStart(doubleClickToPinCheckbutton, true, true);
161154
buttonsHBox.PackEnd(resetPinnedButton);
162155

163156
var mainVBox = new VBox();

0 commit comments

Comments
 (0)