private void SaveOutMenus(MOG_PropertiesIni ripMenu, TreeNodeCollection nodes)
        {
            foreach (TreeNode node in nodes)
            {
                PropertyProperty property = node.Tag as PropertyProperty;
                if (property != null)
                {
                    if (node.Parent.Text == "Root")
                    {
                        ripMenu.PutString("Property.Menu", "{MenuItem}" + property.MenuText, "[" + property.PropertyCategory + "]" + "{" + property.PropertySubCategory + "}" + property.PropertyName + "=" + property.PropertyValue);
                    }
                    else
                    {
                        ripMenu.PutString(node.Parent.Text, "{MenuItem}" + property.MenuText, "[" + property.PropertyCategory + "]" + "{" + property.PropertySubCategory + "}" + property.PropertyName + "=" + property.PropertyValue);
                    }
                }
                else
                {
                    PropertyMenu menu = node.Tag as PropertyMenu;
                    if (menu != null)
                    {
                        if (node.Parent.Text == "Root")
                        {
                            ripMenu.PutString("Property.Menu", "{MenuItem}" + menu.MenuText, menu.MenuText);
                        }
                        else
                        {
                            ripMenu.PutString(node.Parent.Text, "{MenuItem}" + menu.MenuText, menu.MenuText);
                        }

                        // Menus ALWAYS require a section...even if it is blank!
                        ripMenu.PutSection(menu.MenuText);
                    }
                }

                if (node.Nodes.Count > 0)
                {
                    SaveOutMenus(ripMenu, node.Nodes);
                }
            }
        }
        private void PropertyFilenameWizardPage_CloseFromNext(object sender, MOG_ControlsLibrary.Utils.PageEventArgs e)
        {
            if (PropertyFilenameTextBox.Text.Length > 0)
            {
                string PropertyMenuFullName = MOG_Tokens.GetFormattedString(PropertyFilenameTextBox.Text, MOG_Tokens.GetProjectTokenSeeds(MOG_ControllerProject.GetProject()));

                string LocatedPropertyMenu = MOG_ControllerSystem.LocateTool(PropertyMenuFullName);

                if (LocatedPropertyMenu.Length == 0)
                {
                    // Make sure we got a filename with a full path, if we didn't it is probably a relational path
                    if (!Path.IsPathRooted(PropertyMenuFullName))
                    {
                        PropertyMenuFullName = MOG_ControllerProject.GetProject().GetProjectToolsPath() + "\\Property.Menus\\" + PropertyMenuFullName;
                    }
                }
                else
                {
                    PropertyMenuFullName = LocatedPropertyMenu;
                }

                // Create or open the existing properties
                MOG_PropertiesIni ripMenu = new MOG_PropertiesIni(PropertyMenuFullName);

                // Reset our menu
                ripMenu.Empty();

                // Add the properties
                ripMenu.PutSection("Property.Menu");
                SaveOutMenus(ripMenu, PropertyContextMenuTreeView.Nodes[0].Nodes);

                // Save the properties
                ripMenu.Save();

                // Save our new propertyMenu filename
                mPropertyMenu = PropertyMenuFullName;
            }

            // Skip to the end
            e.Page = PropertyEndWizardPage;
        }