Exemplo n.º 1
0
 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]);
     };
 }
Exemplo n.º 2
0
        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());
        }