diff --git a/GUI/ConfigHandler.cs b/GUI/ConfigHandler.cs
index 48e1f64..54dd070 100644
--- a/GUI/ConfigHandler.cs
+++ b/GUI/ConfigHandler.cs
@@ -21,7 +21,6 @@ namespace RosTEGUI
public class MainConfig
{
- private VMConfig vmConfig = null;
private DataSet dataSet = null;
private string qemuPath;
@@ -134,14 +133,14 @@ namespace RosTEGUI
{
if (dataSet != null && virtMachs != null)
{
- int id = virtMachs.Count + 1;
+ int id = virtMachs.Count;
virtMachs.Add(new VirtMach(id, pathIn));
}
return virtMachs.Count;
}
- public void DeleteVirtMach(int index)
+ public bool DeleteVirtMach(int index)
{
bool bRet = false;
@@ -153,6 +152,8 @@ namespace RosTEGUI
bRet = true;
}
}
+
+ return bRet;
}
public int GetNumberOfVms()
@@ -311,6 +312,7 @@ namespace RosTEGUI
#region private methods
private bool LoadMainSchema()
{
+ XmlTextReader xtr = null;
string filename = "MainConfig.xsd";
bool ret = false;
@@ -320,57 +322,14 @@ namespace RosTEGUI
try
{
FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
- XmlTextReader xtr = new XmlTextReader(fs);
+ xtr = new XmlTextReader(fs);
dataSet.ReadXmlSchema(xtr);
- xtr.Close();
ret = true;
}
catch (Exception ex)
{
Debug.LogMessage("error loading main config schema", ex.Message, ex.StackTrace, true);
}
- }
-
- return ret;
- }
- #endregion
- }
-
-
-
- public class VMConfig
- {
- private DataSet data = null;
-
- public DataSet DataSet
- {
- get { return data; }
- }
-
- ///
- /// Load the schema for the virtual machine configuration file
- ///
- /// True on success, false on failure
- public bool LoadVirtMachData()
- {
- XmlTextReader xtr = null;
- string filename = "VMConfig.xsd";
- bool ret = false;
-
- data = new DataSet();
- if (File.Exists(filename))
- {
- try
- {
- FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
- xtr = new XmlTextReader(fs);
- data.ReadXmlSchema(xtr);
- ret = true;
- }
- catch (Exception ex)
- {
- Debug.LogMessage("error loading VM config schema", ex.Message, ex.StackTrace, true);
- }
finally
{
if (xtr != null)
@@ -380,5 +339,6 @@ namespace RosTEGUI
return ret;
}
+ #endregion
}
}
\ No newline at end of file
diff --git a/GUI/MainForm.cs b/GUI/MainForm.cs
index a08406b..ddafaee 100644
--- a/GUI/MainForm.cs
+++ b/GUI/MainForm.cs
@@ -14,7 +14,6 @@ namespace RosTEGUI
public partial class MainForm : Form
{
private MainConfig mainConf;
- private VMConfig mainData;
public MainForm()
{
@@ -44,6 +43,8 @@ namespace RosTEGUI
VirtualMachine vm = new VirtualMachine();
if (vm.LoadVMConfig(image))
{
+ vm.LoadVmSettings();
+
ListViewItem lvi = VirtMachListView.Items.Add(vm.ToString(), 0);
lvi.SubItems.Add(vm.MemSize.ToString() + " MB");
lvi.Tag = vm;
diff --git a/GUI/VirtualMachine.cs b/GUI/VirtualMachine.cs
index 1e91b76..21058a3 100644
--- a/GUI/VirtualMachine.cs
+++ b/GUI/VirtualMachine.cs
@@ -5,13 +5,35 @@ using System.Data;
using System.Xml;
using System.Windows.Forms;
using System.Collections;
+using System.Collections.Generic;
namespace RosTEGUI
{
+ public struct VirtMachInfo
+ {
+ public int virtMachID;
+ public string name;
+ public string machType;
+ public string defDir;
+ public int memSize;
+ public bool setClockToHost;
+ public bool cdRomEnable;
+ public bool cdRomUsePhys;
+ public string cdRomPhysDrv;
+ public bool cdRomUseIso;
+ public string cdRomIsoImg;
+ public bool floppyEnable;
+ public bool floppyUsePhys;
+ public string floppyPhysDrv;
+ public bool floppyUseImg;
+ public string floppyIsoImg;
+ }
+
+
public class VMHardDrive
{
- private VMConfig vmConfig;
private DataRow hdDataRow;
+ private DataSet dataSet;
#region properties
@@ -47,12 +69,6 @@ namespace RosTEGUI
get { return (bool)hdDataRow["BootImg"]; }
set { hdDataRow["BootImg"] = value; }
}
-
- public VMHardDrive(VMConfig vmConfigIn)
- {
- vmConfig = vmConfigIn;
- }
-
#endregion
public override string ToString()
@@ -70,7 +86,7 @@ namespace RosTEGUI
try
{
- DataTable hddt = vmConfig.DataSet.Tables["HardDisks"];
+ DataTable hddt = dataSet.Tables["HardDisks"];
hdDataRow = hddt.NewRow();
hdDataRow["DiskID"] = hddt.Rows.Count;
hdDataRow["Name"] = nameIn;
@@ -93,7 +109,7 @@ namespace RosTEGUI
public void DeleteHardDrive(int diskID)
{
- DataTable dt = vmConfig.DataSet.Tables["HardDisks"];
+ DataTable dt = dataSet.Tables["HardDisks"];
//DataRow dr = dt.Rows.Find(diskID); <-- can't seem to apply a primary key??
// workaround for the above
foreach (DataRow dr in dt.Rows)
@@ -109,17 +125,23 @@ namespace RosTEGUI
public void LoadHardDrive(int index)
{
- DataTable hddt = vmConfig.DataSet.Tables["HardDisks"];
+ DataTable hddt = dataSet.Tables["HardDisks"];
hdDataRow = hddt.Rows[index];
}
}
public class VirtualMachine
{
- private VMConfig vmConfig;
private DataRow vmDataRow;
+ private List virtMachInfo = null;
private ArrayList hardDrives;
private ArrayList netCards;
+ private DataSet dataSet = null;
+
+ public DataSet DataSet
+ {
+ get { return dataSet; }
+ }
#region Virtual machine properties
@@ -318,7 +340,7 @@ namespace RosTEGUI
try
{
- DataTable vmdt = vmConfig.DataSet.Tables["VMConfig"];
+ DataTable vmdt = dataSet.Tables["VMConfig"];
vmDataRow = vmdt.NewRow();
vmDataRow["VirtMachID"] = vmdt.Rows.Count + 1;
vmDataRow["Name"] = name;
@@ -338,11 +360,11 @@ namespace RosTEGUI
vmDataRow["FloppyIsoImg"] = string.Empty;
vmdt.Rows.Add(vmDataRow);
- VMHardDrive vmhd = new VMHardDrive(vmConfig);
+ VMHardDrive vmhd = new VMHardDrive();
vmhd.CreateHardDrive("Main Drive", "hda", dir, 768, true);
hardDrives.Add(vmhd);
- DataTable netdt = vmConfig.DataSet.Tables["NetCards"];
+ DataTable netdt = dataSet.Tables["NetCards"];
netDataRow = netdt.NewRow();
netDataRow["CardID"] = netdt.Rows.Count + 1;
netDataRow["VirtMachID"] = vmDataRow["VirtMachID"];
@@ -365,74 +387,18 @@ namespace RosTEGUI
return ret;
}
- public bool LoadVMConfig(string path)
- {
- bool ret = false;
- string fileName = path + "\\Config.xml";
-
- if (File.Exists(fileName))
- {
- try
- {
- FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
- XmlTextReader xtr = new XmlTextReader(fs);
- vmConfig.DataSet.ReadXml(xtr, System.Data.XmlReadMode.ReadSchema);
- xtr.Close();
-
- DataTable vmdt = vmConfig.DataSet.Tables["VMConfig"];
- vmDataRow = vmdt.Rows[0];
-
- DataTable hddt = vmConfig.DataSet.Tables["HardDisks"];
- for (int i = 0; i < hddt.Rows.Count; i++)
- {
- VMHardDrive vmhd = new VMHardDrive(vmConfig);
- vmhd.LoadHardDrive(i);
- hardDrives.Add(vmhd);
- }
-
- DataTable netdt = vmConfig.DataSet.Tables["NetCards"];
- foreach (DataRow dr in netdt.Rows)
- netCards.Add(dr);
-
- ret = true;
- }
- catch (Exception e)
- {
- MessageBox.Show("error loading the VM Config.xml: " + e.Message);
- }
- }
-
- return ret;
- }
-
- public void SaveVMConfig()
- {
- try
- {
- string fileName = DefDir + "\\Config.xml";
- Directory.CreateDirectory(DefDir);
- FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
- XmlTextWriter xtw = new XmlTextWriter(fs, System.Text.Encoding.Unicode);
- vmConfig.DataSet.WriteXml(xtw, System.Data.XmlWriteMode.WriteSchema);
- xtw.Close();
- }
- catch (Exception e)
- {
- MessageBox.Show("error loading VM Config.xml: " + e.Message);
- }
- }
#endregion
public VirtualMachine()
- {
+ {/*
vmConfig = new VMConfig();
if (!vmConfig.LoadVirtMachData())
MessageBox.Show("Failed to load VM Schema");
hardDrives = new ArrayList(3);
- netCards = new ArrayList();
+ netCards = new ArrayList();*/
}
public override string ToString()
@@ -490,7 +456,7 @@ namespace RosTEGUI
int sizeIn,
bool bootImgIn)
{
- VMHardDrive vmhd = new VMHardDrive(vmConfig);
+ VMHardDrive vmhd = new VMHardDrive();
if (vmhd.CreateHardDrive(nameIn, driveIn, pathIn, sizeIn, bootImgIn))
{
hardDrives.Add(vmhd);
@@ -510,5 +476,185 @@ namespace RosTEGUI
{
return hardDrives;
}
+
+
+ public bool LoadVmSettings()
+ {
+ bool bRet = false;
+
+ if (dataSet != null)
+ {
+ if (virtMachInfo == null)
+ {
+ virtMachInfo = new List();
+ }
+
+ try
+ {
+ foreach (DataRow vmRow in dataSet.Tables["VMConfig"].Rows)
+ {
+ VirtMachInfo vmi = new VirtMachInfo();
+ vmi.virtMachID = (int)vmRow["VirtMachID"];
+ vmi.name = (string)vmRow["Name"];
+ vmi.machType = (string)vmRow["MachType"];
+ vmi.defDir = (string)vmRow["DefDir"];
+ vmi.memSize = (int)vmRow["MemSize"];
+ vmi.setClockToHost = (bool)vmRow["SetClockToHost"];
+ vmi.cdRomEnable = (bool)vmRow["CdRomEnable"];
+ vmi.cdRomUsePhys = (bool)vmRow["CdRomUsePhys"];
+ vmi.cdRomPhysDrv = (string)vmRow["CdRomPhysDrv"];
+ vmi.cdRomUseIso = (bool)vmRow["CdRomUseIso"];
+ vmi.cdRomIsoImg = (string)vmRow["CdRomIsoImg"];
+ vmi.floppyEnable = (bool)vmRow["FloppyEnable"];
+ vmi.floppyUsePhys = (bool)vmRow["FloppyUsePhys"];
+ vmi.floppyPhysDrv = (string)vmRow["FloppyPhysDrv"];
+ vmi.floppyUseImg = (bool)vmRow["FloppyUseImg"];
+ vmi.floppyIsoImg = (string)vmRow["FloppyIsoImg"];
+
+ virtMachInfo.Add(vmi);
+ }
+
+ bRet = true;
+ }
+ catch (Exception ex)
+ {
+ Debug.LogMessage("error loading VM config", ex.Message, ex.StackTrace, true);
+ }
+ }
+
+ return bRet;
+ }
+
+ public void SaveVmSettings()
+ {
+ if (dataSet != null)
+ {
+ dataSet.Tables["VirtMach"].Rows.Clear();
+
+ try
+ {
+ foreach (VirtMachInfo vmi in virtMachInfo)
+ {
+ DataRow vmRow = dataSet.Tables["VirtMach"].NewRow();
+
+ vmRow["VirtMachID"] = vmi.virtMachID;
+ vmRow["Name"] = vmi.name;
+ vmRow["MachType"] = vmi.machType;
+ vmRow["DefDir"] = vmi.defDir;
+ vmRow["MemSize"] = vmi.memSize;
+ vmRow["SetClockToHost"] = vmi.setClockToHost;
+ vmRow["CdRomEnable"] = vmi.cdRomEnable;
+ vmRow["CdRomUsePhys"] = vmi.cdRomUsePhys;
+ vmRow["CdRomPhysDrv"] = vmi.cdRomPhysDrv;
+ vmRow["CdRomUseIso"] = vmi.cdRomUseIso;
+ vmRow["CdRomIsoImg"] = vmi.cdRomIsoImg;
+ vmRow["FloppyEnable"] = vmi.floppyEnable;
+ vmRow["FloppyUsePhys"] = vmi.floppyUsePhys;
+ vmRow["FloppyPhysDrv"] = vmi.floppyPhysDrv;
+ vmRow["FloppyUseImg"] = vmi.floppyUseImg;
+ vmRow["FloppyIsoImg"] = vmi.floppyIsoImg;
+ }
+ }
+ catch (Exception ex)
+ {
+ Debug.LogMessage("error loading VM config", ex.Message, ex.StackTrace, true);
+ }
+ }
+ }
+
+
+ public bool LoadVMConfig(string path)
+ {
+ XmlTextReader xtr = null;
+ string fileName = path + "\\Config.xml";
+ bool ret = false;
+
+ if (LoadVirtMachSchema())
+ {
+ if (File.Exists(fileName))
+ {
+ try
+ {
+ FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
+ xtr = new XmlTextReader(fs);
+ dataSet.ReadXml(xtr, System.Data.XmlReadMode.ReadSchema);
+ xtr.Close();
+ ret = true;
+ }
+ catch (Exception ex)
+ {
+ Debug.LogMessage("error loading VM config", ex.Message, ex.StackTrace, true);
+ }
+ finally
+ {
+ if (xtr != null)
+ xtr.Close();
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ public void SaveVMConfig()
+ {
+ XmlTextWriter xtw = null;
+ string fileName = DefDir + "\\Config.xml";
+
+ if (!Directory.Exists(DefDir))
+ Directory.CreateDirectory(DefDir);
+
+ if (dataSet == null)
+ {
+ if (!LoadVirtMachSchema())
+ return;
+ }
+
+ try
+ {
+ FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
+ xtw = new XmlTextWriter(fs, System.Text.Encoding.Unicode);
+ dataSet.WriteXml(xtw, System.Data.XmlWriteMode.WriteSchema);
+ }
+ catch (Exception ex)
+ {
+ Debug.LogMessage("error saving VM config", ex.Message, ex.StackTrace, true);
+ }
+ finally
+ {
+ if (xtw != null)
+ xtw.Close();
+ }
+ }
+
+ private bool LoadVirtMachSchema()
+ {
+ XmlTextReader xtr = null;
+ string filename = "VMConfig.xsd";
+ bool ret = false;
+
+ dataSet = new DataSet();
+ if (File.Exists(filename))
+ {
+ try
+ {
+ FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
+ xtr = new XmlTextReader(fs);
+ dataSet.ReadXmlSchema(xtr);
+ ret = true;
+ }
+ catch (Exception ex)
+ {
+ Debug.LogMessage("error loading VM config schema", ex.Message, ex.StackTrace, true);
+ }
+ finally
+ {
+ if (xtr != null)
+ xtr.Close();
+ }
+ }
+
+ return ret;
+ }
}
}
\ No newline at end of file