public void CreateMenu() { this.menu = new Menu(); this.state_item = new MenuItem(Controller.StateText) { Sensitive = false }; ImageMenuItem folder_item = new SparkleMenuItem("SparkleShare"); folder_item.Image = new Image(SparkleUIHelpers.GetIcon("sparkleshare", 16)); this.menu.Add(this.state_item); this.menu.Add(new SeparatorMenuItem()); this.menu.Add(folder_item); if (Program.Controller.Folders.Count > 0) { int i = 0; foreach (string folder_name in Controller.Folders) { ImageMenuItem item = new SparkleMenuItem(folder_name); Gdk.Pixbuf folder_icon; if (!string.IsNullOrEmpty(Controller.FolderErrors [i])) { folder_icon = IconTheme.Default.LoadIcon("dialog-warning", 16, IconLookupFlags.GenericFallback); item.Submenu = new Menu(); MenuItem error_item = new MenuItem(Controller.FolderErrors [i]) { Sensitive = false }; MenuItem try_again_item = new MenuItem("Try Again"); try_again_item.Activated += Controller.TryAgainDelegate(folder_name); (item.Submenu as Menu).Add(error_item); (item.Submenu as Menu).Add(new SeparatorMenuItem()); (item.Submenu as Menu).Add(try_again_item); } else { folder_icon = IconTheme.Default.LoadIcon("folder", 16, IconLookupFlags.GenericFallback); item.Activated += Controller.OpenFolderDelegate(folder_name); } (item.Child as Label).UseUnderline = false; item.Image = new Image(folder_icon); this.menu.Add(item); i++; } } this.recent_events_item = new MenuItem("Recent Changes…"); this.recent_events_item.Sensitive = Controller.RecentEventsItemEnabled; this.quit_item = new MenuItem("Quit") { Sensitive = Controller.QuitItemEnabled }; MenuItem add_item = new MenuItem("Add Hosted Project…"); MenuItem notify_item; if (Program.Controller.NotificationsEnabled) { notify_item = new MenuItem("Turn Notifications Off"); } else { notify_item = new MenuItem("Turn Notifications On"); } notify_item.Activated += delegate { Program.Controller.ToggleNotifications(); Application.Invoke(delegate { if (Program.Controller.NotificationsEnabled) { (notify_item.Child as Label).Text = "Turn Notifications Off"; } else { (notify_item.Child as Label).Text = "Turn Notifications On"; } }); }; MenuItem link_code_item = new MenuItem("Client ID"); if (Controller.LinkCodeItemEnabled) { link_code_item.Submenu = new Menu(); string link_code = Program.Controller.CurrentUser.PublicKey.Substring(0, 20) + "..."; MenuItem code_item = new MenuItem(link_code) { Sensitive = false }; MenuItem copy_item = new MenuItem("Copy to Clipboard"); copy_item.Activated += delegate { Controller.CopyToClipboardClicked(); }; (link_code_item.Submenu as Menu).Add(code_item); (link_code_item.Submenu as Menu).Add(new SeparatorMenuItem()); (link_code_item.Submenu as Menu).Add(copy_item); } MenuItem about_item = new MenuItem("About SparkleShare"); about_item.Activated += delegate { Controller.AboutClicked(); }; add_item.Activated += delegate { Controller.AddHostedProjectClicked(); }; this.recent_events_item.Activated += delegate { Controller.RecentEventsClicked(); }; this.quit_item.Activated += delegate { Controller.QuitClicked(); }; folder_item.Submenu = new Menu(); (folder_item.Submenu as Menu).Add(this.recent_events_item); (folder_item.Submenu as Menu).Add(add_item); (folder_item.Submenu as Menu).Add(new SeparatorMenuItem()); (folder_item.Submenu as Menu).Add(notify_item); (folder_item.Submenu as Menu).Add(new SeparatorMenuItem()); (folder_item.Submenu as Menu).Add(link_code_item); (folder_item.Submenu as Menu).Add(new SeparatorMenuItem()); (folder_item.Submenu as Menu).Add(about_item); this.menu.Add(new SeparatorMenuItem()); this.menu.Add(this.quit_item); this.menu.ShowAll(); #if HAVE_APP_INDICATOR this.indicator.Menu = this.menu; #endif }
public void CreateMenu() { this.context_menu = new ContextMenu(); this.state_item = new SparkleMenuItem() { Header = Controller.StateText, IsEnabled = false }; Image folder_image = new Image() { Source = SparkleUIHelpers.GetImageSource("sparkleshare-folder"), Width = 16, Height = 16 }; SparkleMenuItem folder_item = new SparkleMenuItem() { Header = "SparkleShare", Icon = folder_image }; SparkleMenuItem add_item = new SparkleMenuItem() { Header = "Add hosted project…" }; this.log_item = new SparkleMenuItem() { Header = "Recent changes…", IsEnabled = Controller.RecentEventsItemEnabled }; SparkleMenuItem link_code_item = new SparkleMenuItem() { Header = "Client ID" }; if (Controller.LinkCodeItemEnabled) { SparkleMenuItem code_item = new SparkleMenuItem(); code_item.Header = Program.Controller.CurrentUser.PublicKey.Substring(0, 20) + "..."; SparkleMenuItem copy_item = new SparkleMenuItem() { Header = "Copy to Clipboard" }; copy_item.Click += delegate { Controller.CopyToClipboardClicked(); }; link_code_item.Items.Add(code_item); link_code_item.Items.Add(new Separator()); link_code_item.Items.Add(copy_item); } CheckBox notify_check_box = new CheckBox() { Margin = new Thickness(6, 0, 0, 0), IsChecked = Program.Controller.NotificationsEnabled }; SparkleMenuItem notify_item = new SparkleMenuItem() { Header = "Notifications" }; notify_item.Icon = notify_check_box; SparkleMenuItem about_item = new SparkleMenuItem() { Header = "About SparkleShare" }; this.exit_item = new SparkleMenuItem() { Header = "Exit" }; add_item.Click += delegate { Controller.AddHostedProjectClicked(); }; this.log_item.Click += delegate { Controller.RecentEventsClicked(); }; about_item.Click += delegate { Controller.AboutClicked(); }; notify_check_box.Click += delegate { this.context_menu.IsOpen = false; Program.Controller.ToggleNotifications(); notify_check_box.IsChecked = Program.Controller.NotificationsEnabled; }; notify_item.Click += delegate { Program.Controller.ToggleNotifications(); notify_check_box.IsChecked = Program.Controller.NotificationsEnabled; }; this.exit_item.Click += delegate { this.notify_icon.Dispose(); Controller.QuitClicked(); }; this.context_menu.Items.Add(this.state_item); this.context_menu.Items.Add(new Separator()); this.context_menu.Items.Add(folder_item); if (Controller.Folders.Length > 0) { int i = 0; foreach (string folder_name in Controller.Folders) { SparkleMenuItem subfolder_item = new SparkleMenuItem() { Header = folder_name.Replace("_", "__") }; Image subfolder_image = new Image() { Source = SparkleUIHelpers.GetImageSource("folder"), Width = 16, Height = 16 }; if (!string.IsNullOrEmpty(Controller.FolderErrors [i])) { subfolder_item.Icon = new Image() { Source = (BitmapSource)Imaging.CreateBitmapSourceFromHIcon( System.Drawing.SystemIcons.Exclamation.Handle, Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(16, 16)) }; SparkleMenuItem error_item = new SparkleMenuItem() { Header = Controller.FolderErrors [i], IsEnabled = false }; SparkleMenuItem try_again_item = new SparkleMenuItem() { Header = "Try again" }; try_again_item.Click += delegate { Controller.TryAgainDelegate(folder_name); }; subfolder_item.Items.Add(error_item); subfolder_item.Items.Add(new Separator()); subfolder_item.Items.Add(try_again_item); } else { subfolder_item.Icon = subfolder_image; subfolder_item.Click += new RoutedEventHandler(Controller.OpenFolderDelegate(folder_name)); } this.context_menu.Items.Add(subfolder_item); i++; } } folder_item.Items.Add(this.log_item); folder_item.Items.Add(add_item); folder_item.Items.Add(new Separator()); folder_item.Items.Add(notify_item); folder_item.Items.Add(new Separator()); folder_item.Items.Add(link_code_item); folder_item.Items.Add(new Separator()); folder_item.Items.Add(about_item); this.context_menu.Items.Add(new Separator()); this.context_menu.Items.Add(this.exit_item); this.notify_icon.ContextMenu = this.context_menu; }
public void CreateMenu() { this.menu = new Menu(); this.state_item = new MenuItem(Controller.StateText) { Sensitive = false }; this.menu.Add(this.state_item); this.menu.Add(new SeparatorMenuItem()); ImageMenuItem folder_item = new SparkleMenuItem("SparkleShare") { Image = new Image(SparkleUIHelpers.GetIcon("folder-sparkleshare", 16)) }; folder_item.Activated += delegate { Controller.SparkleShareClicked(); }; this.menu.Add(folder_item); if (Program.Controller.Folders.Count > 0) { foreach (string folder_name in Controller.Folders) { Gdk.Pixbuf folder_icon; if (Program.Controller.UnsyncedFolders.Contains(folder_name)) { folder_icon = IconTheme.Default.LoadIcon("dialog-error", 16, IconLookupFlags.GenericFallback); } else { folder_icon = IconTheme.Default.LoadIcon("folder", 16, IconLookupFlags.GenericFallback); } ImageMenuItem subfolder_item = new SparkleMenuItem(folder_name) { Image = new Image(folder_icon) }; subfolder_item.Activated += OpenFolderDelegate(folder_name); this.menu.Add(subfolder_item); } Menu submenu = new Menu(); foreach (string folder_name in Controller.OverflowFolders) { Gdk.Pixbuf folder_icon; if (Program.Controller.UnsyncedFolders.Contains(folder_name)) { folder_icon = IconTheme.Default.LoadIcon("dialog-error", 16, IconLookupFlags.GenericFallback); } else { folder_icon = IconTheme.Default.LoadIcon("folder", 16, IconLookupFlags.GenericFallback); } ImageMenuItem subfolder_item = new SparkleMenuItem(folder_name) { Image = new Image(folder_icon) }; subfolder_item.Activated += OpenFolderDelegate(folder_name); submenu.Add(subfolder_item); } if (submenu.Children.Length > 0) { SparkleMenuItem more_item = new SparkleMenuItem("More Projects") { Submenu = submenu }; this.menu.Add(new SeparatorMenuItem()); this.menu.Add(more_item); } } this.menu.Add(new SeparatorMenuItem()); MenuItem sync_item = new MenuItem(_("Add Hosted Project…")); sync_item.Activated += delegate { Controller.AddHostedProjectClicked(); }; this.menu.Add(sync_item); this.recent_events_item = new MenuItem(_("View Recent Changes…")); this.recent_events_item.Sensitive = Controller.OpenRecentEventsItemEnabled; this.recent_events_item.Activated += delegate { Controller.OpenRecentEventsClicked(); }; this.menu.Add(this.recent_events_item); this.menu.Add(new SeparatorMenuItem()); MenuItem notify_item; if (Program.Controller.NotificationsEnabled) { notify_item = new MenuItem(_("Turn Notifications Off")); } else { notify_item = new MenuItem(_("Turn Notifications On")); } notify_item.Activated += delegate { Application.Invoke(delegate { Program.Controller.ToggleNotifications(); if (Program.Controller.NotificationsEnabled) { (notify_item.Child as Label).Text = _("Turn Notifications Off"); } else { (notify_item.Child as Label).Text = _("Turn Notifications On"); } }); }; this.menu.Add(notify_item); this.menu.Add(new SeparatorMenuItem()); MenuItem about_item = new MenuItem(_("About SparkleShare")); about_item.Activated += delegate { Controller.AboutClicked(); }; this.menu.Add(about_item); this.menu.Add(new SeparatorMenuItem()); this.quit_item = new MenuItem(_("Quit")) { Sensitive = Controller.QuitItemEnabled }; this.quit_item.Activated += delegate { Controller.QuitClicked(); }; this.menu.Add(this.quit_item); this.menu.ShowAll(); #if HAVE_APP_INDICATOR this.indicator.Menu = this.menu; #endif }