anx.framework/Visual Studio/ANXVisualStudioPackage/Controls/ConfigurablePropertyPageControl.cs
Konstantin Koch 8287c54432 Included the Visual Studio extension and made the necessary changes to make it run.
Replaced the old VS templates with ones that offer more flexiblity.
Started replacing the Content Project for the samples with our custom project type.
Inlcuded a basic not yet working AssimpImporter.
2015-04-08 14:50:03 +02:00

128 lines
4.3 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ANX.Framework.Build;
using ANX.Framework.VisualStudio.Nodes;
using Microsoft.VisualStudio.Project;
using ANX.Framework.Graphics;
namespace ANX.Framework.VisualStudio.Controls
{
public partial class ConfigurablePropertyPageControl : UserControl
{
ConfigurableContentProjectSettingsPage page;
ContentProjectNode node;
ContentConfig[] configs;
public ConfigurablePropertyPageControl(ConfigurableContentProjectSettingsPage page)
{
InitializeComponent();
this.page = page;
}
public void Apply()
{
if (node == null)
throw new InvalidOperationException("Call LoadSettings first before calling Apply.");
if (page.IsDirty)
{
foreach (var conf in configs)
{
conf.Configuration.CompressContent = this.checkBox_CompressContent.Checked;
conf.Configuration.OutputDirectory = this.textBox_OutputDirectory.Text;
conf.Configuration.Profile = (GraphicsProfile)Enum.Parse(typeof(GraphicsProfile), (string)this.comboBox_GraphicsProfile.SelectedItem);
}
node.SetProjectFileDirty(true);
page.IsDirty = false;
}
}
public void LoadSettings(ContentConfig[] configurations)
{
this.node = (ContentProjectNode)configurations[0].ProjectMgr;
comboBox_GraphicsProfile.Items.Clear();
try
{
using (var domain = node.BuildAppDomain.Aquire())
{
this.comboBox_GraphicsProfile.Items.AddRange(domain.Proxy.GetGraphicsProfilesNames());
}
}
catch { }
this.comboBox_GraphicsProfile.Enabled = this.comboBox_GraphicsProfile.Items.Count > 0;
this.configs = configurations;
browseFolderDialog1.Site = new VisualStudioSite(node);
//Determine the common values of the configs.
bool compressContent = configs[0].Configuration.CompressContent;
string outputDirectory = configs[0].Configuration.OutputDirectory;
var graphicsProfile = configs[0].Configuration.Profile;
foreach (var conf in configurations)
{
if (compressContent != conf.Configuration.CompressContent)
compressContent = false;
if (outputDirectory != conf.Configuration.OutputDirectory)
outputDirectory = "";
if (graphicsProfile != conf.Configuration.Profile)
graphicsProfile = Graphics.GraphicsProfile.HiDef;
}
this.checkBox_CompressContent.Checked = compressContent;
this.textBox_OutputDirectory.Text = outputDirectory;
if (this.comboBox_GraphicsProfile.Items.Count == 0)
{
this.comboBox_GraphicsProfile.SelectedIndex = -1;
}
else
{
int index = this.comboBox_GraphicsProfile.Items.IndexOf(graphicsProfile.ToString());
this.comboBox_GraphicsProfile.SelectedIndex = index;
}
}
private void button_OutputDirectory_Click(object sender, EventArgs e)
{
browseFolderDialog1.Title = PackageResources.GetString(PackageResources.BrowseOutputDirectory);
browseFolderDialog1.RootFolder = node.ProjectHome;
browseFolderDialog1.SelectedPath = textBox_OutputDirectory.Text;
if (browseFolderDialog1.ShowDialog() == DialogResult.OK)
{
textBox_OutputDirectory.Text = browseFolderDialog1.SelectedPath;
}
}
private void textBox_OutputDirectory_TextChanged(object sender, EventArgs e)
{
page.IsDirty = true;
}
private void comboBox_GraphicsProfile_SelectedIndexChanged(object sender, EventArgs e)
{
page.IsDirty = true;
}
private void checkBox_CompressContent_CheckedChanged(object sender, EventArgs e)
{
page.IsDirty = true;
}
}
}