/****************************************************************************  
 | 
**  
 | 
** Copyright (C) 2016 The Qt Company Ltd.  
 | 
** Contact: https://www.qt.io/licensing/  
 | 
**  
 | 
** This file is part of the Qt VS Tools.  
 | 
**  
 | 
** $QT_BEGIN_LICENSE:GPL-EXCEPT$  
 | 
** Commercial License Usage  
 | 
** Licensees holding valid commercial Qt licenses may use this file in  
 | 
** accordance with the commercial license agreement provided with the  
 | 
** Software or, alternatively, in accordance with the terms contained in  
 | 
** a written agreement between you and The Qt Company. For licensing terms  
 | 
** and conditions see https://www.qt.io/terms-conditions. For further  
 | 
** information use the contact form at https://www.qt.io/contact-us.  
 | 
**  
 | 
** GNU General Public License Usage  
 | 
** Alternatively, this file may be used under the terms of the GNU  
 | 
** General Public License version 3 as published by the Free Software  
 | 
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT  
 | 
** included in the packaging of this file. Please review the following  
 | 
** information to ensure the GNU General Public License requirements will  
 | 
** be met: https://www.gnu.org/licenses/gpl-3.0.html.  
 | 
**  
 | 
** $QT_END_LICENSE$  
 | 
**  
 | 
****************************************************************************/  
 | 
  
 | 
using System;  
 | 
using System.Drawing;  
 | 
using System.Windows.Forms;  
 | 
  
 | 
namespace QtVsTools.Core  
 | 
{  
 | 
    /// <summary>  
 | 
    /// Summary description for ExportProjectDialog.  
 | 
    /// </summary>  
 | 
    internal class ExportProjectDialog : Form  
 | 
    {  
 | 
        private Button cancelButton;  
 | 
        private Button okButton;  
 | 
        private Label projLabel;  
 | 
        private ListBox optionListBox;  
 | 
        private Label optionLabel;  
 | 
        private ComboBox optionComboBox;  
 | 
        private Label commentLabel;  
 | 
        private TextBox optionTextBox;  
 | 
        private CheckBox openCheckBox;  
 | 
        private CheckedListBox projListBox;  
 | 
        private GroupBox lineBox;  
 | 
        private CheckBox createPriFileCheckBox;  
 | 
        private Panel panel1;  
 | 
        private Panel panel2;  
 | 
        private Button newButton;  
 | 
        private Button delButton;  
 | 
  
 | 
        public ExportProjectDialog()  
 | 
        {  
 | 
            //  
 | 
            // Required for Windows Form Designer support  
 | 
            //  
 | 
            InitializeComponent();  
 | 
  
 | 
            cancelButton.Text = SR.GetString("ExportProjectDialog_Cancel");  
 | 
            okButton.Text = SR.GetString("ExportProjectDialog_OK");  
 | 
            projLabel.Text = SR.GetString("ExportProjectDialog_CreatePro");  
 | 
            optionLabel.Text = SR.GetString("ExportProjectDialog_Project");  
 | 
            optionTextBox.Text = "";  
 | 
            openCheckBox.Text = SR.GetString("ExportProjectDialog_Open");  
 | 
            createPriFileCheckBox.Text = SR.GetString("ExportProjectDialog_CreatePri");  
 | 
  
 | 
            if (SR.LanguageName == "de")  
 | 
                Size = new Size(470, 300);  
 | 
            else  
 | 
                Size = new Size(400, 300);  
 | 
  
 | 
            ShowInTaskbar = false;  
 | 
            Shown += ExportProjectDialog_Shown;  
 | 
        }  
 | 
  
 | 
        private void ExportProjectDialog_Shown(object sender, EventArgs e)  
 | 
        {  
 | 
            Text = SR.GetString("ExportProjectDialog_Title");  
 | 
        }  
 | 
  
 | 
        #region Windows Form Designer generated code  
 | 
        /// <summary>  
 | 
        /// Required method for Designer support - do not modify  
 | 
        /// the contents of this method with the code editor.  
 | 
        /// </summary>  
 | 
        private void InitializeComponent()  
 | 
        {  
 | 
            cancelButton = new System.Windows.Forms.Button();  
 | 
            okButton = new System.Windows.Forms.Button();  
 | 
            projLabel = new System.Windows.Forms.Label();  
 | 
            optionListBox = new System.Windows.Forms.ListBox();  
 | 
            optionLabel = new System.Windows.Forms.Label();  
 | 
            optionComboBox = new System.Windows.Forms.ComboBox();  
 | 
            commentLabel = new System.Windows.Forms.Label();  
 | 
            optionTextBox = new System.Windows.Forms.TextBox();  
 | 
            projListBox = new System.Windows.Forms.CheckedListBox();  
 | 
            openCheckBox = new System.Windows.Forms.CheckBox();  
 | 
            lineBox = new System.Windows.Forms.GroupBox();  
 | 
            createPriFileCheckBox = new System.Windows.Forms.CheckBox();  
 | 
            panel1 = new System.Windows.Forms.Panel();  
 | 
            panel2 = new System.Windows.Forms.Panel();  
 | 
  
 | 
            newButton = new ImageButton(HelperFunctions.GetSharedImage("QtVsTools.Core.Resources.newitem.png"),  
 | 
                HelperFunctions.GetSharedImage("QtVsTools.Core.Resources.newitem_d.png"));  
 | 
            delButton = new ImageButton(HelperFunctions.GetSharedImage("QtVsTools.Core.Resources.delete.png"),  
 | 
                HelperFunctions.GetSharedImage("QtVsTools.Core.Resources.delete_d.png"));  
 | 
            panel1.SuspendLayout();  
 | 
            panel2.SuspendLayout();  
 | 
            SuspendLayout();  
 | 
            //  
 | 
            // cancelButton  
 | 
            //  
 | 
            cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));  
 | 
            cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;  
 | 
            cancelButton.Location = new System.Drawing.Point(352, 232);  
 | 
            cancelButton.Name = "cancelButton";  
 | 
            cancelButton.Size = new System.Drawing.Size(72, 24);  
 | 
            cancelButton.TabIndex = 5;  
 | 
            cancelButton.Text = "Cancel";  
 | 
            //  
 | 
            // okButton  
 | 
            //  
 | 
            okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));  
 | 
            okButton.DialogResult = System.Windows.Forms.DialogResult.OK;  
 | 
            okButton.Location = new System.Drawing.Point(272, 232);  
 | 
            okButton.Name = "okButton";  
 | 
            okButton.Size = new System.Drawing.Size(72, 24);  
 | 
            okButton.TabIndex = 4;  
 | 
            okButton.Text = "OK";  
 | 
            //  
 | 
            // projLabel  
 | 
            //  
 | 
            projLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)  
 | 
                | System.Windows.Forms.AnchorStyles.Right)));  
 | 
            projLabel.Location = new System.Drawing.Point(0, 8);  
 | 
            projLabel.Name = "projLabel";  
 | 
            projLabel.Size = new System.Drawing.Size(200, 16);  
 | 
            projLabel.TabIndex = 3;  
 | 
            projLabel.Text = "Create .pro files for:";  
 | 
            //  
 | 
            // optionListBox  
 | 
            //  
 | 
            optionListBox.Location = new System.Drawing.Point(0, 72);  
 | 
            optionListBox.Name = "optionListBox";  
 | 
            optionListBox.Size = new System.Drawing.Size(200, 82);  
 | 
            optionListBox.TabIndex = 3;  
 | 
            optionListBox.SelectedIndexChanged += optionListBox_SelectedIndexChanged;  
 | 
            //  
 | 
            // optionLabel  
 | 
            //  
 | 
            optionLabel.Location = new System.Drawing.Point(0, 8);  
 | 
            optionLabel.Name = "optionLabel";  
 | 
            optionLabel.Size = new System.Drawing.Size(200, 16);  
 | 
            optionLabel.TabIndex = 5;  
 | 
            optionLabel.Text = "Project &tag:";  
 | 
            //  
 | 
            // optionComboBox  
 | 
            //  
 | 
            optionComboBox.Location = new System.Drawing.Point(0, 24);  
 | 
            optionComboBox.Name = "optionComboBox";  
 | 
            optionComboBox.Size = new System.Drawing.Size(200, 21);  
 | 
            optionComboBox.TabIndex = 2;  
 | 
            optionComboBox.SelectedIndexChanged += optionComboBox_SelectedIndexChanged;  
 | 
            //  
 | 
            // commentLabel  
 | 
            //  
 | 
            commentLabel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;  
 | 
            commentLabel.Location = new System.Drawing.Point(0, 160);  
 | 
            commentLabel.Name = "commentLabel";  
 | 
            commentLabel.Size = new System.Drawing.Size(200, 48);  
 | 
            commentLabel.TabIndex = 6;  
 | 
            //  
 | 
            // optionTextBox  
 | 
            //  
 | 
            optionTextBox.Enabled = false;  
 | 
            optionTextBox.Location = new System.Drawing.Point(0, 48);  
 | 
            optionTextBox.Name = "optionTextBox";  
 | 
            optionTextBox.Size = new System.Drawing.Size(136, 20);  
 | 
            optionTextBox.TabIndex = 7;  
 | 
            optionTextBox.Text = "";  
 | 
            optionTextBox.TextChanged += optionTextBox_TextChanged;  
 | 
            //  
 | 
            // projListBox  
 | 
            //  
 | 
            projListBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)  
 | 
                | System.Windows.Forms.AnchorStyles.Right)));  
 | 
            projListBox.Location = new System.Drawing.Point(0, 24);  
 | 
            projListBox.Name = "projListBox";  
 | 
            projListBox.Size = new System.Drawing.Size(200, 124);  
 | 
            projListBox.TabIndex = 10;  
 | 
            projListBox.SelectedIndexChanged += projListBox_SelectedIndexChanged;  
 | 
            projListBox.ItemCheck += projListBox_ItemCheck;  
 | 
            //  
 | 
            // openCheckBox  
 | 
            //  
 | 
            openCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)  
 | 
                | System.Windows.Forms.AnchorStyles.Right)));  
 | 
            openCheckBox.Checked = true;  
 | 
            openCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;  
 | 
            openCheckBox.Location = new System.Drawing.Point(0, 184);  
 | 
            openCheckBox.Name = "openCheckBox";  
 | 
            openCheckBox.Size = new System.Drawing.Size(208, 24);  
 | 
            openCheckBox.TabIndex = 11;  
 | 
            openCheckBox.Text = "Open Created Files";  
 | 
            //  
 | 
            // lineBox  
 | 
            //  
 | 
            lineBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));  
 | 
            lineBox.Location = new System.Drawing.Point(-8, 216);  
 | 
            lineBox.Name = "lineBox";  
 | 
            lineBox.Size = new System.Drawing.Size(536, 8);  
 | 
            lineBox.TabIndex = 12;  
 | 
            lineBox.TabStop = false;  
 | 
            //  
 | 
            // createPriFileCheckBox  
 | 
            //  
 | 
            createPriFileCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)  
 | 
                | System.Windows.Forms.AnchorStyles.Right)));  
 | 
            createPriFileCheckBox.Checked = true;  
 | 
            createPriFileCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;  
 | 
            createPriFileCheckBox.Location = new System.Drawing.Point(0, 160);  
 | 
            createPriFileCheckBox.Name = "createPriFileCheckBox";  
 | 
            createPriFileCheckBox.Size = new System.Drawing.Size(200, 24);  
 | 
            createPriFileCheckBox.TabIndex = 13;  
 | 
            createPriFileCheckBox.Text = "Create .pri File";  
 | 
            //  
 | 
            // panel1  
 | 
            //  
 | 
            panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)  
 | 
                | System.Windows.Forms.AnchorStyles.Right)));  
 | 
            panel1.Controls.Add(projLabel);  
 | 
            panel1.Controls.Add(projListBox);  
 | 
            panel1.Controls.Add(createPriFileCheckBox);  
 | 
            panel1.Controls.Add(openCheckBox);  
 | 
            panel1.Location = new System.Drawing.Point(8, 0);  
 | 
            panel1.Name = "panel1";  
 | 
            panel1.Size = new System.Drawing.Size(200, 208);  
 | 
            panel1.TabIndex = 14;  
 | 
            //  
 | 
            // panel2  
 | 
            //  
 | 
            panel2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));  
 | 
            panel2.Controls.Add(newButton);  
 | 
            panel2.Controls.Add(delButton);  
 | 
            panel2.Controls.Add(optionLabel);  
 | 
            panel2.Controls.Add(optionComboBox);  
 | 
            panel2.Controls.Add(optionTextBox);  
 | 
            panel2.Controls.Add(optionListBox);  
 | 
            panel2.Controls.Add(commentLabel);  
 | 
            panel2.Location = new System.Drawing.Point(216, 0);  
 | 
            panel2.Name = "panel2";  
 | 
            panel2.Size = new System.Drawing.Size(208, 208);  
 | 
            panel2.TabIndex = 15;  
 | 
            //  
 | 
            // newButton  
 | 
            //  
 | 
            newButton.Location = new System.Drawing.Point(144, 48);  
 | 
            newButton.Name = "button1";  
 | 
            newButton.Size = new System.Drawing.Size(24, 23);  
 | 
            newButton.TabIndex = 8;  
 | 
            newButton.Click += newButton_Click;  
 | 
  
 | 
            //  
 | 
            // delButton  
 | 
            //  
 | 
            delButton.Location = new System.Drawing.Point(176, 48);  
 | 
            delButton.Name = "button2";  
 | 
            delButton.Size = new System.Drawing.Size(24, 23);  
 | 
            delButton.TabIndex = 9;  
 | 
            delButton.Click += delButton_Click;  
 | 
  
 | 
            //  
 | 
            // ExportProjectDialog  
 | 
            //  
 | 
            AcceptButton = okButton;  
 | 
            CancelButton = cancelButton;  
 | 
            AutoScaleBaseSize = new System.Drawing.Size(5, 13);  
 | 
            ClientSize = new System.Drawing.Size(432, 262);  
 | 
            Controls.Add(panel2);  
 | 
            Controls.Add(panel1);  
 | 
            Controls.Add(lineBox);  
 | 
            Controls.Add(okButton);  
 | 
            Controls.Add(cancelButton);  
 | 
            FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;  
 | 
            MaximizeBox = false;  
 | 
            MinimizeBox = false;  
 | 
            Name = "ExportProjectDialog";  
 | 
            SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;  
 | 
            Text = "Export Project";  
 | 
            Load += ExportProjectDialog_Load;  
 | 
            panel1.ResumeLayout(false);  
 | 
            panel2.ResumeLayout(false);  
 | 
            ResumeLayout(false);  
 | 
  
 | 
        }  
 | 
        #endregion  
 | 
  
 | 
        public ProSolution ProFileSolution  
 | 
        {  
 | 
            set  
 | 
            {  
 | 
                proSln = value;  
 | 
                InitProSolution();  
 | 
            }  
 | 
        }  
 | 
  
 | 
        private void InitProSolution()  
 | 
        {  
 | 
            projListBox.DataSource = proSln.ProFiles;  
 | 
            projListBox.SelectedIndex = 0;  
 | 
        }  
 | 
  
 | 
        private ProSolution proSln;  
 | 
        private ProFileContent currentPro;  
 | 
        private ProFileOption currentOpt;  
 | 
  
 | 
        private void optionComboBox_SelectedIndexChanged(object sender, System.EventArgs e)  
 | 
        {  
 | 
            currentOpt = currentPro.Options[optionComboBox.SelectedIndex];  
 | 
            UpdateCurrentListItem();  
 | 
  
 | 
            optionTextBox.Text = string.Empty;  
 | 
  
 | 
            // update comment field  
 | 
            commentLabel.Text = currentOpt.Comment;  
 | 
            UpdateButtons();  
 | 
        }  
 | 
  
 | 
        private void optionListBox_SelectedIndexChanged(object sender, System.EventArgs e)  
 | 
        {  
 | 
            var idx = optionListBox.SelectedIndex;  
 | 
            if (idx < 0)  
 | 
                return;  
 | 
            optionTextBox.Text = currentOpt.List[optionListBox.SelectedIndex];  
 | 
            optionTextBox.Focus();  
 | 
            UpdateButtons();  
 | 
        }  
 | 
  
 | 
        private void optionTextBox_TextChanged(object sender, System.EventArgs e)  
 | 
        {  
 | 
            if (optionListBox.SelectedIndex < 0) {  
 | 
                optionTextBox.Enabled = false;  
 | 
            } else {  
 | 
                optionTextBox.Enabled = true;  
 | 
                currentOpt.List[optionListBox.SelectedIndex] = optionTextBox.Text;  
 | 
                var index = optionListBox.SelectedIndex;  
 | 
                UpdateCurrentListItem();  
 | 
                optionListBox.SelectedIndex = index;  
 | 
            }  
 | 
        }  
 | 
  
 | 
        private void UpdateCurrentListItem()  
 | 
        {  
 | 
            optionListBox.BeginUpdate();  
 | 
            optionListBox.Items.Clear();  
 | 
            foreach (var tag in currentOpt.List)  
 | 
                optionListBox.Items.Add(tag);  
 | 
            optionListBox.EndUpdate();  
 | 
        }  
 | 
  
 | 
        private void newButton_Click(object sender, System.EventArgs e)  
 | 
        {  
 | 
            currentOpt.List.Add("{New}");  
 | 
            var index = currentOpt.List.Count - 1;  
 | 
            UpdateCurrentListItem();  
 | 
            optionListBox.SelectedIndex = index;  
 | 
            optionTextBox.SelectAll();  
 | 
        }  
 | 
  
 | 
        private void UpdateButtons()  
 | 
        {  
 | 
            var delEnabled = true;  
 | 
            var addEnabled = true;  
 | 
  
 | 
            if (optionListBox.SelectedIndex < 0)  
 | 
                delEnabled = false;  
 | 
  
 | 
            if (optionListBox.Items.Count <= 0)  
 | 
                delEnabled = false;  
 | 
  
 | 
            if ((optionListBox.Items.Count > 0) && (currentOpt.NewOption == null))  
 | 
                addEnabled = false;  
 | 
  
 | 
            delButton.Enabled = delEnabled;  
 | 
            newButton.Enabled = addEnabled;  
 | 
        }  
 | 
  
 | 
        private void delButton_Click(object sender, System.EventArgs e)  
 | 
        {  
 | 
            var index = optionListBox.SelectedIndex;  
 | 
            currentOpt.List.RemoveAt(optionListBox.SelectedIndex);  
 | 
            UpdateCurrentListItem();  
 | 
  
 | 
            if (index > (optionListBox.Items.Count - 1))  
 | 
                index--;  
 | 
  
 | 
            optionListBox.SelectedIndex = index;  
 | 
  
 | 
            if (index < 0) {  
 | 
                optionTextBox.Text = string.Empty;  
 | 
                UpdateButtons();  
 | 
            }  
 | 
        }  
 | 
  
 | 
        private void projListBox_SelectedIndexChanged(object sender, System.EventArgs e)  
 | 
        {  
 | 
            currentPro = proSln.ProFiles[projListBox.SelectedIndex];  
 | 
            optionComboBox.DataSource = currentPro.Options;  
 | 
        }  
 | 
  
 | 
        private void projListBox_ItemCheck(object sender, ItemCheckEventArgs e)  
 | 
        {  
 | 
            if (e.NewValue == CheckState.Checked)  
 | 
                proSln.ProFiles[e.Index].Export = true;  
 | 
            else  
 | 
                proSln.ProFiles[e.Index].Export = false;  
 | 
        }  
 | 
  
 | 
        private void ExportProjectDialog_Load(object sender, System.EventArgs e)  
 | 
        {  
 | 
            for (var i = 0; i < projListBox.Items.Count; i++)  
 | 
                projListBox.SetItemChecked(i, true);  
 | 
        }  
 | 
  
 | 
        public bool OpenFiles  
 | 
        {  
 | 
            get { return openCheckBox.Checked; }  
 | 
        }  
 | 
  
 | 
        public bool CreatePriFile  
 | 
        {  
 | 
            get { return createPriFileCheckBox.Checked; }  
 | 
        }  
 | 
    }  
 | 
}  
 |