Пример #1
0
        /// <summary>show the form for the multi line text</summary>
        /// <param name="value">the value prior to editing</param>
        /// <returns>the string after editing</returns>
        public string EditValue(string value)
        {
            EnterStringForm dialog = new EnterStringForm();

            dialog.MultiLine = true;
            dialog.SelectedString = value;
            dialog.ShowDialog();

            return dialog.SelectedString;
        }
Пример #2
0
        private void NewControlElement_Click(object sender, EventArgs e)
        {
            if (dialogTreeView.SelectedNode == null)
            {
                return;
            }

            XmlNode node = dialogTreeView.SelectedNode.Tag as XmlNode;
            if (node == null)
            {
                return;
            }

            // Get new name, and add control
            EnterStringForm frm = new EnterStringForm();
            frm.Text = "Enter new Control name";
            if (DialogResult.OK == frm.ShowDialog())
            {
                WixFiles.UndoManager.BeginNewCommandRange();

                MenuItem item = sender as MenuItem;
                XmlElement newControl = null;
                XmlNode parentNode = node;
                if (node.Name == "Dialog")
                {
                    newControl = node.OwnerDocument.CreateElement("Control", WixFiles.WixNamespaceUri);
                    if (item != otherMenuItem)
                    {
                        XmlAttribute newAttr = node.OwnerDocument.CreateAttribute("Type");
                        newAttr.Value = item.Text;
                        newControl.Attributes.Append(newAttr);

                        ArrayList newElementStrings = WixFiles.GetXsdSubElements(item.Text);
                        if (newElementStrings.Count > 0)
                        {
                            newElementStrings.Sort();

                            newAttr = WixFiles.WxsDocument.CreateAttribute("Property");
                            newAttr.Value = frm.SelectedString + "_Prop";
                            newControl.Attributes.Append(newAttr);
                        }
                    }

                    XmlAttribute idAttr = node.OwnerDocument.CreateAttribute("Id");
                    idAttr.Value = frm.SelectedString;
                    newControl.Attributes.Append(idAttr);
                }
                else
                { // Find or create the type node (array)
                    string strType = node.Attributes["Type"].Value;
                    ArrayList newElementStrings = WixFiles.GetXsdSubElements(strType);
                    if (newElementStrings.Count <= 0)  // Shouldn't happen!
                        return;
                    parentNode = null;
                    foreach (XmlNode child in node.ChildNodes)
                    {
                        if (child.Name == strType)
                        { // Already have a node named as the control type
                            parentNode = child;
                            break;
                        }
                    }
                    if (parentNode == null)
                    {
                        parentNode = node.OwnerDocument.CreateElement(strType, WixFiles.WixNamespaceUri);
                        XmlAttribute newAttr = node.OwnerDocument.CreateAttribute("Property");
                        newAttr.Value = node.Attributes["Property"].Value;
                        parentNode.Attributes.Append(newAttr);
                        InsertNewXmlNode(node, parentNode);
                    }
                    newControl = node.OwnerDocument.CreateElement(item.Text, WixFiles.WixNamespaceUri);
                    XmlAttribute idAttr = node.OwnerDocument.CreateAttribute("Text");
                    idAttr.Value = frm.SelectedString;
                    newControl.Attributes.Append(idAttr);
                }

                SetDefaultValues(newControl, parentNode);

                InsertNewXmlNode(parentNode, newControl);

                TreeNode control = new TreeNode(frm.SelectedString);
                control.Tag = newControl;
                control.ImageIndex = GetImageIndex(newControl);
                control.SelectedImageIndex = control.ImageIndex;

                dialogTreeView.SelectedNode.Nodes.Add(control);
                dialogTreeView.SelectedNode = control;

                ShowWixProperties(newControl);
                ShowWixDialog(GetDialogNode(node));
            }
        }
Пример #3
0
        public void CopyDialogItem(XmlNode dialogToCopy)
        {
            EnterStringForm frm = new EnterStringForm();
            frm.Text = "Enter new Dialog name";
            if (DialogResult.OK == frm.ShowDialog())
            {
                WixFiles.UndoManager.BeginNewCommandRange();

                XmlNode ui = ElementLocator.GetUIElement(WixFiles);
                if (ui == null)
                {
                    MessageBox.Show("No location found to add UI element, need element like module or product!");

                    return;
                }

                XmlNode dialog = GetDialogNode(frm.SelectedString);
                if (dialog != null)
                {
                    MessageBox.Show(String.Format("Dialog with the ID '{0}' already exists.", frm.SelectedString));

                    return;
                }

                if (dialogToCopy == null)
                {
                    dialog = WixFiles.WxsDocument.CreateElement("Dialog", WixFiles.WixNamespaceUri);

                    XmlAttribute att = WixFiles.WxsDocument.CreateAttribute("Id");
                    att.Value = frm.SelectedString;
                    dialog.Attributes.Append(att);

                    att = WixFiles.WxsDocument.CreateAttribute("Width");
                    att.Value = "370";
                    dialog.Attributes.Append(att);

                    att = WixFiles.WxsDocument.CreateAttribute("Height");
                    att.Value = "270";
                    dialog.Attributes.Append(att);
                }
                else
                {
                    dialog = WixFiles.WxsDocument.ImportNode(dialogToCopy, true);
                    dialog.Attributes["Id"].Value = frm.SelectedString;
                }

                InsertNewXmlNode(ui, dialog);

                ListViewItem item = new ListViewItem(frm.SelectedString);
                item.Tag = dialog;
                wxsDialogs.Items.Add(item);

                item.Selected = true;
                item.Focused = true;
                item.EnsureVisible();

                wxsDialogs.Focus();
            }
        }
Пример #4
0
        void EditDialog_NewControl(XmlNode item, Point position, string controlType)
        {
            // Get new name, and add control
            EnterStringForm frm = new EnterStringForm();
            frm.Text = "Enter new Control name";
            if (DialogResult.OK == frm.ShowDialog(this))
            {
                WixFiles.UndoManager.BeginNewCommandRange();

                XmlElement newControl = null;
                XmlNode parentNode = item;

                newControl = item.OwnerDocument.CreateElement("Control", WixFiles.WixNamespaceUri);
                XmlAttribute newAttr = item.OwnerDocument.CreateAttribute("Type");
                newAttr.Value = controlType;
                newControl.Attributes.Append(newAttr);

                ArrayList newElementStrings = WixFiles.GetXsdSubElements(controlType);
                if (newElementStrings.Count > 0)
                {
                    newElementStrings.Sort();

                    newAttr = WixFiles.WxsDocument.CreateAttribute("Property");
                    newAttr.Value = frm.SelectedString + "_Prop";
                    newControl.Attributes.Append(newAttr);
                }

                XmlAttribute idAttr = item.OwnerDocument.CreateAttribute("Id");
                idAttr.Value = frm.SelectedString;
                newControl.Attributes.Append(idAttr);

                SetDefaultValues(newControl, parentNode);

                newControl.SetAttribute("X", DialogGenerator.PixelsToDialogUnitsWidth(position.X).ToString());
                newControl.SetAttribute("Y", DialogGenerator.PixelsToDialogUnitsHeight(position.Y).ToString());

                InsertNewXmlNode(parentNode, newControl);

                TreeNode control = new TreeNode(frm.SelectedString);
                control.Tag = newControl;
                control.ImageIndex = GetImageIndex(controlType);
                control.SelectedImageIndex = control.ImageIndex;

                dialogTreeView.Nodes[0].Nodes.Add(control);
                dialogTreeView.SelectedNode = control;

                ShowWixProperties(newControl);
                ShowWixDialog(GetDialogNode(item));
            }
        }
Пример #5
0
 private void editFind_Click(object sender, System.EventArgs e)
 {
     EnterStringForm frm = new EnterStringForm();
     frm.Text = "Find what text:";
     if (DialogResult.OK == frm.ShowDialog())
     {
         string search = frm.SelectedString;
         ShowSearchPanel();
         searchPanel.Search(wixFiles, search);
     }
 }
Пример #6
0
        public virtual void OnRenamePropertyGridItem(object sender, EventArgs e)
        {
            XmlNode element = GetSelectedGridObject();
            if (element != null)
            {
                XmlAttribute att = element.Attributes[CurrentKeyName];
                EnterStringForm frm = new EnterStringForm(att.Value);
                frm.Text = "Enter Name";
                if (DialogResult.OK == frm.ShowDialog())
                {
                    WixFiles.UndoManager.BeginNewCommandRange();
                    att.Value = frm.SelectedString;
                    RefreshGrid();

                    ShowNode(att);
                }
            }
        }
Пример #7
0
        public virtual void OnNewPropertyGridItem(object sender, EventArgs e)
        {
            if (CurrentParent == null)
            {
                MessageBox.Show(String.Format("No location found to add \"{0}\" element, need element like module or product!", CurrentElementName));
                return;
            }

            EnterStringForm frm = new EnterStringForm();
            frm.Text = "Enter Resource Name";
            if (DialogResult.OK == frm.ShowDialog())
            {
                WixFiles.UndoManager.BeginNewCommandRange();
                XmlElement newProp = WixFiles.WxsDocument.CreateElement(CurrentElementName, WixFiles.WixNamespaceUri);

                XmlAttribute newAttr = WixFiles.WxsDocument.CreateAttribute(CurrentKeyName);
                newAttr.Value = frm.SelectedString;
                newProp.Attributes.Append(newAttr);

                if (currentValueName != null)
                {
                    newAttr = WixFiles.WxsDocument.CreateAttribute(currentValueName);
                    newProp.Attributes.Append(newAttr);
                }

                InsertNewXmlNode(CurrentParent, newProp);

                RefreshGrid(frm.SelectedString);
            }
        }
Пример #8
0
        public virtual void OnAddFilePropertyGridItem(object sender, EventArgs e)
        {
            string filePath = string.Empty;
            OpenFileDialog openDialog = new OpenFileDialog();
            openDialog.RestoreDirectory = true;
            if (openDialog.ShowDialog() == DialogResult.OK)
            {
                filePath = openDialog.FileName;
                EnterStringForm frm;
                if (filePath != string.Empty & File.Exists(filePath))
                {
                    frm = new EnterStringForm(Path.GetFileName(filePath));
                }
                else
                {
                    frm = new EnterStringForm();
                }
                frm.Text = "Enter Resource Name";
                if (DialogResult.OK == frm.ShowDialog())
                {
                    WixFiles.UndoManager.BeginNewCommandRange();

                    XmlElement newProp = WixFiles.WxsDocument.CreateElement(CurrentElementName, WixFiles.WixNamespaceUri);

                    XmlAttribute newAttr = WixFiles.WxsDocument.CreateAttribute(CurrentKeyName);
                    newAttr.Value = frm.SelectedString;
                    newProp.Attributes.Append(newAttr);
                    newAttr = WixFiles.WxsDocument.CreateAttribute("SourceFile");
                    newAttr.Value = filePath;
                    newProp.Attributes.Append(newAttr);
                    InsertNewXmlNode(CurrentParent, newProp);
                    RefreshGrid(frm.SelectedString);
                }
            }
            openDialog.Dispose();
        }
Пример #9
0
        private void NewFolder()
        {
            EnterStringForm frm = new EnterStringForm();
            frm.Text = "Enter Directory Name";
            if (DialogResult.OK == frm.ShowDialog())
            {
                XmlNode node = tree.SelectedNode.Tag as XmlNode;
                XmlElement newDirectory = node.OwnerDocument.CreateElement("Directory", WixFiles.WixNamespaceUri);
                newDirectory.SetAttribute("Name", frm.SelectedString);
                newDirectory.SetAttribute("Id", FileImport.GenerateValidIdentifier(frm.SelectedString, newDirectory, Wizard.WixFiles));
                node.AppendChild(newDirectory);

                TreeNode treeNode = new TreeNode();
                treeNode.Text = frm.SelectedString;
                treeNode.ImageIndex = ImageListFactory.GetImageIndex("Directory");
                treeNode.SelectedImageIndex = treeNode.ImageIndex;
                treeNode.SelectedImageIndex = treeNode.ImageIndex;
                treeNode.Tag = newDirectory;
                tree.SelectedNode.Nodes.Add(treeNode);
                tree.SelectedNode.Expand();
                treeNode.EnsureVisible();
            }
        }
Пример #10
0
        private void newComponentMenuItem_Click(object sender, EventArgs e)
        {
            XmlElement selectedNode = tree.SelectedNode.Tag as XmlElement;
            if (selectedNode == null)
            {
                return;
            }

            EnterStringForm frm = new EnterStringForm();
            frm.Text = "Enter component id";
            if (DialogResult.OK == frm.ShowDialog())
            {
                XmlElement newProp = Wizard.WixFiles.WxsDocument.CreateElement("Component", WixFiles.WixNamespaceUri);

                newProp.SetAttribute("Id", frm.SelectedString);
                newProp.SetAttribute("DiskId", "1");
                newProp.SetAttribute("KeyPath", "yes");
                newProp.SetAttribute("Guid", Guid.NewGuid().ToString("D"));

                selectedNode.AppendChild(newProp);
                TreeNode newNode = new TreeNode();
                newNode.Text = frm.SelectedString;
                newNode.ImageIndex = ImageListFactory.GetImageIndex("Component");
                newNode.SelectedImageIndex = newNode.ImageIndex;
                newNode.Tag = newProp;
                newNode.EnsureVisible();

                tree.SelectedNode.Nodes.Add(newNode);
                tree.SelectedNode.Expand();
            }
        }