2018-08-27 15:07:51 +01:00
|
|
|
using System;
|
2018-08-27 18:25:11 +01:00
|
|
|
using System.ComponentModel;
|
2018-08-27 15:07:51 +01:00
|
|
|
using System.Linq;
|
2018-08-27 18:25:11 +01:00
|
|
|
using DiscImageChef.Console;
|
2018-08-27 15:07:51 +01:00
|
|
|
using DiscImageChef.Devices;
|
|
|
|
|
using Eto.Forms;
|
|
|
|
|
using Eto.Serialization.Xaml;
|
|
|
|
|
|
|
|
|
|
namespace DiscImageChef.Gui
|
|
|
|
|
{
|
|
|
|
|
public class frmMain : Form
|
|
|
|
|
{
|
2018-08-27 18:25:11 +01:00
|
|
|
bool closing;
|
2018-08-27 15:07:51 +01:00
|
|
|
Splitter splMain;
|
|
|
|
|
TreeGridView treeImages;
|
|
|
|
|
TreeGridItemCollection treeImagesItems;
|
|
|
|
|
|
2018-08-27 18:25:11 +01:00
|
|
|
public frmMain(bool debug, bool verbose)
|
2018-08-27 15:07:51 +01:00
|
|
|
{
|
|
|
|
|
XamlReader.Load(this);
|
|
|
|
|
|
2018-08-27 18:25:11 +01:00
|
|
|
ConsoleHandler.Init();
|
|
|
|
|
ConsoleHandler.Debug = debug;
|
|
|
|
|
ConsoleHandler.Verbose = verbose;
|
|
|
|
|
|
2018-08-27 15:07:51 +01:00
|
|
|
treeImagesItems = new TreeGridItemCollection();
|
|
|
|
|
|
|
|
|
|
treeImages.Columns.Add(new GridColumn {HeaderText = "Name", DataCell = new TextBoxCell(0)});
|
|
|
|
|
|
|
|
|
|
treeImages.AllowMultipleSelection = false;
|
|
|
|
|
treeImages.ShowHeader = false;
|
|
|
|
|
treeImages.DataStore = treeImagesItems;
|
|
|
|
|
|
2018-08-27 18:25:11 +01:00
|
|
|
imagesRoot = new TreeGridItem {Values = new object[] {"Images"}};
|
2018-08-27 15:07:51 +01:00
|
|
|
devicesRoot = new TreeGridItem {Values = new object[] {"Devices"}};
|
|
|
|
|
|
|
|
|
|
treeImagesItems.Add(imagesRoot);
|
|
|
|
|
treeImagesItems.Add(devicesRoot);
|
2018-08-27 18:25:11 +01:00
|
|
|
|
|
|
|
|
Closing += OnClosing;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OnClosing(object sender, CancelEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
// This prevents an infinite loop of crashes :p
|
|
|
|
|
if(closing) return;
|
|
|
|
|
|
|
|
|
|
closing = true;
|
|
|
|
|
Application.Instance.Quit();
|
2018-08-27 15:07:51 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void OnMenuOpen(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("Not yet implemented");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void OnMenuAbout(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
new AboutDialog().ShowDialog(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void OnMenuQuit(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Application.Instance.Quit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void OnDeviceRefresh(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
RefreshDevices();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnLoadComplete(EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
base.OnLoadComplete(e);
|
|
|
|
|
|
|
|
|
|
RefreshDevices();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RefreshDevices()
|
|
|
|
|
{
|
2018-08-27 18:25:11 +01:00
|
|
|
DicConsole.WriteLine("Refreshing devices");
|
2018-08-27 15:07:51 +01:00
|
|
|
devicesRoot.Children.Clear();
|
|
|
|
|
|
|
|
|
|
foreach(DeviceInfo device in Device.ListDevices().Where(d => d.Supported).OrderBy(d => d.Vendor)
|
|
|
|
|
.ThenBy(d => d.Model))
|
|
|
|
|
{
|
2018-08-27 18:25:11 +01:00
|
|
|
DicConsole.DebugWriteLine("Main window",
|
|
|
|
|
"Found support device model {0} by manufacturer {1} on bus {2} and path {3}",
|
|
|
|
|
device.Model, device.Vendor, device.Bus, device.Path);
|
2018-08-27 15:07:51 +01:00
|
|
|
devicesRoot.Children.Add(new TreeGridItem
|
|
|
|
|
{
|
|
|
|
|
Values = new object[] {$"{device.Vendor} {device.Model} ({device.Bus})", device.Path}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
treeImages.ReloadData();
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-27 18:25:11 +01:00
|
|
|
protected void OnMenuConsole(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
new frmConsole().Show();
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-27 15:07:51 +01:00
|
|
|
#region XAML IDs
|
|
|
|
|
TreeGridItem devicesRoot;
|
|
|
|
|
GridView grdFiles;
|
|
|
|
|
TreeGridItem imagesRoot;
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|