From a01c01020735ffff44a4e58a4891f7d0fd8d7089 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 21 Nov 2010 20:57:14 +0000 Subject: [PATCH] [statusicon][osx] Make it not crash --- SparkleShare/Mac/SparkleShare/AppDelegate.cs | 153 ++++++++++-------- .../SparkleShare/sparkleshare-idle-focus.png | Bin 192 -> 283 bytes 2 files changed, 88 insertions(+), 65 deletions(-) diff --git a/SparkleShare/Mac/SparkleShare/AppDelegate.cs b/SparkleShare/Mac/SparkleShare/AppDelegate.cs index 65a23787..77d455bd 100644 --- a/SparkleShare/Mac/SparkleShare/AppDelegate.cs +++ b/SparkleShare/Mac/SparkleShare/AppDelegate.cs @@ -9,123 +9,146 @@ namespace SparkleShare { public partial class AppDelegate : NSApplicationDelegate { + MainWindowController mainWindowController; - NSStatusItem statusItem; - - NSMenu menu; - NSMenuItem item; - - + NSStatusItem StatusItem; + NSMenu Menu; + NSMenuItem FolderMenuItem; + NSMenuItem [] FolderMenuItems; + NSMenuItem SyncMenuItem; + NSMenuItem NotificationsMenuItem; + NSMenuItem AboutMenuItem; + NSMenuItem QuitMenuItem; + + public AppDelegate () { } public override void FinishedLaunching (NSObject notification) { - mainWindowController = new MainWindowController (); - mainWindowController.Window.MakeKeyAndOrderFront (this); + + // mainWindowController = new MainWindowController (); + // mainWindowController.Window.MakeKeyAndOrderFront (this); // SparkleStatusIcon = new SparkleStatusIcon (); - SparkleRepo repo = new SparkleRepo ("/Users/hbons/SparkleShare/SparkleShare-Test"); - statusItem = NSStatusBar.SystemStatusBar.CreateStatusItem (32); + // SparkleRepo repo = new SparkleRepo ("/Users/hbons/SparkleShare/SparkleShare-Test"); - statusItem.Enabled = true; - - statusItem.Image = NSImage.ImageNamed ("sparkleshare-idle.png"); - statusItem.AlternateImage = NSImage.ImageNamed ("sparkleshare-idle-focus.png"); - statusItem.Image.Size = new SizeF (16, 16); - statusItem.AlternateImage.Size = new SizeF (16, 16); - - menu = new NSMenu() {}; -// menu.AddItem (new NSMenuItem () { Title="Up to date (102 MB)", Enabled = true }); -// menu.AddItem (NSMenuItem.SeparatorItem); + StatusItem = NSStatusBar.SystemStatusBar.CreateStatusItem (32); - item = new NSMenuItem () { + StatusItem.Enabled = true; + StatusItem.Image = NSImage.ImageNamed ("sparkleshare-idle.png"); + StatusItem.AlternateImage = NSImage.ImageNamed ("sparkleshare-idle-focus.png"); + StatusItem.Image.Size = new SizeF (13, 13); + StatusItem.AlternateImage.Size = new SizeF (13, 13); + StatusItem.HighlightMode = true; + + Menu = new NSMenu (); + + + Menu.AddItem (new NSMenuItem () { Title="Up to date (102 ᴍʙ)", Enabled = true }); + Menu.AddItem (NSMenuItem.SeparatorItem); + + + FolderMenuItem = new NSMenuItem () { Title="SparkleShare", Enabled = true, Action = new Selector ("ddd") }; - item.Activated += delegate { + FolderMenuItem.Activated += delegate { Console.WriteLine ("DDDD"); }; - item.Image = NSImage.ImageNamed ("NSFolder"); - item.Image.Size = new SizeF (16, 16); + FolderMenuItem.Image = NSImage.ImageNamed ("NSFolder"); + FolderMenuItem.Image.Size = new SizeF (16, 16); - menu.AddItem (item); - -/* var tmp = new NSMenuItem () { - Title="gnome-design", Enabled = true, - Action = new Selector ("ddd") + Menu.AddItem (FolderMenuItem); + + FolderMenuItems = new NSMenuItem [2] { + new NSMenuItem () { Title = "gnome-design" }, + new NSMenuItem () { Title = "tango-icons" } }; - tmp.Activated += delegate { - Console.WriteLine ("DDDD"); + foreach (NSMenuItem item in FolderMenuItems) { + + item.Activated += delegate { + }; - - tmp.Image = NSImage.ImageNamed ("NSFolder"); - tmp.Image.Size = new SizeF (16, 16); + + item.Image = NSImage.ImageNamed ("NSFolder"); + Menu.AddItem (item); + }; + - menu.AddItem (tmp); - menu.AddItem (NSMenuItem.SeparatorItem); + Menu.AddItem (NSMenuItem.SeparatorItem); - Console.WriteLine (item.Action.Name); - NSMenuItem sync_menu_item = new NSMenuItem () { + SyncMenuItem = new NSMenuItem () { Title = "Sync Remote Folder..." }; - - sync_menu_item.Activated += delegate { - Console.WriteLine ("DDDD"); + + SyncMenuItem.Activated += delegate { + }; + + Menu.AddItem (SyncMenuItem); - menu.AddItem (sync_menu_item); - menu.AddItem (NSMenuItem.SeparatorItem); + + Menu.AddItem (NSMenuItem.SeparatorItem); + - NSMenuItem notifications_menu_item = new NSMenuItem () { + NotificationsMenuItem = new NSMenuItem () { Title = "Show Notifications", State = NSCellStateValue.On }; - notifications_menu_item.Activated += delegate { - statusItem.Image = NSImage.ImageNamed ("NSComputer"); - if (notifications_menu_item.State == NSCellStateValue.On) - notifications_menu_item.State = NSCellStateValue.Off; + NotificationsMenuItem.Activated += delegate { + + //StatusItem.Image = NSImage.ImageNamed ("NSComputer"); + if (NotificationsMenuItem.State == NSCellStateValue.On) + + NotificationsMenuItem.State = NSCellStateValue.Off; + else - notifications_menu_item.State = NSCellStateValue.On; + + NotificationsMenuItem.State = NSCellStateValue.On; + }; - menu.AddItem (notifications_menu_item); - menu.AddItem (NSMenuItem.SeparatorItem); - - NSMenuItem about_menu_item = new NSMenuItem () { + Menu.AddItem (NotificationsMenuItem); + + + Menu.AddItem (NSMenuItem.SeparatorItem); + + + AboutMenuItem = new NSMenuItem () { Title = "About" }; - about_menu_item.Activated += delegate { - Console.WriteLine ("DDDD"); - statusItem.Title = "bla"; + AboutMenuItem.Activated += delegate { + }; - menu.AddItem (about_menu_item); - menu.AddItem (NSMenuItem.SeparatorItem); + Menu.AddItem (AboutMenuItem); - NSMenuItem quit_menu_item = new NSMenuItem () { + + Menu.AddItem (NSMenuItem.SeparatorItem); + + + QuitMenuItem = new NSMenuItem () { Title = "Quit" }; - quit_menu_item.Activated += delegate { - Console.WriteLine ("DDDD"); + + QuitMenuItem.Activated += delegate { Environment.Exit (0); }; - menu.AddItem (quit_menu_item); + Menu.AddItem (QuitMenuItem); - */ + StatusItem.Menu = Menu; - statusItem.Menu = menu; - statusItem.HighlightMode = true; } } } diff --git a/SparkleShare/Mac/SparkleShare/sparkleshare-idle-focus.png b/SparkleShare/Mac/SparkleShare/sparkleshare-idle-focus.png index ed16b0e0dc50104aaa4d2b75dc381311d72cc4bc..879ac049874b34e34c551b07e94b6607239babf1 100644 GIT binary patch delta 216 zcmV;}04M*z0hEak_720#Il zq_wxWL<&idXfXs%Nm7w??YTux+09d;yPHPmdKI;Vst0F{m?L;wH)