[statusicon][osx] Make it not crash

This commit is contained in:
Hylke Bons 2010-11-21 20:57:14 +00:00
parent ab3cdb7dca
commit 2c8d19be8b
2 changed files with 88 additions and 65 deletions

View file

@ -9,123 +9,146 @@ namespace SparkleShare
{ {
public partial class AppDelegate : NSApplicationDelegate public partial class AppDelegate : NSApplicationDelegate
{ {
MainWindowController mainWindowController; MainWindowController mainWindowController;
NSStatusItem statusItem; NSStatusItem StatusItem;
NSMenu menu;
NSMenuItem item;
NSMenu Menu;
NSMenuItem FolderMenuItem;
NSMenuItem [] FolderMenuItems;
NSMenuItem SyncMenuItem;
NSMenuItem NotificationsMenuItem;
NSMenuItem AboutMenuItem;
NSMenuItem QuitMenuItem;
public AppDelegate () public AppDelegate ()
{ {
} }
public override void FinishedLaunching (NSObject notification) public override void FinishedLaunching (NSObject notification)
{ {
mainWindowController = new MainWindowController ();
mainWindowController.Window.MakeKeyAndOrderFront (this); // mainWindowController = new MainWindowController ();
// mainWindowController.Window.MakeKeyAndOrderFront (this);
// SparkleStatusIcon = new SparkleStatusIcon (); // SparkleStatusIcon = new SparkleStatusIcon ();
SparkleRepo repo = new SparkleRepo ("/Users/hbons/SparkleShare/SparkleShare-Test"); // SparkleRepo repo = new SparkleRepo ("/Users/hbons/SparkleShare/SparkleShare-Test");
statusItem = NSStatusBar.SystemStatusBar.CreateStatusItem (32);
statusItem.Enabled = true; StatusItem = NSStatusBar.SystemStatusBar.CreateStatusItem (32);
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);
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, Title="SparkleShare", Enabled = true,
Action = new Selector ("ddd") Action = new Selector ("ddd")
}; };
item.Activated += delegate { FolderMenuItem.Activated += delegate {
Console.WriteLine ("DDDD"); Console.WriteLine ("DDDD");
}; };
item.Image = NSImage.ImageNamed ("NSFolder"); FolderMenuItem.Image = NSImage.ImageNamed ("NSFolder");
item.Image.Size = new SizeF (16, 16); FolderMenuItem.Image.Size = new SizeF (16, 16);
menu.AddItem (item); Menu.AddItem (FolderMenuItem);
/* var tmp = new NSMenuItem () { FolderMenuItems = new NSMenuItem [2] {
Title="gnome-design", Enabled = true, new NSMenuItem () { Title = "gnome-design" },
Action = new Selector ("ddd") new NSMenuItem () { Title = "tango-icons" }
}; };
tmp.Activated += delegate { foreach (NSMenuItem item in FolderMenuItems) {
Console.WriteLine ("DDDD");
item.Activated += delegate {
}; };
tmp.Image = NSImage.ImageNamed ("NSFolder"); item.Image = NSImage.ImageNamed ("NSFolder");
tmp.Image.Size = new SizeF (16, 16); 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..." Title = "Sync Remote Folder..."
}; };
sync_menu_item.Activated += delegate { SyncMenuItem.Activated += delegate {
Console.WriteLine ("DDDD");
}; };
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", Title = "Show Notifications",
State = NSCellStateValue.On State = NSCellStateValue.On
}; };
notifications_menu_item.Activated += delegate { NotificationsMenuItem.Activated += delegate {
statusItem.Image = NSImage.ImageNamed ("NSComputer");
if (notifications_menu_item.State == NSCellStateValue.On) //StatusItem.Image = NSImage.ImageNamed ("NSComputer");
notifications_menu_item.State = NSCellStateValue.Off; if (NotificationsMenuItem.State == NSCellStateValue.On)
NotificationsMenuItem.State = NSCellStateValue.Off;
else else
notifications_menu_item.State = NSCellStateValue.On;
NotificationsMenuItem.State = NSCellStateValue.On;
}; };
menu.AddItem (notifications_menu_item); Menu.AddItem (NotificationsMenuItem);
menu.AddItem (NSMenuItem.SeparatorItem);
NSMenuItem about_menu_item = new NSMenuItem () { Menu.AddItem (NSMenuItem.SeparatorItem);
AboutMenuItem = new NSMenuItem () {
Title = "About" Title = "About"
}; };
about_menu_item.Activated += delegate { AboutMenuItem.Activated += delegate {
Console.WriteLine ("DDDD");
statusItem.Title = "bla";
}; };
menu.AddItem (about_menu_item); Menu.AddItem (AboutMenuItem);
menu.AddItem (NSMenuItem.SeparatorItem);
NSMenuItem quit_menu_item = new NSMenuItem () {
Menu.AddItem (NSMenuItem.SeparatorItem);
QuitMenuItem = new NSMenuItem () {
Title = "Quit" Title = "Quit"
}; };
quit_menu_item.Activated += delegate {
Console.WriteLine ("DDDD"); QuitMenuItem.Activated += delegate {
Environment.Exit (0); Environment.Exit (0);
}; };
menu.AddItem (quit_menu_item); Menu.AddItem (QuitMenuItem);
*/ StatusItem.Menu = Menu;
statusItem.Menu = menu;
statusItem.HighlightMode = true;
} }
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 B

After

Width:  |  Height:  |  Size: 283 B