// Created with MonoDevelop
//
//    QuickStep: Acquire, view and identify spectra 
//    Copyright (C) 2017 Thomas Klose & Torsten Schache, Hiperscan GmbH Dresden, Germany
//
//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program.  If not, see <http://www.gnu.org/licenses/>.


using System;
using Gtk;

using Hiperscan.Unix;


namespace Hiperscan.Extensions.ApoIdent
{

    public class PasswordDialog : Gtk.Dialog
    {
        private Entry entry;

        public PasswordDialog(Window parent, string title) : base(title, parent, DialogFlags.Modal)
        {
            this.TransientFor = parent;
            this.Resizable = false;
            this.AddButton(Stock.Ok, ResponseType.Ok);
            this.Default = this.ActionArea.Children[0];

            Alignment align;
            align = new Alignment(0f, 0.5f, 0f, 1f);
            align.Add(new Gtk.Label(Catalog.GetString("Password:")));
            align.TopPadding    = 10;
            align.BottomPadding = 10;
            align.LeftPadding   = 8;
            align.RightPadding  = 8;

            this.entry = new Entry();
            this.entry.Visibility = false;
            this.entry.ActivatesDefault = true;

            HBox hbox = new HBox();
            hbox.PackStart(align);
            hbox.PackStart(this.entry);

            this.BorderWidth = 5;
            this.VBox.PackStart(hbox);
        }

        public string Query()
        {
            string password = string.Empty;
            this.ShowAll();

            this.IconList = ApoIdentStock.FinderIcons;
            ResponseType response = (ResponseType)this.Run();
            if (response == ResponseType.Ok)
                password = this.entry.Text;

            this.HideAll();
            return password;
        }
    }
}