mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Add GUI skeleton for device contents.
This commit is contained in:
@@ -35,7 +35,8 @@
|
||||
Title="DiscImageChef" ClientSize="600, 450" Padding="10">
|
||||
<Splitter Orientation="Horizontal" Panel1MinimumSize="200" FixedPanel="Panel1" ID="splMain">
|
||||
<Splitter.Panel1>
|
||||
<TreeGridView ID="treeImages" SelectedItemChanged="OnTreeImagesSelectedItemChanged"/>
|
||||
<TreeGridView ID="treeImages" SelectedItemChanged="OnTreeImagesSelectedItemChanged"
|
||||
Expanding="OnTreeImagesItemExpanding"/>
|
||||
</Splitter.Panel1>
|
||||
</Splitter>
|
||||
<Form.Menu>
|
||||
|
||||
@@ -45,6 +45,7 @@ namespace DiscImageChef.Gui
|
||||
bool closing;
|
||||
GridView grdFiles;
|
||||
Label lblError;
|
||||
TreeGridItem placeholderItem;
|
||||
TreeGridView treeImages;
|
||||
TreeGridItemCollection treeImagesItems;
|
||||
|
||||
@@ -73,6 +74,8 @@ namespace DiscImageChef.Gui
|
||||
treeImagesItems.Add(imagesRoot);
|
||||
treeImagesItems.Add(devicesRoot);
|
||||
|
||||
placeholderItem = new TreeGridItem {Values = new object[] {"You should not be seeing this"}};
|
||||
|
||||
Closing += OnClosing;
|
||||
}
|
||||
|
||||
@@ -142,14 +145,13 @@ namespace DiscImageChef.Gui
|
||||
DicConsole.DebugWriteLine("Main window",
|
||||
"Found supported device model {0} by manufacturer {1} on bus {2} and path {3}",
|
||||
device.Model, device.Vendor, device.Bus, device.Path);
|
||||
devicesRoot.Children.Add(new TreeGridItem
|
||||
|
||||
TreeGridItem devItem = new TreeGridItem
|
||||
{
|
||||
Values = new object[]
|
||||
{
|
||||
$"{device.Vendor} {device.Model} ({device.Bus})",
|
||||
device.Path, null
|
||||
}
|
||||
});
|
||||
Values = new object[] {$"{device.Vendor} {device.Model} ({device.Bus})", device.Path, null}
|
||||
};
|
||||
devItem.Children.Add(placeholderItem);
|
||||
devicesRoot.Children.Add(devItem);
|
||||
}
|
||||
|
||||
treeImages.ReloadData();
|
||||
@@ -220,6 +222,60 @@ namespace DiscImageChef.Gui
|
||||
}
|
||||
}
|
||||
|
||||
protected void OnTreeImagesItemExpanding(object sender, TreeGridViewItemCancelEventArgs e)
|
||||
{
|
||||
// First expansion of a device
|
||||
if((e.Item as TreeGridItem)?.Children?.Count == 1 &&
|
||||
((TreeGridItem)e.Item).Children[0] == placeholderItem &&
|
||||
((TreeGridItem)e.Item).Parent == devicesRoot)
|
||||
{
|
||||
TreeGridItem deviceItem = (TreeGridItem)e.Item;
|
||||
|
||||
deviceItem.Children.Clear();
|
||||
Device dev;
|
||||
try
|
||||
{
|
||||
dev = new Device((string)deviceItem.Values[1]);
|
||||
if(dev.Error)
|
||||
{
|
||||
deviceItem.Values[2] = $"Error {dev.LastError} opening device";
|
||||
e.Cancel = true;
|
||||
treeImages.ReloadData();
|
||||
treeImages.SelectedItem = deviceItem;
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch(SystemException ex)
|
||||
{
|
||||
deviceItem.Values[2] = ex.Message;
|
||||
e.Cancel = true;
|
||||
treeImages.ReloadData();
|
||||
DicConsole.ErrorWriteLine(ex.Message);
|
||||
treeImages.SelectedItem = deviceItem;
|
||||
return;
|
||||
}
|
||||
|
||||
if(!dev.IsRemovable)
|
||||
deviceItem.Children.Add(new TreeGridItem
|
||||
{
|
||||
Values = new object[]
|
||||
{
|
||||
"Non-removable device commands not yet implemented"
|
||||
}
|
||||
});
|
||||
else
|
||||
deviceItem.Children.Add(new TreeGridItem
|
||||
{
|
||||
Values = new object[]
|
||||
{
|
||||
"Removable device commands not yet implemented"
|
||||
}
|
||||
});
|
||||
|
||||
dev.Close();
|
||||
}
|
||||
}
|
||||
|
||||
#region XAML IDs
|
||||
TreeGridItem devicesRoot;
|
||||
TreeGridItem imagesRoot;
|
||||
|
||||
Reference in New Issue
Block a user