public StatusIconTray() { tray = new StatusIcon (Utilities.GetIcon (IconName, 24)); tray.Visible = true; tray.Activate += delegate { ToggleTaskWindowAction.Activate (); }; tray.PopupMenu += (sender, e) => { var popupMenu = Menu; popupMenu.ShowAll (); // shows everything tray.PresentMenu (popupMenu, (uint)e.Args [0], (uint)e.Args [1]); }; }
public ConsoleWindow(Instance inst) : base(Gtk.WindowType.Toplevel) { // Build the GUI this.Build(); this.Deletable = false; // If the user has show console on, show the window this.Visible = AppSettings.Main.ShowConsole; // Add a listener for when the instance quits Inst = inst; Inst.InstQuit += OnInstQuit; // Add formatting tags to the text buffer // Base tag TextTag baseTag = new TextTag("base"); baseTag.Font = "Courier New"; ConsoleView.Buffer.TagTable.Add(baseTag); // Standard output tag TextTag stdoutTag = new TextTag("std"); ConsoleView.Buffer.TagTable.Add(stdoutTag); // Error message tag TextTag errorTag = new TextTag("err"); errorTag.ForegroundGdk = new Gdk.Color(255, 0, 0); ConsoleView.Buffer.TagTable.Add(errorTag); // Misc message tag TextTag miscTag = new TextTag("etc"); miscTag.ForegroundGdk = new Gdk.Color(0, 0, 255); ConsoleView.Buffer.TagTable.Add(miscTag); // Listen for output from the instance if (Inst.Running) { AttachOutputListeners(); } else { Inst.InstLaunch += (sender, e) => { AttachOutputListeners(); Message("Instance started"); }; } // Add the tray icon statusIcon = new StatusIcon(Pixbuf.LoadFromResource("MainIcon")); statusIcon.Tooltip = "MultiMC Console"; statusIcon.Activate += (sender, e) => ShowConsole = !ShowConsole; // Make a context menu for the icon Menu trayMenu = new Menu(); // Show / hide console MenuItem showMenuItem = new MenuItem((ShowConsole ? "Hide Console" : "Show Console")); showMenuItem.Activated += (sender, e) => { ShowConsole = !ShowConsole; (showMenuItem.Child as Label).Text = (ShowConsole ? "Hide Console" : "Show Console"); }; trayMenu.Add(showMenuItem); // Kill Minecraft MenuItem killMenuItem = new MenuItem("Kill Minecraft"); killMenuItem.Activated += (sender, e) => { MessageDialog confirmDlg = new MessageDialog(this, DialogFlags.Modal, MessageType.Warning, ButtonsType.OkCancel, "Killing Minecraft can " + "cause you to lose saves " + "and other things. " + "Are you sure?"); confirmDlg.Title = "Warning"; confirmDlg.Response += (object o, ResponseArgs args) => { if (args.ResponseId == ResponseType.Ok) { Inst.InstProcess.Kill(); } confirmDlg.Destroy(); }; confirmDlg.Run(); }; trayMenu.Add(killMenuItem); if (OSUtils.Windows) StyleUtils.DeuglifyMenu(trayMenu); trayMenu.ShowAll(); statusIcon.PopupMenu += (object o, PopupMenuArgs args) => statusIcon.PresentMenu(trayMenu, (uint)args.Args[0], (uint)args.Args[1]); Message("Instance started with command: " + inst.InstProcess.StartInfo.FileName + " " + inst.InstProcess.StartInfo.Arguments.ToString()); }