Пример #1
0
    /// <summary>
    /// Ask if really continue if unsaved changes.
    /// </summary>
    /// <param name="act">What we would do ("quit", "close", "open another file" or such)</param>
    /// <returns>True if continue otherwise false</returns>
    private bool ChangeConfirm(string act)
    {
        if (UndoManager.IsDirty)
        {
            Gtk.MessageDialog md = new Gtk.MessageDialog(MainWindow,
                                                         Gtk.DialogFlags.DestroyWithParent,
                                                         Gtk.MessageType.Warning,
                                                         Gtk.ButtonsType.None,
                                                         "Continue without saving changes?" + Environment.NewLine + Environment.NewLine + "If you " + act + " without saving, changes since the last save will be discarded.");
            md.AddButton(Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
            md.AddButton("Save and close", Gtk.ResponseType.Accept);
            md.AddButton("Discard Changes", Gtk.ResponseType.Yes);

            Gtk.ResponseType result = (Gtk.ResponseType)md.Run();
            md.Destroy();
            if (result == Gtk.ResponseType.Accept)
            {
                Save(false);
                return(true);
            }
            else if (result != Gtk.ResponseType.Yes)
            {
                return(false);
            }
        }
        return(true);
    }
Пример #2
0
        public static bool CloseProject()
        {
            if (Project.Modified) {
                string msg = Catalog.GetString ("Do you want to save the project before closing?");
                Gtk.MessageDialog dlg = new Gtk.MessageDialog (null, Gtk.DialogFlags.Modal, Gtk.MessageType.Question, ButtonsType.None, msg);
                dlg.AddButton (Catalog.GetString ("Close without saving"), Gtk.ResponseType.No);
                dlg.AddButton (Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
                dlg.AddButton (Gtk.Stock.Save, Gtk.ResponseType.Yes);
                Gtk.ResponseType res = (Gtk.ResponseType) dlg.Run ();
                dlg.Destroy ();

                if (res == Gtk.ResponseType.Cancel)
                    return false;

                if (res == Gtk.ResponseType.Yes) {
                    if (!SaveProject ())
                        return false;
                }
            }

            object[] obs = new object [openWindows.Count];
            openWindows.Values.CopyTo (obs, 0);
            foreach (Gtk.Widget page in obs) {
                WidgetNotebook.Remove (page);
                page.Destroy ();
            }

            openWindows.Clear ();

            Project.Close ();
            MainWindow.Title = "Stetic";
            ProjectView.Clear ();
            return true;
        }
Пример #3
0
 private void ShowCertDialog ()
 {
     Logger.Debug ("Showing Cert Dialog: " + Handler.UserMessage);
     CertPolicyHandler.Response ret = CertPolicyHandler.Response.None;
     using (var handle = new AutoResetEvent(false)) {
         Application.Invoke (delegate {
             try {
                 using (MessageDialog md = new MessageDialog (null, DialogFlags.Modal,
                 MessageType.Warning, ButtonsType.None, Handler.UserMessage +
                 "\n\nDo you trust this certificate?") {
                     Title = "Untrusted Certificate"})
                 {
                     using (var noButton = md.AddButton("No", (int)CertPolicyHandler.Response.CertDeny))
                     using (var justNowButton = md.AddButton("Just now", (int)CertPolicyHandler.Response.CertAcceptSession))
                     using (var alwaysButton = md.AddButton("Always", (int)CertPolicyHandler.Response.CertAcceptAlways))
                     {
                         ret = (CertPolicyHandler.Response)md.Run ();
                         md.Destroy ();
                     }
                 }
             } finally {
                 handle.Set ();
             }
         }
         );
         handle.WaitOne ();
     }
     Logger.Debug ("Cert Dialog return:" + ret.ToString ());
     Handler.UserResponse = ret;
 }
Пример #4
0
        private void brisiSveClicked(object sender, EventArgs e)
        {
            if (currentKategorija != null)
            {
                Dialog d = new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Warning, ButtonsType.None, "Time ćete obrisati sve postojeće troškove. Jeste li sigurni da želite obrisati sve troškove u kategoriji " + currentKategorija + "?");
                d.AddButton("Da", Gtk.ResponseType.Yes);
                d.AddButton("Ne", Gtk.ResponseType.No);

                var odgovor = (Gtk.ResponseType)d.Run();


                if (odgovor == Gtk.ResponseType.Yes)
                {
                    d.Destroy();
                    trosakPresenter.brisiSveTroskove(currentKategorija);
                    MessageBox.Popout("Izbrisano", 2, this);
                }
                else
                {
                    d.Destroy();
                }
            }
            else
            {
                MessageBox.Popout("Odaberite kategoriju ukoliko želite\n obrisati sve troškove u kategoriji", 2, this);
            }
        }
Пример #5
0
        void SetLabel()
        {
            Gtk.MessageDialog md = new Gtk.MessageDialog(null,
                                                         0,
                                                         Gtk.MessageType.Question,
                                                         Gtk.ButtonsType.None,
                                                         "<b>" + Catalog.GetString("Set the timer's label to:") + "</b>");
            md.Title = "Docky Timer";
            md.Icon  = DockServices.Drawing.LoadIcon("docky", 22);
            md.Modal = false;

            md.AddButton(Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
            md.AddButton(Catalog.GetString("_Set Label"), Gtk.ResponseType.Ok);
            md.DefaultResponse = Gtk.ResponseType.Ok;

            Gtk.Entry labelEntry = new Gtk.Entry("" + label);
            labelEntry.Activated += delegate {
                Label = labelEntry.Text;
                md.Destroy();
            };
            labelEntry.Show();
            md.VBox.PackEnd(labelEntry);

            md.Response += (o, args) => {
                if (args.ResponseId != Gtk.ResponseType.Cancel)
                {
                    Label = labelEntry.Text;
                }
                md.Destroy();
            };

            md.Show();
        }
Пример #6
0
        public static ResponseType ShowYesNoCancelDialog(Window parent, string message)
        {
            var dialog = new MessageDialog (parent, DialogFlags.Modal, MessageType.Question, ButtonsType.None, message);
            dialog.AddButton ("Close without Saving", (int) ResponseType.No);
            dialog.AddButton ("Cancel", (int) ResponseType.Cancel);
            dialog.AddButton ("Save", (int) ResponseType.Yes);
            ResponseType ret = (ResponseType) dialog.Run ();
            dialog.Destroy ();

            return ret;
        }
Пример #7
0
        static ResponseType PromptEmptyTrash(this Mount m, out MessageDialog dialog)
        {
            dialog = new Gtk.MessageDialog(null, DialogFlags.Modal, MessageType.Question,
                                           ButtonsType.None, EmptyTrashMessage);
            dialog.Title = EmptyTrashTitle;
            dialog.AddButton("Do _not Empty Trash", ResponseType.Reject);
            dialog.AddButton(Gtk.Stock.Cancel, ResponseType.Cancel);
            dialog.AddButton("Empty _Trash", ResponseType.Accept);
            dialog.DefaultResponse = ResponseType.Accept;
            dialog.SkipTaskbarHint = true;

            return((ResponseType)dialog.Run());
        }
Пример #8
0
    protected void showQuestionIzlaz(object sender, EventArgs e)
    {
        Dialog d = new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Question, ButtonsType.None, "Jeste li sigurni da želite izaći iz programa?");

        d.AddButton("Da", Gtk.ResponseType.Yes);
        d.AddButton("Ne", Gtk.ResponseType.No);

        var odgovor = (Gtk.ResponseType)d.Run();

        d.Destroy();
        if (odgovor == ResponseType.Yes)
        {
            Application.Quit();
        }
    }
Пример #9
0
        private void Activated(object sender, EventArgs e)
        {
            // Commit any pending changes
            PintaCore.Tools.Commit ();

            // If it's not dirty, just close it
            if (!PintaCore.Workspace.ActiveDocument.IsDirty) {
                PintaCore.Workspace.CloseActiveDocument ();
                return;
            }

            var primary = Catalog.GetString ("Save the changes to image \"{0}\" before closing?");
            var secondary = Catalog.GetString ("If you don't save, all changes will be permanently lost.");
            var message = string.Format (markup, primary, secondary);

            var md = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal,
                            MessageType.Warning, ButtonsType.None, true,
                            message, System.IO.Path.GetFileName (PintaCore.Workspace.ActiveDocument.Filename));

            // Use the standard button order for each OS.
            if (PintaCore.System.OperatingSystem == OS.Windows) {
                md.AddButton (Stock.Save, ResponseType.Yes);
                md.AddButton (Catalog.GetString ("Close without saving"), ResponseType.No);
                md.AddButton (Stock.Cancel, ResponseType.Cancel);
            }
            else {
                md.AddButton (Catalog.GetString ("Close without saving"), ResponseType.No);
                md.AddButton (Stock.Cancel, ResponseType.Cancel);
                md.AddButton (Stock.Save, ResponseType.Yes);
            }

            // so that user won't accidentally overwrite
            md.DefaultResponse = ResponseType.Cancel;

            ResponseType response = (ResponseType)md.Run ();
            md.Destroy ();

            if (response == ResponseType.Yes) {
                PintaCore.Workspace.ActiveDocument.Save (false);

                // If the image is still dirty, the user
                // must have cancelled the Save dialog
                if (!PintaCore.Workspace.ActiveDocument.IsDirty)
                    PintaCore.Workspace.CloseActiveDocument ();
            } else if (response == ResponseType.No) {
                PintaCore.Workspace.CloseActiveDocument ();
            }
        }
Пример #10
0
        public override bool Execute()
        {
            var message =
            new MessageDialog(null, DialogFlags.DestroyWithParent,
              MessageType.Info, ButtonsType.None,
              Markup.EscapeText(_message));
              if (_continue)
            {
              message.AddButton("Continue", ResponseType.Ok);
            }
              message.AddButton("Stop", ResponseType.Cancel);

              var response = (ResponseType) message.Run();
              message.Destroy();

              return response == ResponseType.Ok;
        }
Пример #11
0
        public static bool ShowDaNe(Window w, MessageType msgType, string message)
        {
            Dialog d = new Gtk.MessageDialog(w, DialogFlags.Modal, msgType, ButtonsType.None, message);

            d.AddButton("Da", Gtk.ResponseType.Yes);
            d.AddButton("Ne", Gtk.ResponseType.No);
            d.SetPosition(WindowPosition.Center);
            d.Icon = Gdk.Pixbuf.LoadFromResource("NewRestoran.images.logo.png");

            ResponseType rt = (ResponseType)d.Run();

            d.Destroy();
            if (rt == ResponseType.Yes)
            {
                return(true);
            }
            return(false);
        }
Пример #12
0
        public static bool ShowYesNo(Window prozor, string message)
        {
            Dialog d = new Gtk.MessageDialog(prozor, DialogFlags.Modal, MessageType.Question, ButtonsType.None, message);

            d.AddButton("Da", Gtk.ResponseType.Yes);
            d.AddButton("Ne", Gtk.ResponseType.No);
            //d.SetPosition(WindowPosition.Center);

            ResponseType rt = (ResponseType)d.Run();

            d.Destroy();

            if (rt == ResponseType.Yes)
            {
                return(true);
            }
            return(false);
        }
Пример #13
0
        protected virtual void OnDeleteDockButtonClicked(object sender, System.EventArgs e)
        {
            if (!(Docky.Controller.Docks.Count() > 1))
            {
                return;
            }

            if (ActiveDock != null)
            {
                Gtk.MessageDialog md = new Gtk.MessageDialog(null,
                                                             0,
                                                             Gtk.MessageType.Warning,
                                                             Gtk.ButtonsType.None,
                                                             "<b><big>" + Catalog.GetString("Delete the currently selected dock?") + "</big></b>");
                md.Icon          = DockServices.Drawing.LoadIcon("docky", 22);
                md.SecondaryText = Catalog.GetString("If you choose to delete the dock, all settings\n" +
                                                     "for the deleted dock will be permanently lost.");
                md.Modal     = true;
                md.KeepAbove = true;
                md.Stick();

                md.AddButton(Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
                md.AddButton(Catalog.GetString("_Delete Dock"), Gtk.ResponseType.Ok);
                md.DefaultResponse = Gtk.ResponseType.Ok;

                if ((ResponseType)md.Run() == Gtk.ResponseType.Ok)
                {
                    ActiveDock.ConfigurationClick -= HandleDockConfigurationClick;
                    ActiveDock.LeaveConfigurationMode();
                    Docky.Controller.DeleteDock(ActiveDock);
                    if (Docky.Controller.Docks.Count() == 1)
                    {
                        ActiveDock = Docky.Controller.Docks.First();
                    }
                    else
                    {
                        ActiveDock = null;
                    }
                }

                md.Destroy();
            }
        }
Пример #14
0
        public static bool CloseProject()
        {
            if (Project.Modified)
            {
                string            msg = Catalog.GetString("Do you want to save the project before closing?");
                Gtk.MessageDialog dlg = new Gtk.MessageDialog(null, Gtk.DialogFlags.Modal, Gtk.MessageType.Question, ButtonsType.None, msg);
                dlg.AddButton(Catalog.GetString("Close without saving"), Gtk.ResponseType.No);
                dlg.AddButton(Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
                dlg.AddButton(Gtk.Stock.Save, Gtk.ResponseType.Yes);
                Gtk.ResponseType res = (Gtk.ResponseType)dlg.Run();
                dlg.Destroy();

                if (res == Gtk.ResponseType.Cancel)
                {
                    return(false);
                }

                if (res == Gtk.ResponseType.Yes)
                {
                    if (!SaveProject())
                    {
                        return(false);
                    }
                }
            }

            object[] obs = new object [openWindows.Count];
            openWindows.Values.CopyTo(obs, 0);
            foreach (Gtk.Widget page in obs)
            {
                WidgetNotebook.Remove(page);
                page.Destroy();
            }

            openWindows.Clear();

            Project.Close();
            MainWindow.Title = "Stetic";
            ProjectView.Clear();
            return(true);
        }
		public static void ShowConfirmationDialog (string title, string text, string icon_name, System.Action action)
		{
			MessageDialog md = new MessageDialog (null, 0, MessageType.Question, ButtonsType.None, text);
			
			md.Title = title;
			md.Image = Image.NewFromIconName (icon_name, Gtk.IconSize.Dialog);
			md.Image.Visible = true;
			md.Image.Show ();
			
			md.AddButton (Stock.Cancel, ResponseType.Cancel);
			md.AddButton (title, ResponseType.Ok);
			md.DefaultResponse = ResponseType.Ok;
			
			md.Response += (o, args) => { 
				if (args.ResponseId == ResponseType.Ok)
					action.Invoke ();
				md.Destroy ();
			};
			
			md.Show ();
		}
Пример #16
0
    protected void showCustomQuestion(object sender, EventArgs e)
    {
        // instanciranje dijaloga sa posebno definiranim gumbima
        // ButtonsType.None označuje da ne želimo koristiti preddefinirane gumbe
        Dialog d = new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Question, ButtonsType.None, "Odgovorite na pitanje");

        // Dodaj button "da" i poveži ga na pozitivan odgovor
        d.AddButton("Da", Gtk.ResponseType.Yes);

        // Dodaj button "ne" i poveži ga s negatvnim odgovorom
        d.AddButton("Ne", Gtk.ResponseType.No);

        // Još button za odustajanje
        d.AddButton("Odustani", Gtk.ResponseType.Cancel);

        // metoda koja prikazuje dijalog i čeka povratni odgovor korisnika
        // Tip koji metoda Run vraća je int te ga pretvaramo u Gtk.ResponseType enumeraciju da ga možemo isčitati
        var odgovor = (Gtk.ResponseType)d.Run();

        if (odgovor == Gtk.ResponseType.Yes)
        {
            lOdgovor2.Text = "Da";
        }
        else if (odgovor == Gtk.ResponseType.No)
        {
            lOdgovor2.Text = "Ne";
        }
        else if (odgovor == Gtk.ResponseType.Cancel)
        {
            lOdgovor2.Text = "Korisnik je odustao";
        }
        else
        {
            lOdgovor2.Text = "Korisnik je zatvorio dijalog";
        }

        // nakon što korisnik odgovori, sakrij dijalog
        d.Destroy();
    }
Пример #17
0
        protected void brisiClicked(object sender, EventArgs e)
        {
            Dialog d = new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Question, ButtonsType.None, "Jeste li sigurni da želite izbrisati trošak?");

            d.AddButton("Da", Gtk.ResponseType.Yes);
            d.AddButton("Ne", Gtk.ResponseType.No);

            var odgovor = (Gtk.ResponseType)d.Run();


            if (odgovor == Gtk.ResponseType.Yes)
            {
                presenter.brisiTrosak(trosakPresenter);

                d.Destroy();
                MessageBox.Popout("Trošak izbrisan", 1, TransientFor);
                Destroy();
            }
            else
            {
                d.Destroy();
            }
        }
Пример #18
0
		public System.Windows.Forms.DialogResult ShowSavePendingChangesDialog()
		{
			Gtk.MessageDialog dlg = new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Question,
				ButtonsType.None, false, "Save pending changes?");
			dlg.AddButton ("Yes", ResponseType.Yes);
			dlg.AddButton ("No", ResponseType.No);
			dlg.AddButton("Cancel", ResponseType.Cancel);
			
			int response = dlg.Run();
			dlg.Destroy();

			switch ((ResponseType)response)
			{
				case ResponseType.Yes:
					return System.Windows.Forms.DialogResult.Yes;
				case ResponseType.No:
					return System.Windows.Forms.DialogResult.No;
				case ResponseType.Cancel:
				case ResponseType.DeleteEvent: // dialog close button
					return System.Windows.Forms.DialogResult.Cancel;
				default: // should never happen
					return System.Windows.Forms.DialogResult.Abort;
			}
		}
Пример #19
0
    protected void showQuestionAktivnost(object sender, EventArgs e)
    {
        var selectedNodeAktivnostKorisnika = (AktKorisnikaNode)nodeviewAktivnostiKorisnika.NodeSelection.SelectedNode;

        if (selectedNodeAktivnostKorisnika != null)
        {
            Dialog d = new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Question, ButtonsType.None, "Jeste li sigurni da želite obrisati aktivnost?");

            d.AddButton("Da", Gtk.ResponseType.Yes);
            d.AddButton("Ne", Gtk.ResponseType.No);

            var odgovor = (Gtk.ResponseType)d.Run();

            if (odgovor == ResponseType.Yes)
            {
                if (Baza.DbProvjeriIdAktivnostiKorisnika(selectedNodeAktivnostKorisnika.id))
                {
                    Baza.BrisiAktivnostKorisnika(selectedNodeAktivnostKorisnika.id);
                    aktKorisnikPresenter.Brisi(selectedNodeAktivnostKorisnika);
                }
            }
            d.Destroy();
        }
    }
Пример #20
0
    protected void showQuestionTip(object sender, EventArgs e)
    {
        var selectedNodeTipAktivnosti = (TipAktivnostiNode)nodeviewTip.NodeSelection.SelectedNode;

        if (selectedNodeTipAktivnosti != null)
        {
            Dialog d = new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Question, ButtonsType.None, "Jeste li sigurni da želite obrisati tip aktivnosti?");

            d.AddButton("Da", Gtk.ResponseType.Yes);
            d.AddButton("Ne", Gtk.ResponseType.No);

            var odgovor = (Gtk.ResponseType)d.Run();

            if (odgovor == ResponseType.Yes)
            {
                if (Baza.DbProvjeriIdTipaAktivnosti(selectedNodeTipAktivnosti.id))
                {
                    Baza.BrisiTipAktivnosti(selectedNodeTipAktivnosti.id);
                    tipPresenter.Brisi(selectedNodeTipAktivnosti);
                }
            }
            d.Destroy();
        }
    }
Пример #21
0
        private void ClipboardEmptyError()
        {
            var primary = Catalog.GetString ("Paste cancelled");
            var secondary = Catalog.GetString ("The clipboard does not contain an image");
            var markup = "<span weight=\"bold\" size=\"larger\">{0}</span>\n\n{1}\n";
            markup = string.Format (markup, primary, secondary);

            var md = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal,
                            MessageType.Error, ButtonsType.None, true,
                            markup);

            md.AddButton (Stock.Ok, ResponseType.Yes);

            md.Run ();
            md.Destroy ();
        }
Пример #22
0
        public override WindowResponse Show(object parent, string message, string title, MessageWindowType type, MessageWindowButtons bType)
        {
            Window p = (Window)parent;
            MessageType t = GtkHelper.GetWinType(type);

            MessageDialog md = new MessageDialog(p, DialogFlags.Modal, t, ButtonsType.None, message);
            md.Title = title;
            if (p != null && p.Icon != null) { md.Icon = p.Icon; }
            md.WindowPosition = WindowPosition.CenterOnParent;

            if (bType == MessageWindowButtons.Ok || bType == MessageWindowButtons.OkCancel) md.AddButton(Message.GetString("Ok"), ResponseType.Ok);
            if (bType == MessageWindowButtons.Close) md.AddButton(Message.GetString("Close"), ResponseType.Close);
            if (bType == MessageWindowButtons.YesNo || bType == MessageWindowButtons.YesNoCancel) { md.AddButton(Message.GetString("Yes"), ResponseType.Yes); md.AddButton(Message.GetString("No"), ResponseType.No); }
            if (bType == MessageWindowButtons.AbortRetryIgnore || bType == MessageWindowButtons.RetryCancel) md.AddButton(Message.GetString("Retry"), ResponseType.Accept);
            if (bType == MessageWindowButtons.AbortRetryIgnore) md.AddButton(Message.GetString("Ignore"), ResponseType.Reject);
            if (bType == MessageWindowButtons.Cancel || bType == MessageWindowButtons.OkCancel || bType == MessageWindowButtons.RetryCancel || bType == MessageWindowButtons.YesNoCancel || bType == MessageWindowButtons.AbortRetryIgnore) md.AddButton(Message.GetString("Cancel"), ResponseType.Cancel);

            ResponseType result = (ResponseType)md.Run();
            md.Destroy();
            return GtkHelper.GetResponse(result);
        }
Пример #23
0
        private bool ConfirmReplaceImage()
        {
            bool canceled = false;

            if (PintaCore.Workspace.IsDirty) {
                var primary = Catalog.GetString ("Save the changes to image \"{0}\" before creating a new one?");
                var secondary = Catalog.GetString ("If you don't save, all changes will be permanently lost.");
                var markup = "<span weight=\"bold\" size=\"larger\">{0}</span>\n\n{1}\n";
                markup = string.Format (markup, primary, secondary);

                var md = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal,
                                            MessageType.Question, ButtonsType.None, true,
                                            markup,
                                            System.IO.Path.GetFileName (PintaCore.Workspace.Filename));

                md.AddButton (Catalog.GetString ("Continue without saving"), ResponseType.No);
                md.AddButton (Stock.Cancel, ResponseType.Cancel);
                md.AddButton (Stock.Save, ResponseType.Yes);

                md.DefaultResponse = ResponseType.Cancel;
                md.AlternativeButtonOrder = new int[] { (int) ResponseType.Yes, (int) ResponseType.No, (int) ResponseType.Cancel };

                ResponseType saveResponse = (ResponseType)md.Run ();
                md.Destroy ();

                if (saveResponse == ResponseType.Yes) {
                    PintaCore.Actions.File.Save.Activate ();
                }
                else {
                    canceled = saveResponse == ResponseType.Cancel;
                }
            }

            return !canceled;
        }
Пример #24
0
        private void HandlePintaCoreActionsFileOpenActivated(object sender, EventArgs e)
        {
            bool canceled = false;

            if (PintaCore.Workspace.IsDirty) {
                var primary = Catalog.GetString ("Save the changes to image \"{0}\" before opening a new image?");
                var secondary = Catalog.GetString ("If you don't save, all changes will be permanently lost.");
                var markup = "<span weight=\"bold\" size=\"larger\">{0}</span>\n\n{1}\n";
                markup = string.Format (markup, primary, secondary);

                var md = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal,
                                            MessageType.Question, ButtonsType.None, true,
                                            markup,
                                            System.IO.Path.GetFileName (PintaCore.Workspace.Filename));

                md.AddButton (Catalog.GetString ("Continue without saving"), ResponseType.No);
                md.AddButton (Stock.Cancel, ResponseType.Cancel);
                md.AddButton (Stock.Save, ResponseType.Yes);

                md.DefaultResponse = ResponseType.Cancel;

                ResponseType response = (ResponseType)md.Run ();
                md.Destroy ();

                if (response == ResponseType.Yes) {
                    Save.Activate ();
                }
                else {
                    canceled = response == ResponseType.Cancel;
                }
            }

            if (!canceled) {
                var fcd = new Gtk.FileChooserDialog (Catalog.GetString ("Open Image File"), PintaCore.Chrome.MainWindow,
                                                        FileChooserAction.Open, Gtk.Stock.Cancel, Gtk.ResponseType.Cancel,
                                                        Gtk.Stock.Open, Gtk.ResponseType.Ok);

                // Add image files filter
                FileFilter ff = new FileFilter ();
                ff.AddPixbufFormats ();
                ff.AddPattern ("*.ora");
                ff.Name = Catalog.GetString ("Image files");
                fcd.AddFilter (ff);

                FileFilter ff2 = new FileFilter ();
                ff2.Name = Catalog.GetString ("All files");
                ff2.AddPattern ("*.*");
                fcd.AddFilter (ff2);

                fcd.SetCurrentFolder (lastDialogDir);

                int response = fcd.Run ();

                if (response == (int)Gtk.ResponseType.Ok) {
                    lastDialogDir = fcd.CurrentFolder;

                    if (OpenFile (fcd.Filename)) {
                        AddRecentFileUri (fcd.Uri);

                        PintaCore.Workspace.ActiveDocument.HasFile = true;
                    }
                }

                fcd.Destroy ();
            }
        }
Пример #25
0
        private void HandlePintaCoreActionsFileExitActivated(object sender, EventArgs e)
        {
            bool canceled = false;

            if (PintaCore.Workspace.IsDirty) {
                var primary = Catalog.GetString ("Save the changes to image \"{0}\" before closing?");
                var secondary = Catalog.GetString ("If you don't save, all changes will be permanently lost.");
                var markup = "<span weight=\"bold\" size=\"larger\">{0}</span>\n\n{1}\n";
                markup = string.Format (markup, primary, secondary);

                var md = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal,
                                            MessageType.Question, ButtonsType.None, true,
                                            markup,
                                            System.IO.Path.GetFileName (PintaCore.Workspace.Filename));

                md.AddButton (Catalog.GetString ("Close without saving"), ResponseType.No);
                md.AddButton (Stock.Cancel, ResponseType.Cancel);
                md.AddButton (Stock.Save, ResponseType.Yes);

                // so that user won't accidentally overwrite
                md.DefaultResponse = ResponseType.Cancel;

                ResponseType response = (ResponseType)md.Run ();
                md.Destroy ();

                if (response == ResponseType.Yes) {
                    Save.Activate ();
                }
                else {
                    canceled = response == ResponseType.Cancel;
                }
            }

            if (!canceled) {
                if (BeforeQuit != null)
                    BeforeQuit (this, EventArgs.Empty);

                PintaCore.History.Clear ();
                (PintaCore.Layers.SelectionPath as IDisposable).Dispose ();
                Application.Quit ();
            }
        }
Пример #26
0
        private void HandleOpenRecentItemActivated(object sender, EventArgs e)
        {
            bool canceled = false;

            if (PintaCore.Workspace.IsDirty) {
                var primary = Catalog.GetString ("Save the changes to image \"{0}\" before opening a new image?");
                var secondary = Catalog.GetString ("If you don't save, all changes will be permanently lost.");
                var markup = "<span weight=\"bold\" size=\"larger\">{0}</span>\n\n{1}\n";
                markup = string.Format (markup, primary, secondary);

                var md = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal,
                                            MessageType.Question, ButtonsType.None, true,markup,
                                            System.IO.Path.GetFileName (PintaCore.Workspace.Filename));

                md.AddButton (Catalog.GetString ("Continue without saving"), ResponseType.No);
                md.AddButton (Stock.Cancel, ResponseType.Cancel);
                md.AddButton (Stock.Save, ResponseType.Yes);

                md.DefaultResponse = ResponseType.Cancel;

                var response = (ResponseType)md.Run ();
                md.Destroy ();

                if (response == ResponseType.Yes) {
                    Save.Activate ();
                }
                else {
                    canceled = response == ResponseType.Cancel;
                }
            }

            if (!canceled) {
                string fileUri = (sender as RecentAction).CurrentUri;

                OpenFile (new Uri (fileUri).LocalPath);

                PintaCore.Workspace.ActiveDocument.HasFile = true;
            }
        }
Пример #27
0
        public UserResponse ShowCertDialog(String msg) {
            Logger.Debug("Showing Cert Dialog: " + msg);
            UserResponse ret = UserResponse.None;
            ManualResetEvent ev = new ManualResetEvent(false);
#if __MonoCS__
            Application.Invoke(delegate {
                    MessageDialog md = new MessageDialog (null, DialogFlags.Modal,
                        MessageType.Warning, ButtonsType.None, msg +
                        "\n\nDo you trust this certificate?") {
                        Title = "Untrusted Certificate"
                    };
                    md.AddButton("No", (int)UserResponse.CertDeny);
                    md.AddButton("Just now", (int)UserResponse.CertAcceptSession);
                    md.AddButton("Always", (int)UserResponse.CertAcceptAlways);
                    ret = (UserResponse)md.Run();
                    md.Destroy();
                    ev.Set();
            });
#else
                    var r = MessageBox.Show(msg +
                        "\n\n"+ Properties_Resources.DoYouTrustTheCertificate,
                        Properties_Resources.UntrustedCertificate, MessageBoxButton.YesNoCancel, MessageBoxImage.Warning);
                    switch (r) {
                        case MessageBoxResult.Yes:
                            ret = UserResponse.CertAcceptAlways;
                            break;
                        case MessageBoxResult.No:
                            ret = UserResponse.CertDeny;
                            break;
                        case MessageBoxResult.Cancel:
                            ret = UserResponse.CertAcceptSession;
                            break;
                    }
                    ev.Set();
#endif
            ev.WaitOne();
            Logger.Debug("Cert Dialog return:" + ret.ToString());
            return ret;
        }
Пример #28
0
        private void HandlerPintaCoreActionsEditPasteActivated(object sender, EventArgs e)
        {
            Document doc = PintaCore.Workspace.ActiveDocument;

            PintaCore.Tools.Commit ();

            Gtk.Clipboard cb = Gtk.Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));

            Path p;

            // Don't dispose this, as we're going to give it to the history
            Gdk.Pixbuf image = cb.WaitForImage ();

            if (image == null)
                return;

            Gdk.Size canvas_size = PintaCore.Workspace.ImageSize;

            // If the image being pasted is larger than the canvas size, allow the user to optionally resize the canvas
            if (image.Width > canvas_size.Width || image.Height > canvas_size.Height)
            {
                string message = Catalog.GetString ("The image being pasted is larger than the canvas size. What would you like to do?");

                var enlarge_dialog = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal, MessageType.Question, ButtonsType.None, message);
                enlarge_dialog.AddButton (Catalog.GetString ("Expand canvas"), ResponseType.Accept);
                enlarge_dialog.AddButton (Catalog.GetString ("Don't change canvas size"), ResponseType.Reject);
                enlarge_dialog.AddButton (Stock.Cancel, ResponseType.Cancel);
                enlarge_dialog.DefaultResponse = ResponseType.Accept;

                ResponseType response = (ResponseType)enlarge_dialog.Run ();
                enlarge_dialog.Destroy ();

                if (response == ResponseType.Accept)
                {
                    PintaCore.Workspace.ResizeCanvas (image.Width, image.Height, Pinta.Core.Anchor.Center);
                    PintaCore.Actions.View.UpdateCanvasScale ();
                }
                else if (response == ResponseType.Cancel || response == ResponseType.DeleteEvent)
                {
                    return;
                }
            }

            // Copy the paste to the temp layer
            doc.CreateSelectionLayer ();
            doc.ShowSelectionLayer = true;

            using (Cairo.Context g = new Cairo.Context (doc.SelectionLayer.Surface)) {
                g.DrawPixbuf (image, new Cairo.Point (0, 0));
                p = g.CreateRectanglePath (new Rectangle (0, 0, image.Width, image.Height));
            }

            PintaCore.Tools.SetCurrentTool (Catalog.GetString ("Move Selected Pixels"));

            Path old_path = doc.SelectionPath;
            bool old_show_selection = doc.ShowSelection;

            doc.SelectionPath = p;
            doc.ShowSelection = true;

            doc.Workspace.Invalidate ();

            doc.History.PushNewItem (new PasteHistoryItem (image, old_path, old_show_selection));
        }
Пример #29
0
        private void HandlePintaCoreActionsFileCloseActivated(object sender, EventArgs e)
        {
            if (PintaCore.Workspace.ActiveDocument.IsDirty) {
                var primary = Catalog.GetString ("Save the changes to image \"{0}\" before closing?");
                var secondary = Catalog.GetString ("If you don't save, all changes will be permanently lost.");
                var message = string.Format (markup, primary, secondary);

                var md = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal,
                                MessageType.Question, ButtonsType.None, true,
                                message, System.IO.Path.GetFileName (PintaCore.Workspace.ActiveDocument.Filename));

                md.AddButton (Catalog.GetString ("Close without saving"), ResponseType.No);
                md.AddButton (Stock.Cancel, ResponseType.Cancel);
                md.AddButton (Stock.Save, ResponseType.Yes);

                // so that user won't accidentally overwrite
                md.DefaultResponse = ResponseType.Cancel;

                ResponseType response = (ResponseType)md.Run ();
                md.Destroy ();

                if (response == ResponseType.Yes) {
                    PintaCore.Actions.File.Save.Activate ();

                    // If the image is still dirty, the user
                    // must have cancelled the Save dialog
                    if (!PintaCore.Workspace.ActiveDocument.IsDirty)
                        PintaCore.Workspace.CloseActiveDocument ();
                } else if (response == ResponseType.No) {
                    PintaCore.Workspace.CloseActiveDocument ();
                }
            } else {
                PintaCore.Workspace.CloseActiveDocument ();
            }
        }
Пример #30
0
        public AskResult AskSaveOrCancel ()
        {
            var dialog = new MessageDialog(this, DialogFlags.Modal, MessageType.Question, ButtonsType.None, "Do you want to save the project first?");
            dialog.Title = "Save";

            dialog.AddButton("No", (int)ResponseType.No);
            dialog.AddButton("Cancel", (int)ResponseType.Cancel);
            dialog.AddButton("Save", (int)ResponseType.Yes);

            var result = dialog.Run ();
            dialog.Destroy ();

            if (result == (int)ResponseType.Yes)
                return AskResult.Yes;
            else if (result == (int)ResponseType.No)
                return AskResult.No;

            return AskResult.Cancel;
        }
Пример #31
0
		public override void AskYesNoQuestion (string title, string message, Gdk.Pixbuf icon,
				string ok_string, string cancel_string,
				EventHandler ok_handler, EventHandler cancel_handler)
		{
			MessageDialog dialog = new MessageDialog (null, DialogFlags.DestroyWithParent | DialogFlags.Modal,
					MessageType.Other, ButtonsType.None, true, null);

			dialog.UseMarkup = true;
			dialog.Title = "Giver";
			if (!String.IsNullOrEmpty (title))
				dialog.Text = "<b>" + title + "</b>";
			dialog.SecondaryText = message;
			if (icon != null) {
				dialog.Image = new Image (icon);
				dialog.Image.Show ();
			}

			dialog.AddButton (cancel_string, ResponseType.No);
			dialog.AddButton (ok_string, ResponseType.Yes);
			dialog.DefaultResponse = ResponseType.Yes;

			dialog.Response += delegate (object o, ResponseArgs args) {
				if (args.ResponseId == ResponseType.Yes && ok_handler != null)
					ok_handler (null, null);
				else if (args.ResponseId == ResponseType.No && cancel_handler != null)
					cancel_handler (null, null);
			};

			dialog.Close += delegate {
				if (cancel_handler != null)
					cancel_handler (null, null);
			};

			dialog.Run ();
			dialog.Destroy ();
		}
Пример #32
0
    /// <summary>
    /// Ask if really continue if unsaved changes.
    /// </summary>
    /// <param name="act">What we would do ("quit", "close", "open another file" or such)</param>
    /// <returns>True if continue otherwise false</returns>
    private bool ChangeConfirm(string act)
    {
        if( UndoManager.IsDirty ) {
            Gtk.MessageDialog md = new Gtk.MessageDialog (MainWindow,
                                                  Gtk.DialogFlags.DestroyWithParent,
                                                  Gtk.MessageType.Warning,
                                                  Gtk.ButtonsType.None,
                                                  "Continue without saving changes?"+ Environment.NewLine + Environment.NewLine +"If you " + act + " without saving, changes since the last save will be discarded.");
            md.AddButton(Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
            md.AddButton("Save and close", Gtk.ResponseType.Accept);
            md.AddButton("Discard Changes", Gtk.ResponseType.Yes);

            Gtk.ResponseType result = (Gtk.ResponseType)md.Run ();
            md.Destroy();
            if (result == Gtk.ResponseType.Accept) {
                Save(false);
                return true;
            } else if (result != Gtk.ResponseType.Yes) {
                return false;
            }
        }
        return true;
    }
		private bool ConfirmOverwrite (FileChooserDialog fcd, string file)
		{
			string primary = Catalog.GetString ("A file named \"{0}\" already exists. Do you want to replace it?");
			string secondary = Catalog.GetString ("The file already exists in \"{1}\". Replacing it will overwrite its contents.");
			string message = string.Format (markup, primary, secondary);

			MessageDialog md = new MessageDialog (fcd, DialogFlags.Modal | DialogFlags.DestroyWithParent,
				MessageType.Question, ButtonsType.None,
				true, message, System.IO.Path.GetFileName (file), fcd.CurrentFolder);

			md.AddButton (Stock.Cancel, ResponseType.Cancel);
			md.AddButton (Stock.Save, ResponseType.Ok);
			md.DefaultResponse = ResponseType.Cancel;
			md.AlternativeButtonOrder = new int[] { (int)ResponseType.Ok, (int)ResponseType.Cancel };

			int response = md.Run ();
			md.Destroy ();

			return response == (int)ResponseType.Ok;
		}
Пример #34
0
 public void on_btnDelete_clicked(object o, EventArgs args)
 {
     dialog = new MessageDialog (winMainWindow, DialogFlags.DestroyWithParent,MessageType.Question,ButtonsType.None, "Are you sure you want to delete " + GetSelectedSite());
     dialog.Modal = true;
     dialog.AddButton ("Cancel", Gtk.ResponseType.Cancel);
     dialog.AddButton ("Delete", Gtk.ResponseType.Ok);
     dialog.Response += new ResponseHandler (on_dialog_response);
        	dialog.Run ();
     dialog.Destroy ();
 }
Пример #35
0
		private ResponseType ShowExpandCanvasDialog ()
		{
			const string markup = "<span weight=\"bold\" size=\"larger\">{0}</span>\n\n{1}";
			string primary = Catalog.GetString ("Image larger than canvas");
			string secondary = Catalog.GetString ("The image being pasted is larger than the canvas size. What would you like to do?");
			string message = string.Format (markup, primary, secondary);

			var enlarge_dialog = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal, MessageType.Question, ButtonsType.None, message);
			enlarge_dialog.AddButton (Catalog.GetString ("Expand canvas"), ResponseType.Accept);
			enlarge_dialog.AddButton (Catalog.GetString ("Don't change canvas size"), ResponseType.Reject);
			enlarge_dialog.AddButton (Stock.Cancel, ResponseType.Cancel);
			enlarge_dialog.DefaultResponse = ResponseType.Accept;

			ResponseType response = (ResponseType)enlarge_dialog.Run ();

			enlarge_dialog.Destroy ();

			return response;
		}
Пример #36
0
		static ResponseType PromptEmptyTrash (this Mount m, out MessageDialog dialog)
		{
			dialog = new Gtk.MessageDialog (null, DialogFlags.Modal, MessageType.Question, 
				ButtonsType.None, EmptyTrashMessage);
			dialog.Title = EmptyTrashTitle;
			dialog.AddButton ("Do _not Empty Trash", ResponseType.Reject);
			dialog.AddButton (Gtk.Stock.Cancel, ResponseType.Cancel);
			dialog.AddButton ("Empty _Trash", ResponseType.Accept);
			dialog.DefaultResponse = ResponseType.Accept;
			dialog.SkipTaskbarHint = true;

			return (ResponseType) dialog.Run ();
		}
        public void AddFilesToProject()
        {
            Project project = CurrentNode.GetParentDataItem (typeof(Project), true) as Project;

            using (FileSelector fdiag  = new FileSelector (GettextCatalog.GetString ("Add files"))) {
                fdiag.SelectMultiple = true;

                int result = fdiag.Run ();
                try {
                    if (result != (int) ResponseType.Ok)
                        return;

                    int action = -1;
                    foreach (string file in fdiag.Filenames) {
                        if (file.StartsWith (project.BaseDirectory)) {
                            MoveCopyFile (project, CurrentNode, file, true, true);
                        } else {
                            using (MessageDialog md = new MessageDialog (
                                 (Window) WorkbenchSingleton.Workbench,
                                 DialogFlags.Modal | DialogFlags.DestroyWithParent,
                                 MessageType.Question, ButtonsType.None,
                                 String.Format (GettextCatalog.GetString ("{0} is outside the project directory, what should I do?"), file)))
                            {
                                CheckButton remember = null;
                                if (fdiag.Filenames.Length > 1) {
                                    remember = new CheckButton (GettextCatalog.GetString ("Use the same action for all selected files."));
                                    md.VBox.PackStart (remember, false, false, 0);
                                }
                                md.AddButton (Gtk.Stock.Copy, 1);
                                md.AddButton (GettextCatalog.GetString ("_Move"), 2);
                                md.AddButton (Gtk.Stock.Cancel, ResponseType.Cancel);
                                md.VBox.ShowAll ();

                                int ret = -1;
                                if (action < 0) {
                                    ret = md.Run ();
                                    md.Hide ();
                                    if (ret < 0) return;
                                    if (remember != null && remember.Active) action = ret;
                                } else {
                                    ret = action;
                                }

                                try {
                                    MoveCopyFile (project, CurrentNode, file, ret == 2, false);
                                }
                                catch (Exception ex) {
                                    Runtime.MessageService.ShowError (ex, GettextCatalog.GetString ("An error occurred while attempt to move/copy that file. Please check your permissions."));
                                }
                            }
                        }
                    }
                } finally {
                    fdiag.Hide ();
                }
            }
        }
Пример #38
0
		void SetLabel ()
		{
			Gtk.MessageDialog md = new Gtk.MessageDialog (null, 
					  0,
					  Gtk.MessageType.Question, 
					  Gtk.ButtonsType.None,
					  "<b>" + Catalog.GetString ("Set the timer's label to:") + "</b>");
			md.Title = "Docky Timer";
			md.Icon = DockServices.Drawing.LoadIcon ("docky", 22);
			md.Modal = false;
			
			md.AddButton (Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
			md.AddButton (Catalog.GetString ("_Set Label"), Gtk.ResponseType.Ok);
			md.DefaultResponse = Gtk.ResponseType.Ok;
			
			Gtk.Entry labelEntry = new Gtk.Entry ("" + label);
			labelEntry.Activated += delegate {
				Label = labelEntry.Text;
				md.Destroy ();
			};
			labelEntry.Show ();
			md.VBox.PackEnd (labelEntry);

			md.Response += (o, args) => {
				if (args.ResponseId != Gtk.ResponseType.Cancel)
					Label = labelEntry.Text;
				md.Destroy ();
			};
			
			md.Show ();
		}
        private void OnMirageDuplicateSearchHandler(object sender, EventArgs args)
        {
            MessageDialog md = new MessageDialog (null, DialogFlags.Modal, MessageType.Question,
                    ButtonsType.Cancel, AddinManager.CurrentLocalizer.GetString (
                        "<b>Mirage can search your music library for duplicate music pieces.</b>\n\n"+
                        "· To do so, your music library needs to be analyzed completely from Mirage.\n" +
                        "· This process will take a long time depending on the size of your library."));
            md.AddButton (AddinManager.CurrentLocalizer.GetString ("Scan for Duplicates"), ResponseType.Yes);
            ResponseType result = (ResponseType)md.Run();
            md.Destroy();

            if (result == ResponseType.Yes) {
                try {
                    DuplicateSearch();
                } catch (Exception) {
                    Log.Warning("Mirage - Error scanning for duplicates.");
                }
            }
        }
Пример #40
0
        private void HandlerPintaCoreActionsEditPasteIntoNewImageActivated(object sender, EventArgs e)
        {
            Gtk.Clipboard cb = Gtk.Clipboard.Get(Gdk.Atom.Intern("CLIPBOARD", false));

            if (cb.WaitIsImageAvailable())
            {
                bool canceled = false;

                Gdk.Pixbuf image = cb.WaitForImage();

                Gdk.Size size = new Gdk.Size(image.Width, image.Height);

                if (PintaCore.Workspace.IsDirty)
                {
                    var primary = Catalog.GetString("Save the changes to image \"{0}\" before creating a new image?");
                    var secondary = Catalog.GetString("If you don't save, all changes will be permanently lost.");
                    var markup = "<span weight=\"bold\" size=\"larger\">{0}</span>\n\n{1}\n";
                    markup = string.Format(markup, primary, secondary);

                    var md = new MessageDialog(PintaCore.Chrome.MainWindow, DialogFlags.Modal,
                                                MessageType.Question, ButtonsType.None, true,
                                                markup,
                                                System.IO.Path.GetFileName(PintaCore.Workspace.Filename));

                    md.AddButton(Catalog.GetString("Close without saving"), ResponseType.No);
                    md.AddButton(Stock.Cancel, ResponseType.Cancel);
                    md.AddButton(Stock.Save, ResponseType.Yes);

                    // so that user won't accidentally overwrite
                    md.DefaultResponse = ResponseType.Cancel;

                    ResponseType response = (ResponseType)md.Run();
                    md.Destroy();

                    if (response == ResponseType.Yes)
                    {
                        PintaCore.Actions.File.Save.Activate();
                    }
                    else
                    {
                        canceled = response == ResponseType.Cancel;
                    }

                    PintaCore.Actions.File.NewFile(size);
                }
                else
                {
                    PintaCore.Workspace.ResizeImage(image.Width, image.Height);
                }

                PintaCore.Layers.FinishSelection();

                Cairo.ImageSurface old = PintaCore.Layers.CurrentLayer.Surface.Clone();

                Path p;

                using (Cairo.Context g = new Cairo.Context(PintaCore.Layers.CurrentLayer.Surface))
                {
                    g.DrawPixbuf(image, new Cairo.Point(0, 0));
                    p = g.CreateRectanglePath(new Rectangle(0, 0, image.Width, image.Height));
                }

                PintaCore.Workspace.Invalidate();

                PintaCore.History.PushNewItem(new SimpleHistoryItem(Stock.Paste, Catalog.GetString("Paste into new image"), old, PintaCore.Layers.CurrentLayerIndex));
            }
            else
            {
                ClipboardEmptyError();
            }
        }
		protected virtual void OnDeleteDockButtonClicked (object sender, System.EventArgs e)
		{
			if (!(Docky.Controller.Docks.Count () > 1))
				return;
			
			if (ActiveDock != null) {
				Gtk.MessageDialog md = new Gtk.MessageDialog (null, 
						  0,
						  Gtk.MessageType.Warning, 
						  Gtk.ButtonsType.None,
						  "<b><big>" + Catalog.GetString ("Delete the currently selected dock?") + "</big></b>");
				md.Icon = DockServices.Drawing.LoadIcon ("docky", 22);
				md.SecondaryText = Catalog.GetString ("If you choose to delete the dock, all settings\n" +
					"for the deleted dock will be permanently lost.");
				md.Modal = true;
				md.KeepAbove = true;
				md.Stick ();
				
				md.AddButton (Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
				md.AddButton (Catalog.GetString ("_Delete Dock"), Gtk.ResponseType.Ok);
				md.DefaultResponse = Gtk.ResponseType.Ok;
			
				if ((ResponseType)md.Run () == Gtk.ResponseType.Ok) {
					ActiveDock.ConfigurationClick -= HandleDockConfigurationClick;
					ActiveDock.LeaveConfigurationMode ();
					Docky.Controller.DeleteDock (ActiveDock);
					if (Docky.Controller.Docks.Count () == 1)
						ActiveDock = Docky.Controller.Docks.First ();
					else
						ActiveDock = null;
				}
				
				md.Destroy ();
			}
		}
        private void OnMirageResetHandler(object sender, EventArgs args)
        {
            MessageDialog md = new MessageDialog (null, DialogFlags.Modal, MessageType.Question,
                    ButtonsType.Cancel, AddinManager.CurrentLocalizer.GetString (
                        "Do you really want to reset the Mirage Extension?\n" +
                        "All extracted information will be lost. Your music will have to be re-analyzed to use Mirage again."));
            md.AddButton (AddinManager.CurrentLocalizer.GetString ("Reset Mirage"), ResponseType.Yes);
            ResponseType result = (ResponseType)md.Run();
            md.Destroy();

            if (result == ResponseType.Yes) {
                try {
                    Analyzer.CancelAnalyze();

                    TrackAnalysis.Provider.Delete ("1");

                    md = new MessageDialog(null, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok,
                            AddinManager.CurrentLocalizer.GetString ("Mirage was reset. Your music will have to be re-analyzed to use Mirage again."));
                    md.Run();
                    md.Destroy();
                } catch (Exception) {
                    Log.Warning("Mirage - Error resetting Mirage.");
                }
            }
        }
Пример #43
0
        //--------------------//

        #region MessageDialog
        /// <summary>Displays a message using a <see cref="MessageDialog"/>.</summary>
        /// <param name="owner">The parent window the displayed window is modal to; can be <c>null</c>.</param>
        /// <param name="text">The message to be displayed.</param>
        /// <param name="severity">How severe/important the message is.</param>
        /// <param name="buttons">The buttons the user can click.</param>
        /// <param name="addCancel">Add an additional "Cancel" button.</param>
        private static ResponseType ShowMessageDialog([CanBeNull] Window owner, [NotNull, Localizable(true)] string text, MsgSeverity severity, ButtonsType buttons, bool addCancel = false)
        {
            // Select icon based on message severity
            MessageType type;
            switch (severity)
            {
                case MsgSeverity.Warn:
                    type = MessageType.Warning;
                    break;
                case MsgSeverity.Error:
                    type = MessageType.Error;
                    break;
                default:
                case MsgSeverity.Info:
                    type = buttons.HasFlag(ButtonsType.YesNo) ? MessageType.Question : MessageType.Info;
                    break;
            }

            // Display MessageDialog
            using (var dialog = new MessageDialog(owner, DialogFlags.Modal, type, buttons, text))
            {
                if (addCancel) dialog.AddButton(Stock.Cancel, 2);
                dialog.Title = AppInfo.Current.ProductName;
                var response = (ResponseType)dialog.Run();
                dialog.Destroy();
                return response;
            }
        }