mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 04:18:43 +00:00
110 lines
No EOL
3.8 KiB
C#
110 lines
No EOL
3.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Cosmos.Debug.GDB {
|
|
public class Settings {
|
|
static protected string mFilenameOfBreakPointXml = "";
|
|
static public string Filename {
|
|
get { return mFilenameOfBreakPointXml; }
|
|
}
|
|
|
|
static protected bool mAutoConnect = false;
|
|
static public bool AutoConnect {
|
|
get { return mAutoConnect; }
|
|
set { mAutoConnect = value; }
|
|
}
|
|
|
|
static protected string mOutputPath;
|
|
static public string OutputPath {
|
|
get { return mOutputPath; }
|
|
}
|
|
|
|
static protected string mObjFile;
|
|
static public string ObjFile {
|
|
get { return mObjFile; }
|
|
}
|
|
|
|
static protected string mAsmFile;
|
|
static public string AsmFile {
|
|
get { return mAsmFile; }
|
|
}
|
|
|
|
static public SettingsDS DS = new SettingsDS();
|
|
|
|
static public void Save() {
|
|
Windows.SavePositions();
|
|
Windows.mBreakpointsForm.SaveSettings();
|
|
// Its often checked into TFS, so if its readonly, dont save it.
|
|
if (File.Exists(Filename) && (File.GetAttributes(Filename) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) {
|
|
MessageBox.Show("File is read only. Cannot save.");
|
|
} else {
|
|
DS.WriteXml(Filename, System.Data.XmlWriteMode.IgnoreSchema);
|
|
}
|
|
}
|
|
|
|
static public bool Load(string aFilenameOfBreakPointXml) {
|
|
mFilenameOfBreakPointXml = aFilenameOfBreakPointXml;
|
|
try {
|
|
//TODO: Change this and other general settings to read from the General datatable
|
|
mOutputPath = Path.Combine(Path.GetDirectoryName(Filename), @"bin\debug\");
|
|
mObjFile = Path.GetFileNameWithoutExtension(Filename) + ".obj";
|
|
mAsmFile = Path.GetFileNameWithoutExtension(Filename) + ".asm";
|
|
if (File.Exists(Filename))
|
|
DS.ReadXml(Filename, System.Data.XmlReadMode.IgnoreSchema);
|
|
return true;
|
|
}
|
|
catch (Exception e) {
|
|
mOutputPath = null;
|
|
MessageBox.Show(string.Format(
|
|
"Exception on loading of settings file \"{0}\" :\n{1}\n\nStacktrace:\n{2}",
|
|
Filename, e.Message, e.StackTrace),
|
|
"Breakpoint Settings", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
static public bool LoadOnFly(string aFilenameOfBreakPointXml)
|
|
{
|
|
mFilenameOfBreakPointXml = aFilenameOfBreakPointXml;
|
|
try
|
|
{
|
|
//TODO: Change this and other general settings to read from the General datatable
|
|
mOutputPath = Path.GetDirectoryName(Filename);
|
|
mObjFile = Path.GetFileNameWithoutExtension(Filename) + ".obj";
|
|
mAsmFile = Path.GetFileNameWithoutExtension(Filename) + ".asm";
|
|
// for save function needed
|
|
if (mOutputPath.ToLower().EndsWith("\\bin\\debug"))
|
|
{
|
|
// create path for cgdb like VS it does
|
|
int len = "\\bin\\debug".Length;
|
|
mFilenameOfBreakPointXml = Path.Combine(mOutputPath.Substring(0, mOutputPath.Length - len), Path.GetFileNameWithoutExtension(Filename) + ".cgdb");
|
|
}
|
|
else
|
|
mFilenameOfBreakPointXml = Path.Combine(mOutputPath, Path.GetFileNameWithoutExtension(Filename) + ".cgdb");
|
|
|
|
if (false == File.Exists(Path.Combine(mOutputPath, mObjFile))
|
|
|| false == File.Exists(Path.Combine(mOutputPath, mAsmFile))
|
|
|| false == File.Exists(Path.Combine(mOutputPath, Path.GetFileNameWithoutExtension(Filename) + ".mdf")))
|
|
{
|
|
mOutputPath = null;
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
mOutputPath = null;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
static public void InitWindows() {
|
|
Windows.RestorePositions();
|
|
Windows.mBreakpointsForm.LoadSession();
|
|
}
|
|
}
|
|
} |