[statusicon][osx] Make it not crash

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

View file

@ -9,12 +9,17 @@ 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 ()
@ -23,109 +28,127 @@ namespace SparkleShare
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.Enabled = true;
statusItem.AlternateImage = NSImage.ImageNamed ("sparkleshare-idle-focus.png"); StatusItem.Image = NSImage.ImageNamed ("sparkleshare-idle.png");
statusItem.Image.Size = new SizeF (16, 16); StatusItem.AlternateImage = NSImage.ImageNamed ("sparkleshare-idle-focus.png");
statusItem.AlternateImage.Size = new SizeF (16, 16); StatusItem.Image.Size = new SizeF (13, 13);
StatusItem.AlternateImage.Size = new SizeF (13, 13);
StatusItem.HighlightMode = true;
menu = new NSMenu() {}; Menu = new NSMenu ();
// menu.AddItem (new NSMenuItem () { Title="Up to date (102 MB)", Enabled = true });
// menu.AddItem (NSMenuItem.SeparatorItem);
item = new NSMenuItem () {
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");
}; };
FolderMenuItem.Image = NSImage.ImageNamed ("NSFolder");
FolderMenuItem.Image.Size = new SizeF (16, 16);
Menu.AddItem (FolderMenuItem);
FolderMenuItems = new NSMenuItem [2] {
new NSMenuItem () { Title = "gnome-design" },
new NSMenuItem () { Title = "tango-icons" }
};
foreach (NSMenuItem item in FolderMenuItems) {
item.Activated += delegate {
};
item.Image = NSImage.ImageNamed ("NSFolder"); item.Image = NSImage.ImageNamed ("NSFolder");
item.Image.Size = new SizeF (16, 16); Menu.AddItem (item);
menu.AddItem (item);
/* var tmp = new NSMenuItem () {
Title="gnome-design", Enabled = true,
Action = new Selector ("ddd")
}; };
tmp.Activated += delegate {
Console.WriteLine ("DDDD");
};
tmp.Image = NSImage.ImageNamed ("NSFolder"); Menu.AddItem (NSMenuItem.SeparatorItem);
tmp.Image.Size = new SizeF (16, 16);
menu.AddItem (tmp);
menu.AddItem (NSMenuItem.SeparatorItem);
Console.WriteLine (item.Action.Name); SyncMenuItem = new NSMenuItem () {
NSMenuItem sync_menu_item = new NSMenuItem () {
Title = "Sync Remote Folder..." Title = "Sync Remote Folder..."
}; };
sync_menu_item.Activated += delegate { SyncMenuItem.Activated += delegate {
Console.WriteLine ("DDDD");
}; };
menu.AddItem (sync_menu_item); Menu.AddItem (SyncMenuItem);
menu.AddItem (NSMenuItem.SeparatorItem);
NSMenuItem notifications_menu_item = new NSMenuItem () {
Menu.AddItem (NSMenuItem.SeparatorItem);
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