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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +