diff --git a/.gitignore b/ObjC/.gitignore
similarity index 100%
rename from .gitignore
rename to ObjC/.gitignore
diff --git a/ObjC/Base.lproj/MainMenu.nib/designable.nib b/ObjC/Base.lproj/MainMenu.nib/designable.nib
index 493971b..0a42641 100644
--- a/ObjC/Base.lproj/MainMenu.nib/designable.nib
+++ b/ObjC/Base.lproj/MainMenu.nib/designable.nib
@@ -291,6 +291,7 @@
+
diff --git a/ObjC/Base.lproj/MainMenu.nib/keyedobjects.nib b/ObjC/Base.lproj/MainMenu.nib/keyedobjects.nib
index 3d87356..8a37de6 100644
Binary files a/ObjC/Base.lproj/MainMenu.nib/keyedobjects.nib and b/ObjC/Base.lproj/MainMenu.nib/keyedobjects.nib differ
diff --git a/dotNET/.gitignore b/dotNET/.gitignore
new file mode 100644
index 0000000..045b80d
--- /dev/null
+++ b/dotNET/.gitignore
@@ -0,0 +1,8 @@
+bin
+obj
+*.DotSettings
+/build/.nuget/
+/out
+.vs
+packages
+.DS_Store
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png
new file mode 100644
index 0000000..d0b5a80
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png
new file mode 100644
index 0000000..f4c8d29
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png
new file mode 100644
index 0000000..ebb5a0f
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png
new file mode 100644
index 0000000..0986d31
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png
new file mode 100644
index 0000000..f4c8d29
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png
new file mode 100644
index 0000000..a142c83
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png
new file mode 100644
index 0000000..0986d31
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png
new file mode 100644
index 0000000..412d6ca
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png
new file mode 100644
index 0000000..a142c83
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
new file mode 100644
index 0000000..e99022a
Binary files /dev/null and b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png differ
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/Contents.json b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..6b28545
--- /dev/null
+++ b/dotNET/DockTile.NET.Plugin/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,68 @@
+{
+ "images": [
+ {
+ "filename": "AppIcon-16.png",
+ "size": "16x16",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-16@2x.png",
+ "size": "16x16",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-32.png",
+ "size": "32x32",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-32@2x.png",
+ "size": "32x32",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-128.png",
+ "size": "128x128",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-128@2x.png",
+ "size": "128x128",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-256.png",
+ "size": "256x256",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-256@2x.png",
+ "size": "256x256",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-512.png",
+ "size": "512x512",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-512@2x.png",
+ "size": "512x512",
+ "scale": "2x",
+ "idiom": "mac"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "xcode"
+ }
+}
\ No newline at end of file
diff --git a/dotNET/DockTile.NET.Plugin/Assets.xcassets/Contents.json b/dotNET/DockTile.NET.Plugin/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..4caf392
--- /dev/null
+++ b/dotNET/DockTile.NET.Plugin/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/dotNET/DockTile.NET.Plugin/DockTile.NET.Plugin.csproj b/dotNET/DockTile.NET.Plugin/DockTile.NET.Plugin.csproj
new file mode 100644
index 0000000..91e200b
--- /dev/null
+++ b/dotNET/DockTile.NET.Plugin/DockTile.NET.Plugin.csproj
@@ -0,0 +1,81 @@
+
+
+
+ Debug
+ AnyCPU
+ {87623BBC-CC8E-4977-B411-FF3ACA8DA0BF}
+ {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ DockTile.NET.Plugin
+ DockTile.NET.docktileplugin
+ v2.0
+ Xamarin.Mac
+ Resources
+
+
+ true
+ full
+ false
+ ..\DockTile.NET\bin\Debug\DockTile.NET.app\Contents\Plugins
+ DEBUG;
+ prompt
+ 4
+ false
+ Mac Developer
+ false
+ false
+ false
+ true
+ true
+ true
+
+
+
+ None
+
+
+ pdbonly
+ true
+ ..\DockTile.NET\bin\Release\DockTile.NET.app\Contents\Plugins
+
+ prompt
+ 4
+ false
+ true
+ false
+ true
+ true
+ true
+ SdkOnly
+
+
+ None
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dotNET/DockTile.NET.Plugin/DockTilePlugin.cs b/dotNET/DockTile.NET.Plugin/DockTilePlugin.cs
new file mode 100644
index 0000000..e647e8f
--- /dev/null
+++ b/dotNET/DockTile.NET.Plugin/DockTilePlugin.cs
@@ -0,0 +1,70 @@
+using System;
+using AppKit;
+using CoreFoundation;
+using Foundation;
+
+namespace DockTile.NET.Plugin
+{
+ [Register("DockTilePlugin")]
+ public class DockTilePlugin : NSDockTilePlugIn
+ {
+ private NSMenu nonRuntimeDockMenu;
+ private const string appId = "com.CartBlanche.DockTile-NET";
+ private NSObject highScoreObserver;
+
+ public override NSMenu DockMenu()
+ {
+ // Lazy load our dockMenu
+ if (nonRuntimeDockMenu == null)
+ {
+ nonRuntimeDockMenu = new NSMenu();
+ }
+ else
+ {
+ nonRuntimeDockMenu.RemoveAllItems();
+ }
+
+ if (CFPreferences.AppSynchronize(appId))
+ {
+ nonRuntimeDockMenu.AddItem(new NSMenuItem(string.Format("HighScore: {0}", CFPreferences.GetAppIntegerValue("HighScore", appId))));
+ }
+ else
+ {
+ nonRuntimeDockMenu.AddItem(new NSMenuItem("HighScore: None"));
+ }
+
+ return nonRuntimeDockMenu;
+ }
+
+ public override void SetDockTile(NSDockTile dockTile)
+ {
+ if (dockTile != null)
+ {
+ // Attach an observer that will update the high score in the dock tile whenever it changes
+ highScoreObserver = (NSObject)NSDistributedNotificationCenter.GetDefaultCenter().AddObserver("com.apple.DockTile.NET.HighScoreChanged", null, null, (obj) => {
+ // Note that this block captures (and retains) dockTile for use later.
+ // Also note that it does not capture self, which means -dealloc may be called even while the notification is active.
+ // Although it's not clear this needs to be supported, this does eliminate a potential source of leaks.
+ UpdateScore(dockTile);
+ } );
+
+ // Make sure score is updated from the get-go as well
+ UpdateScore(dockTile);
+ }
+ else
+ {
+ // Strictly speaking this may not be necessary (since the plug-in may be terminated when it's removed from the dock), but it's good practice
+ NSDistributedNotificationCenter.GetDefaultCenter().RemoveObserver(highScoreObserver);
+ highScoreObserver = null;
+ }
+ }
+
+ public static void UpdateScore(NSDockTile dockTile)
+ {
+ CFPreferences.AppSynchronize(appId);
+
+ dockTile.BadgeLabel = string.Format("{0}", CFPreferences.GetAppIntegerValue("HighScore", appId));
+ }
+ }
+
+}
diff --git a/dotNET/DockTile.NET.Plugin/Info.plist b/dotNET/DockTile.NET.Plugin/Info.plist
new file mode 100644
index 0000000..844d155
--- /dev/null
+++ b/dotNET/DockTile.NET.Plugin/Info.plist
@@ -0,0 +1,28 @@
+
+
+
+
+ CFBundleName
+ DockTile.NET.Plugin
+ CFBundleIdentifier
+ com.CartBlanche.DockTile-NET-Plugin
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSMinimumSystemVersion
+ 10.9
+ CFBundleDevelopmentRegion
+ en
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ BNDL
+ CFBundleSignature
+ ????
+ NSHumanReadableCopyright
+
+ NSPrincipalClass
+ DockTilePlugin
+
+
diff --git a/dotNET/DockTile.NET.Plugin/Main.cs b/dotNET/DockTile.NET.Plugin/Main.cs
new file mode 100644
index 0000000..322201a
--- /dev/null
+++ b/dotNET/DockTile.NET.Plugin/Main.cs
@@ -0,0 +1,14 @@
+using AppKit;
+using Foundation;
+
+namespace DockTile.NET.Plugin
+{
+ static class MainClass
+ {
+ static void Main(string[] args)
+ {
+ NSApplication.Init();
+ //NSApplication.Main(args);
+ }
+ }
+}
diff --git a/dotNET/DockTile.NET.sln b/dotNET/DockTile.NET.sln
new file mode 100644
index 0000000..8c63a03
--- /dev/null
+++ b/dotNET/DockTile.NET.sln
@@ -0,0 +1,23 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DockTile.NET", "DockTile.NET\DockTile.NET.csproj", "{200B24B3-8D88-43C8-B1DE-FFF4A6BC1670}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DockTile.NET.Plugin", "DockTile.NET.Plugin\DockTile.NET.Plugin.csproj", "{87623BBC-CC8E-4977-B411-FF3ACA8DA0BF}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {200B24B3-8D88-43C8-B1DE-FFF4A6BC1670}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {200B24B3-8D88-43C8-B1DE-FFF4A6BC1670}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {200B24B3-8D88-43C8-B1DE-FFF4A6BC1670}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {200B24B3-8D88-43C8-B1DE-FFF4A6BC1670}.Release|Any CPU.Build.0 = Release|Any CPU
+ {87623BBC-CC8E-4977-B411-FF3ACA8DA0BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {87623BBC-CC8E-4977-B411-FF3ACA8DA0BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {87623BBC-CC8E-4977-B411-FF3ACA8DA0BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {87623BBC-CC8E-4977-B411-FF3ACA8DA0BF}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/dotNET/DockTile.NET/AppDelegate.cs b/dotNET/DockTile.NET/AppDelegate.cs
new file mode 100644
index 0000000..46e12f5
--- /dev/null
+++ b/dotNET/DockTile.NET/AppDelegate.cs
@@ -0,0 +1,76 @@
+using System;
+using AppKit;
+using Foundation;
+
+namespace DockTile.NET
+{
+ [Register("AppDelegate")]
+ public partial class AppDelegate : NSApplicationDelegate
+ {
+ private nint HighScore => NSUserDefaults.StandardUserDefaults.IntForKey(HighScoreKey);
+
+ private const string HighScoreKey = "HighScore";
+ private NSMenu runtimeDockMenu;
+
+ public AppDelegate()
+ {
+ }
+
+ public override void DidFinishLaunching(NSNotification notification)
+ {
+ SetHighScore(HighScore + 1);
+ }
+
+ private void SetHighScore(nint newScore)
+ {
+ NSUserDefaults defaults = NSUserDefaults.StandardUserDefaults;
+
+ // We just save the value out, we don't keep a copy of the high score in the app.
+ defaults.SetInt(newScore, HighScoreKey);
+
+ // Save the value out to defaults now. We often don't explicit synchronize, since it's best to let the system take care of it automatically.
+ // However, in this case since we're asking the plug-in to update the score, synchronizing before the notification ensures that the plug-in sees the latest value.
+ // Always make sure the value is updated and synchronized before sending out the distributed notification to other processes.
+ if (!defaults.Synchronize())
+ {
+ Console.WriteLine("Synchronize Failed");
+ return;
+ }
+
+ // And post a notification so the plug-in sees the change.
+ NSDistributedNotificationCenter.GetDefaultCenter().PostNotificationName("com.apple.DockTile.NET.HighScoreChanged", null);
+
+ // Now update the dock tile. Note that a more general way to do this would be to observe the highScore property,
+ // but we're just keeping things short and sweet here, trying to demo how to write a plug-in.
+ NSApplication.SharedApplication.DockTile.BadgeLabel = string.Format("{0}", newScore);
+ }
+
+ public override void WillTerminate(NSNotification notification)
+ {
+ // Insert code here to tear down your application
+ }
+
+ // This gets called at Runtime when you right click the DockTile
+ public override NSMenu ApplicationDockMenu(NSApplication sender)
+ {
+ if (runtimeDockMenu == null)
+ {
+ runtimeDockMenu = new NSMenu();
+ }
+ else
+ {
+ runtimeDockMenu.RemoveAllItems();
+ }
+
+ runtimeDockMenu.AddItem(new NSMenuItem(string.Format("{0}", HighScore)));
+
+ return runtimeDockMenu;
+ }
+
+ //Reset the high score. Simple...
+ partial void ResetHighScore(NSObject sender)
+ {
+ SetHighScore(0);
+ }
+ }
+}
diff --git a/dotNET/DockTile.NET/AppDelegate.designer.cs b/dotNET/DockTile.NET/AppDelegate.designer.cs
new file mode 100644
index 0000000..bd0f879
--- /dev/null
+++ b/dotNET/DockTile.NET/AppDelegate.designer.cs
@@ -0,0 +1,20 @@
+// WARNING
+//
+// This file has been generated automatically by Visual Studio to store outlets and
+// actions made in the UI designer. If it is removed, they will be lost.
+// Manual changes to this file may not be handled correctly.
+//
+using Foundation;
+
+namespace DockTile.NET
+{
+ partial class AppDelegate
+ {
+ [Action ("ResetHighScore:")]
+ partial void ResetHighScore (Foundation.NSObject sender);
+
+ void ReleaseDesignerOutlets ()
+ {
+ }
+ }
+}
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png
new file mode 100644
index 0000000..d0b5a80
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png
new file mode 100644
index 0000000..f4c8d29
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png
new file mode 100644
index 0000000..ebb5a0f
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png
new file mode 100644
index 0000000..0986d31
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png
new file mode 100644
index 0000000..f4c8d29
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png
new file mode 100644
index 0000000..a142c83
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png
new file mode 100644
index 0000000..0986d31
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png
new file mode 100644
index 0000000..412d6ca
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png
new file mode 100644
index 0000000..a142c83
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
new file mode 100644
index 0000000..e99022a
Binary files /dev/null and b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png differ
diff --git a/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/Contents.json b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..6b28545
--- /dev/null
+++ b/dotNET/DockTile.NET/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,68 @@
+{
+ "images": [
+ {
+ "filename": "AppIcon-16.png",
+ "size": "16x16",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-16@2x.png",
+ "size": "16x16",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-32.png",
+ "size": "32x32",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-32@2x.png",
+ "size": "32x32",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-128.png",
+ "size": "128x128",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-128@2x.png",
+ "size": "128x128",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-256.png",
+ "size": "256x256",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-256@2x.png",
+ "size": "256x256",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-512.png",
+ "size": "512x512",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-512@2x.png",
+ "size": "512x512",
+ "scale": "2x",
+ "idiom": "mac"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "xcode"
+ }
+}
\ No newline at end of file
diff --git a/dotNET/DockTile.NET/Assets.xcassets/Contents.json b/dotNET/DockTile.NET/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..4caf392
--- /dev/null
+++ b/dotNET/DockTile.NET/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/dotNET/DockTile.NET/DockTile.NET.csproj b/dotNET/DockTile.NET/DockTile.NET.csproj
new file mode 100644
index 0000000..1acdd88
--- /dev/null
+++ b/dotNET/DockTile.NET/DockTile.NET.csproj
@@ -0,0 +1,85 @@
+
+
+
+ Debug
+ AnyCPU
+ {200B24B3-8D88-43C8-B1DE-FFF4A6BC1670}
+ {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ DockTile.NET
+ DockTile.NET
+ v2.0
+ Xamarin.Mac
+ Resources
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ false
+ Mac Developer
+ false
+ false
+ false
+ true
+ true
+ true
+
+
+ pdbonly
+ true
+ bin\Release
+ prompt
+ 4
+ false
+ true
+ false
+ true
+ true
+ true
+ SdkOnly
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AppDelegate.cs
+
+
+
+
+
+
+
+ {87623BBC-CC8E-4977-B411-FF3ACA8DA0BF}
+ DockTile.NET.Plugin
+
+
+
+
\ No newline at end of file
diff --git a/dotNET/DockTile.NET/Info.plist b/dotNET/DockTile.NET/Info.plist
new file mode 100644
index 0000000..122fbc3
--- /dev/null
+++ b/dotNET/DockTile.NET/Info.plist
@@ -0,0 +1,34 @@
+
+
+
+
+ CFBundleName
+ DockTile.NET
+ CFBundleIdentifier
+ com.CartBlanche.DockTile-NET
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSMinimumSystemVersion
+ 10.9
+ CFBundleDevelopmentRegion
+ en
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ APPL
+ CFBundleSignature
+ ????
+ NSHumanReadableCopyright
+
+ NSPrincipalClass
+ NSApplication
+ NSMainNibFile
+ MainMenu
+ XSAppIconAssets
+ Assets.xcassets/AppIcon.appiconset
+ Dock Tile plugin path
+ DockTile.NET.docktileplugin
+
+
diff --git a/dotNET/DockTile.NET/Main.cs b/dotNET/DockTile.NET/Main.cs
new file mode 100644
index 0000000..2a67e12
--- /dev/null
+++ b/dotNET/DockTile.NET/Main.cs
@@ -0,0 +1,13 @@
+using AppKit;
+
+namespace DockTile.NET
+{
+ static class MainClass
+ {
+ static void Main(string[] args)
+ {
+ NSApplication.Init();
+ NSApplication.Main(args);
+ }
+ }
+}
diff --git a/dotNET/DockTile.NET/MainMenu.xib b/dotNET/DockTile.NET/MainMenu.xib
new file mode 100644
index 0000000..3ec1fee
--- /dev/null
+++ b/dotNET/DockTile.NET/MainMenu.xib
@@ -0,0 +1,734 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+