Files
Aaru/DiscImageChef.Gui/frmMain.xeto.cs

110 lines
3.2 KiB
C#
Raw Normal View History

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
}
}