SND\eagleeyestudios_cp 286ffe38c1 Content Compiler:
- implemented Settings system to save user customization (XmlFile to LocalAppData)
- added Screen for opening projects
2012-08-28 21:14:49 +00:00

233 lines
7.9 KiB
C#

using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using ANX.ContentCompiler.GUI.Dialogues;
namespace ANX.ContentCompiler.GUI
{
public partial class MainWindow : Form
{
#region Fields
public static String DefaultOutputPath = "bin";
public static String SettingsFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "ANX Content Compiler" + Path.DirectorySeparatorChar + "settings.ees");
private Point _lastPos;
private bool _mouseDown;
private bool _menuMode;
private readonly bool _firstStart = true;
#endregion
#region Properties
public static MainWindow Instance { get; private set; }
public String ProjectName { get; set; }
public String ProjectPath { get; set; }
public String ProjectFolder { get; set; }
public String ProjectOutputDir { get; set; }
public String ProjectImportersDir { get; set; }
#endregion
#region Init
public MainWindow()
{
InitializeComponent();
Instance = this;
_firstStart = !File.Exists(SettingsFile);
if (_firstStart)
{
Settings.Defaults();
Settings.Save(SettingsFile);
}
else
Settings.Load(SettingsFile);
treeViewItemAddFolder.MouseEnter += TreeViewItemMouseEnter;
treeViewItemAddFolder.MouseLeave += TreeViewItemeLeave;
treeViewItemDelete.MouseEnter += TreeViewItemMouseEnter;
treeViewItemRename.MouseEnter += TreeViewItemMouseEnter;
SetUpColors();
}
private void MainWindowShown(object sender, EventArgs e)
{
if (_firstStart)
ShowFirstStartStuff();
ChangeEnvironmentStartState();
}
#endregion
#region NewProject
private void RibbonButtonNewClick(object sender, EventArgs e)
{
using (var dlg = new NewProjectScreen())
{
if (dlg.ShowDialog() == DialogResult.OK)
{
ProjectName = dlg.textBoxName.Text;
ProjectFolder = !String.IsNullOrEmpty(dlg.textBoxLocation.Text) ? dlg.textBoxLocation.Text : Path.Combine(Settings.DefaultProjectPath, ProjectName);
}
else
{
return;
}
}
using (var dlg2 = new NewProjectOutputScreen())
{
if (dlg2.ShowDialog() == DialogResult.OK)
{
ProjectOutputDir = !String.IsNullOrEmpty(dlg2.textBoxLocation.Text) ? dlg2.textBoxLocation.Text : Path.Combine(ProjectFolder, DefaultOutputPath);
}
else
return;
}
using (var dlg3 = new NewProjectImportersScreen())
{
if (dlg3.ShowDialog() == DialogResult.OK)
ProjectImportersDir = dlg3.textBoxLocation.Text;
else
return;
}
var importersEnabled = !String.IsNullOrEmpty(ProjectImportersDir);
var importers = 0;
var processors = 0;
using (var dlg4 = new NewProjectSummaryScreen(ProjectName, ProjectFolder, ProjectOutputDir, importersEnabled, ProjectImportersDir, importers, processors))
{
dlg4.ShowDialog();
}
ChangeEnvironmentOpenProject();
}
#endregion
#region OpenProject
private void RibbonButtonLoadClick(object sender, EventArgs e)
{
using (var dlg = new OpenProjectScreen())
{
if (dlg.ShowDialog() == DialogResult.OK)
{
}
}
}
#endregion
#region EnvironmentStates
public void ChangeEnvironmentStartState()
{
editingState.Visible = false;
startState.Visible = true;
Text = "ANX Content Compiler 4";
labelTitle.Text = "ANX Content Compiler 4";
}
public void ChangeEnvironmentOpenProject()
{
startState.Visible = false;
editingState.Visible = true;
Text = ProjectName + " - ANX Content Compiler 4";
labelTitle.Text = "ANX Content Compiler 4 - " + ProjectName;
}
#endregion
#region ButtonHandlers
private void ButtonQuitClick(object sender, EventArgs e)
{
Application.Exit();
}
private void ButtonMenuClick(object sender, EventArgs e)
{
ToggleMenuMode();
}
#endregion
#region WindowMoveMethods
private void LabelTitleMouseMove(object sender, MouseEventArgs e)
{
if (!_mouseDown) return;
var xoffset = MousePosition.X - _lastPos.X;
var yoffset = MousePosition.Y - _lastPos.Y;
Left += xoffset;
Top += yoffset;
_lastPos = MousePosition;
}
private void LabelTitleMouseDown(object sender, MouseEventArgs e)
{
_mouseDown = true;
_lastPos = MousePosition;
}
private void LabelTitleMouseUp(object sender, MouseEventArgs e)
{
_mouseDown = false;
}
#endregion
#region TreeVieItemDesignMethods
void TreeViewItemeLeave(object sender, EventArgs e)
{
((ToolStripItem)sender).BackColor = Color.FromArgb(0, 64, 64, 64);
}
void TreeViewItemMouseEnter(object sender, EventArgs e)
{
((ToolStripItem)sender).BackColor = Color.Green;
}
#endregion
#region MenuMethods
public void ToggleMenuMode()
{
_menuMode = !_menuMode;
if (_menuMode)
{
buttonMenu.BackColor = Settings.AccentColor3;
menuState.Visible = true;
}
else
{
menuState.Visible = false;
buttonMenu.BackColor = Settings.AccentColor;
}
}
#endregion
#region ShowFirstStartStuff
private void ShowFirstStartStuff()
{
using (var dlg = new FirstStartScreen())
{
if (dlg.ShowDialog() == DialogResult.OK)
{
}
}
}
#endregion
#region SetUpColors
private void SetUpColors()
{
BackColor = Settings.MainColor;
ForeColor = Settings.ForeColor;
buttonQuit.FlatAppearance.MouseOverBackColor = Settings.LightMainColor;
buttonQuit.FlatAppearance.MouseDownBackColor = Settings.AccentColor;
buttonMenu.BackColor = Settings.AccentColor;
buttonMenu.FlatAppearance.MouseOverBackColor = Settings.AccentColor2;
buttonMenu.FlatAppearance.MouseDownBackColor = Settings.AccentColor3;
labelTitle.ForeColor = Settings.ForeColor;
labelProperties.ForeColor = Settings.ForeColor;
labelFileTree.ForeColor = Settings.ForeColor;
treeView.BackColor = Settings.DarkMainColor;
propertyGrid.BackColor = Settings.DarkMainColor;
propertyGrid.ForeColor = Settings.ForeColor;
propertyGrid.HelpBackColor = Settings.MainColor;
propertyGrid.LineColor = Settings.MainColor;
propertyGrid.ViewBackColor = Settings.DarkMainColor;
propertyGrid.ViewForeColor = Settings.ForeColor;
}
#endregion
}
}