-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
79 lines (77 loc) · 2.61 KB
/
Program.cs
File metadata and controls
79 lines (77 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using System.Configuration;
using System.Reflection;
using System.Runtime.InteropServices;
namespace ClemWin;
static class Program
{
[STAThread]
static void Main()
{
// already running?
var mutex = new Mutex(false, "ClemWinWindowManagerMutex");
if (!mutex.WaitOne(0, false))
{
MessageBox.Show("ClemWin Window Manager is already running.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);
var hotkeyWindow = new HotkeyWindow();
var whitelist = new WhiteList();
var windowManager = new Windows(hotkeyWindow, whitelist);
var overlay = new Overlay(windowManager);
var searchWindow = new Search(windowManager, overlay, hotkeyWindow);
var markers = new Markers(overlay, whitelist);
var icon = new NotifyIcon
{
Visible = true,
ContextMenuStrip = new ContextMenuStrip()
{
Items =
{
new ToolStripMenuItem("Search (Win + [Shift / Ctrl] + K)", null, (s, e) => {
searchWindow.SearchMode = !searchWindow.SearchMode;
}),
new ToolStripMenuItem("Open Folder", null, (s, e) => {
OpenStorageFolder();
}),
new ToolStripMenuItem("Exit", null, (s, e) => {
Application.Exit();
})
}
},
Icon = Utils.IconFromPNG("logo.png") ?? SystemIcons.Application,
Text = "ClemWin Window Manager",
};
icon.Click += (s, e) =>
{
if (e is MouseEventArgs mouseEventArgs && mouseEventArgs.Button == MouseButtons.Left)
{
OpenStorageFolder();
}
};
Application.Run(overlay);
Application.ApplicationExit += (s, e) =>
{
icon.Dispose();
mutex.ReleaseMutex();
mutex.Dispose();
};
}
private static void OpenStorageFolder()
{
// Open storage folder
string storagePath = Storage.GetStoragePath();
if (Directory.Exists(storagePath))
{
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName = storagePath,
UseShellExecute = true
});
}
else
{
MessageBox.Show("Storage folder does not exist.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}