mirror of
https://github.com/claunia/osrepodbmgr.git
synced 2025-12-16 19:14:25 +00:00
Updated DIC and Metadata code.
This commit is contained in:
Submodule CICMMetadata deleted from 97781ddc50
Submodule DiscImageChef updated: 8859eed894...1df2589b39
@@ -1,3 +1,6 @@
|
||||
* Workers/DiscImageChef.cs:
|
||||
Updated DIC and Metadata code.
|
||||
|
||||
2017-06-13 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* Workers/Clamd.cs:
|
||||
|
||||
@@ -389,8 +389,6 @@ namespace osrepodbmgr.Core
|
||||
foreach(Track trk in tracks)
|
||||
{
|
||||
currentProgress++;
|
||||
if(UpdateProgress != null)
|
||||
UpdateProgress(null, string.Format("Hashing track {0}", trk.TrackSequence), currentProgress, maxProgress);
|
||||
|
||||
Schemas.TrackType xmlTrk = new Schemas.TrackType();
|
||||
switch(trk.TrackType)
|
||||
@@ -469,12 +467,21 @@ namespace osrepodbmgr.Core
|
||||
xmlTrk.BytesPerSector = trk.TrackBytesPerSector;
|
||||
|
||||
uint sectorsToRead = 512;
|
||||
|
||||
Checksum trkChkWorker = new Checksum();
|
||||
|
||||
ulong sectors = (ulong)(xmlTrk.EndSector - xmlTrk.StartSector + 1);
|
||||
ulong doneSectors = 0;
|
||||
|
||||
// If there is only one track, and it's the same as the image file (e.g. ".iso" files), don't re-checksum.
|
||||
if(_imageFormat.PluginUUID == new Guid("12345678-AAAA-BBBB-CCCC-123456789000"))
|
||||
{
|
||||
xmlTrk.Checksums = sidecar.OpticalDisc[0].Checksums;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(UpdateProgress != null)
|
||||
UpdateProgress(null, string.Format("Hashing track {0}", trk.TrackSequence), currentProgress, maxProgress);
|
||||
|
||||
Checksum trkChkWorker = new Checksum();
|
||||
|
||||
#if DEBUG
|
||||
stopwatch.Restart();
|
||||
#endif
|
||||
@@ -507,6 +514,7 @@ namespace osrepodbmgr.Core
|
||||
#endif
|
||||
|
||||
xmlTrk.Checksums = trkChecksums.ToArray();
|
||||
}
|
||||
|
||||
if(UpdateProgress2 != null)
|
||||
UpdateProgress2(null, null, 0, 0);
|
||||
@@ -716,7 +724,7 @@ namespace osrepodbmgr.Core
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray = new DumpHardwareType[1];
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents = new ExtentType[0];
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].Start = 0;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].End = (int)_imageFormat.ImageInfo.sectors;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].End = _imageFormat.ImageInfo.sectors;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Manufacturer = _imageFormat.ImageInfo.driveManufacturer;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Model = _imageFormat.ImageInfo.driveModel;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Firmware = _imageFormat.ImageInfo.driveFirmwareRevision;
|
||||
@@ -856,6 +864,58 @@ namespace osrepodbmgr.Core
|
||||
Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash media tags", stopwatch.Elapsed.TotalSeconds);
|
||||
#endif
|
||||
|
||||
// If there is only one track, and it's the same as the image file (e.g. ".iso" files), don't re-checksum.
|
||||
if(_imageFormat.PluginUUID == new System.Guid("12345678-AAAA-BBBB-CCCC-123456789000"))
|
||||
{
|
||||
sidecar.BlockMedia[0].ContentChecksums = sidecar.BlockMedia[0].Checksums;
|
||||
}
|
||||
else
|
||||
{
|
||||
Checksum contentChkWorker = new Checksum();
|
||||
|
||||
uint sectorsToRead = 512;
|
||||
ulong sectors = _imageFormat.GetSectors();
|
||||
ulong doneSectors = 0;
|
||||
|
||||
if(UpdateProgress != null)
|
||||
UpdateProgress(null, "Hashing media contents", currentProgress, maxProgress);
|
||||
|
||||
Checksum cntChkWorker = new Checksum();
|
||||
|
||||
#if DEBUG
|
||||
stopwatch.Restart();
|
||||
#endif
|
||||
while(doneSectors < sectors)
|
||||
{
|
||||
byte[] sector;
|
||||
|
||||
if((sectors - doneSectors) >= sectorsToRead)
|
||||
{
|
||||
sector = _imageFormat.ReadSectors(doneSectors, sectorsToRead);
|
||||
if(UpdateProgress2 != null)
|
||||
UpdateProgress2(null, string.Format("Sector {0} of {1}", doneSectors, sectors), (long)doneSectors, (long)sectors);
|
||||
doneSectors += sectorsToRead;
|
||||
}
|
||||
else
|
||||
{
|
||||
sector = _imageFormat.ReadSectors(doneSectors, (uint)(sectors - doneSectors));
|
||||
if(UpdateProgress2 != null)
|
||||
UpdateProgress2(null, string.Format("Sector {0} of {1}", doneSectors, sectors), (long)doneSectors, (long)sectors);
|
||||
doneSectors += (sectors - doneSectors);
|
||||
}
|
||||
|
||||
cntChkWorker.Update(sector);
|
||||
}
|
||||
|
||||
List<ChecksumType> cntChecksums = cntChkWorker.End();
|
||||
#if DEBUG
|
||||
stopwatch.Stop();
|
||||
Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash media contents", stopwatch.Elapsed.TotalSeconds);
|
||||
#endif
|
||||
|
||||
sidecar.BlockMedia[0].ContentChecksums = cntChecksums.ToArray();
|
||||
}
|
||||
|
||||
string dskType, dskSubType;
|
||||
DiscImageChef.Metadata.MediaType.MediaTypeToString(_imageFormat.ImageInfo.mediaType, out dskType, out dskSubType);
|
||||
sidecar.BlockMedia[0].DiskType = dskType;
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
* dlgMetadata.xeto:
|
||||
* dlgMetadata.xeto.cs:
|
||||
* dlgOpticalDisc.xeto:
|
||||
* dlgBlockMedia.xeto.cs:
|
||||
* dlgOpticalDisc.xeto.cs:
|
||||
Updated DIC and Metadata code.
|
||||
|
||||
2017-05-21 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* dlgAdd.xeto.cs:
|
||||
|
||||
@@ -210,6 +210,7 @@ namespace osrepodbmgr.Eto
|
||||
BlockSizeType[] variableBlockSize;
|
||||
TapePartitionType[] tapeInformation;
|
||||
ScansType scans;
|
||||
ChecksumType[] contentChks;
|
||||
|
||||
public dlgBlockMedia()
|
||||
{
|
||||
@@ -321,12 +322,12 @@ namespace osrepodbmgr.Eto
|
||||
|
||||
treeExtents.Columns.Add(new GridColumn
|
||||
{
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<ExtentType, int>(r => r.Start).Convert(v => v.ToString()) },
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<ExtentType, ulong>(r => r.Start).Convert(v => v.ToString()) },
|
||||
HeaderText = "Start"
|
||||
});
|
||||
treeExtents.Columns.Add(new GridColumn
|
||||
{
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<ExtentType, int>(r => r.End).Convert(v => v.ToString()) },
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<ExtentType, ulong>(r => r.End).Convert(v => v.ToString()) },
|
||||
HeaderText = "End"
|
||||
});
|
||||
#endregion Set dump hardware table
|
||||
@@ -644,6 +645,7 @@ namespace osrepodbmgr.Eto
|
||||
txtOffset.Text = Metadata.Image.offset.ToString();
|
||||
txtSize.Text = Metadata.Size.ToString();
|
||||
checksums = Metadata.Checksums;
|
||||
contentChks = Metadata.ContentChecksums;
|
||||
if(Metadata.Sequence != null)
|
||||
{
|
||||
lblMediaTitle.Visible = true;
|
||||
@@ -1196,7 +1198,7 @@ namespace osrepodbmgr.Eto
|
||||
|
||||
protected void OnBtnAddExtentClicked(object sender, EventArgs e)
|
||||
{
|
||||
((ObservableCollection<ExtentType>)treeExtents.DataStore).Add(new ExtentType { Start = (int)spExtentStart.Value, End = (int)spExtentEnd.Value });
|
||||
((ObservableCollection<ExtentType>)treeExtents.DataStore).Add(new ExtentType { Start = (ulong)spExtentStart.Value, End = (ulong)spExtentEnd.Value });
|
||||
}
|
||||
|
||||
protected void OnBtnCancelClicked(object sender, EventArgs e)
|
||||
@@ -1477,6 +1479,7 @@ namespace osrepodbmgr.Eto
|
||||
}
|
||||
Metadata.Size = long.Parse(txtSize.Text);
|
||||
Metadata.Checksums = checksums;
|
||||
Metadata.ContentChecksums = contentChks;
|
||||
|
||||
if(chkSequence.Checked.Value)
|
||||
{
|
||||
|
||||
@@ -252,14 +252,18 @@
|
||||
<Button ID="btnClearDiscs" Click="OnBtnClearDiscsClicked">Clear</Button>
|
||||
<Button ID="btnRemoveDisc" Click="OnBtnRemoveDiscClicked">Remove</Button>
|
||||
</StackLayout>
|
||||
<StackLayout Orientation="Horizontal">
|
||||
<StackLayoutItem HorizontalAlignment="Stretch">
|
||||
<Label ID="lblAddDisc1" Visible="False">Progress 1</Label>
|
||||
</StackLayoutItem>
|
||||
<StackLayoutItem HorizontalAlignment="Stretch">
|
||||
<ProgressBar ID="prgAddDisc1" Visible="False" />
|
||||
</StackLayout>
|
||||
<StackLayout Orientation="Horizontal">
|
||||
</StackLayoutItem>
|
||||
<StackLayoutItem HorizontalAlignment="Stretch">
|
||||
<Label ID="lblAddDisc2" Visible="False">Progress 2</Label>
|
||||
</StackLayoutItem>
|
||||
<StackLayoutItem HorizontalAlignment="Stretch">
|
||||
<ProgressBar ID="prgAddDisc2" Visible="False" />
|
||||
</StackLayout>
|
||||
</StackLayoutItem>
|
||||
</StackLayout>
|
||||
</TabPage>
|
||||
<TabPage Text="Block disks" ID="tabDisks">
|
||||
@@ -283,14 +287,18 @@
|
||||
<Button ID="btnClearDisks" Click="OnBtnClearDisksClicked">Clear</Button>
|
||||
<Button ID="btnRemoveDisk" Click="OnBtnRemoveDiskClicked">Remove</Button>
|
||||
</StackLayout>
|
||||
<StackLayout Orientation="Horizontal">
|
||||
<StackLayoutItem HorizontalAlignment="Stretch">
|
||||
<Label ID="lblAddDisk1" Visible="False">Progress 1</Label>
|
||||
</StackLayoutItem>
|
||||
<StackLayoutItem HorizontalAlignment="Stretch">
|
||||
<ProgressBar ID="prgAddDisk1" Visible="False" />
|
||||
</StackLayout>
|
||||
<StackLayout Orientation="Horizontal">
|
||||
</StackLayoutItem>
|
||||
<StackLayoutItem HorizontalAlignment="Stretch">
|
||||
<Label ID="lblAddDisk2" Visible="False">Progress 2</Label>
|
||||
</StackLayoutItem>
|
||||
<StackLayoutItem HorizontalAlignment="Stretch">
|
||||
<ProgressBar ID="prgAddDisk2" Visible="False" />
|
||||
</StackLayout>
|
||||
</StackLayoutItem>
|
||||
</StackLayout>
|
||||
</TabPage>
|
||||
</TabControl>
|
||||
|
||||
@@ -652,6 +652,8 @@ namespace osrepodbmgr.Eto
|
||||
tabDisks.Visible = false;
|
||||
prgAddDisc1.Visible = true;
|
||||
prgAddDisc2.Visible = true;
|
||||
lblAddDisc1.Visible = true;
|
||||
lblAddDisc2.Visible = true;
|
||||
btnCancel.Visible = false;
|
||||
btnOK.Visible = false;
|
||||
btnEditDisc.Visible = false;
|
||||
@@ -733,6 +735,8 @@ namespace osrepodbmgr.Eto
|
||||
tabDisks.Visible = true;
|
||||
prgAddDisc1.Visible = false;
|
||||
prgAddDisc2.Visible = false;
|
||||
lblAddDisc1.Visible = false;
|
||||
lblAddDisc2.Visible = false;
|
||||
btnCancel.Visible = true;
|
||||
btnOK.Visible = true;
|
||||
btnEditDisc.Visible = true;
|
||||
@@ -825,6 +829,8 @@ namespace osrepodbmgr.Eto
|
||||
tabDisks.Visible = true;
|
||||
prgAddDisc1.Visible = false;
|
||||
prgAddDisc2.Visible = false;
|
||||
lblAddDisc1.Visible = false;
|
||||
lblAddDisc2.Visible = false;
|
||||
btnCancel.Visible = true;
|
||||
btnOK.Visible = true;
|
||||
btnEditDisc.Visible = true;
|
||||
@@ -870,6 +876,8 @@ namespace osrepodbmgr.Eto
|
||||
tabDiscs.Visible = false;
|
||||
prgAddDisk1.Visible = true;
|
||||
prgAddDisk2.Visible = true;
|
||||
lblAddDisk1.Visible = true;
|
||||
lblAddDisk2.Visible = true;
|
||||
btnCancel.Visible = false;
|
||||
btnOK.Visible = false;
|
||||
btnEditDisk.Visible = false;
|
||||
@@ -951,6 +959,8 @@ namespace osrepodbmgr.Eto
|
||||
tabDiscs.Visible = true;
|
||||
prgAddDisk1.Visible = false;
|
||||
prgAddDisk2.Visible = false;
|
||||
lblAddDisk1.Visible = false;
|
||||
lblAddDisk2.Visible = false;
|
||||
btnCancel.Visible = true;
|
||||
btnOK.Visible = true;
|
||||
btnEditDisk.Visible = true;
|
||||
@@ -1039,6 +1049,8 @@ namespace osrepodbmgr.Eto
|
||||
tabDiscs.Visible = true;
|
||||
prgAddDisk1.Visible = false;
|
||||
prgAddDisk2.Visible = false;
|
||||
lblAddDisk1.Visible = false;
|
||||
lblAddDisk2.Visible = false;
|
||||
btnCancel.Visible = true;
|
||||
btnOK.Visible = true;
|
||||
btnEditDisk.Visible = true;
|
||||
|
||||
@@ -418,27 +418,6 @@
|
||||
</StackLayoutItem>
|
||||
</StackLayout>
|
||||
</TabPage>
|
||||
<TabPage Text="Xbox">
|
||||
<StackLayout Orientation="Vertical">
|
||||
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<GroupBox Text="Security sectors" ID="frmXboxSS">
|
||||
<StackLayout Orientation="Vertical">
|
||||
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<GridView ID="treeXboxSS" />
|
||||
</StackLayoutItem>
|
||||
<StackLayout Orientation="Horizontal">
|
||||
<Label>Start</Label>
|
||||
<TextBox ID="txtSSStart" />
|
||||
<Label>End</Label>
|
||||
<TextBox ID="txtSSEnd" />
|
||||
<Button ID="btnRemoveSS" Click="OnBtnRemoveSSClicked">Remove</Button>
|
||||
<Button ID="btnAddSS" Click="OnBtnAddSSClicked">Add</Button>
|
||||
</StackLayout>
|
||||
</StackLayout>
|
||||
</GroupBox>
|
||||
</StackLayoutItem>
|
||||
</StackLayout>
|
||||
</TabPage>
|
||||
<TabPage Text="PlayStation">
|
||||
<StackLayout Orientation="Vertical">
|
||||
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
|
||||
@@ -133,9 +133,6 @@ namespace osrepodbmgr.Eto
|
||||
GridView treeDI;
|
||||
GroupBox frmPAC;
|
||||
GridView treePAC;
|
||||
GridView treeXboxSS;
|
||||
TextBox txtSSStart;
|
||||
TextBox txtSSEnd;
|
||||
TextBox txtPS3Key;
|
||||
TextBox txtPS3Serial;
|
||||
GridView treeTracks;
|
||||
@@ -226,7 +223,6 @@ namespace osrepodbmgr.Eto
|
||||
ObservableCollection<SectorsType> lstLayers;
|
||||
ObservableCollection<Schemas.BorderType> lstLeadIns;
|
||||
ObservableCollection<Schemas.BorderType> lstLeadOuts;
|
||||
ObservableCollection<SecuritySectorsType> lstXboxSS;
|
||||
ObservableCollection<TrackType> lstTracks;
|
||||
|
||||
bool editingPartition;
|
||||
@@ -236,6 +232,7 @@ namespace osrepodbmgr.Eto
|
||||
ChecksumType[] checksums;
|
||||
CaseType mediaCase;
|
||||
ScansType scans;
|
||||
XboxType xbox;
|
||||
|
||||
public dlgOpticalDisc()
|
||||
{
|
||||
@@ -342,12 +339,12 @@ namespace osrepodbmgr.Eto
|
||||
|
||||
treeExtents.Columns.Add(new GridColumn
|
||||
{
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<ExtentType, int>(r => r.Start).Convert(v => v.ToString()) },
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<ExtentType, ulong>(r => r.Start).Convert(v => v.ToString()) },
|
||||
HeaderText = "Start"
|
||||
});
|
||||
treeExtents.Columns.Add(new GridColumn
|
||||
{
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<ExtentType, int>(r => r.End).Convert(v => v.ToString()) },
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<ExtentType, ulong>(r => r.End).Convert(v => v.ToString()) },
|
||||
HeaderText = "End"
|
||||
});
|
||||
#endregion Set dump hardware table
|
||||
@@ -762,25 +759,6 @@ namespace osrepodbmgr.Eto
|
||||
treeLeadOut.DataStore = lstLeadOuts;
|
||||
#endregion Set Lead-Out table
|
||||
|
||||
#region Set Xbox security sectors table
|
||||
lstXboxSS = new ObservableCollection<SecuritySectorsType>();
|
||||
|
||||
treeXboxSS.Columns.Add(new GridColumn
|
||||
{
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<SecuritySectorsType, long>(r => r.Start).Convert(v => v.ToString()) },
|
||||
HeaderText = "Start"
|
||||
});
|
||||
treeXboxSS.Columns.Add(new GridColumn
|
||||
{
|
||||
DataCell = new TextBoxCell { Binding = Binding.Property<SecuritySectorsType, long>(r => r.End).Convert(v => v.ToString()) },
|
||||
HeaderText = "End"
|
||||
});
|
||||
|
||||
treeXboxSS.DataStore = lstXboxSS;
|
||||
|
||||
treeXboxSS.AllowMultipleSelection = false;
|
||||
#endregion Set Xbox security sectors table
|
||||
|
||||
#region Set tracks table
|
||||
lstTracks = new ObservableCollection<TrackType>();
|
||||
|
||||
@@ -902,6 +880,7 @@ namespace osrepodbmgr.Eto
|
||||
}
|
||||
|
||||
checksums = Metadata.Checksums;
|
||||
xbox = Metadata.Xbox;
|
||||
|
||||
if(Metadata.RingCode != null)
|
||||
{
|
||||
@@ -1071,12 +1050,6 @@ namespace osrepodbmgr.Eto
|
||||
treeLeadOut.DataStore = lstLeadOuts;
|
||||
}
|
||||
|
||||
if(Metadata.XboxSecuritySectors != null)
|
||||
{
|
||||
lstXboxSS = new ObservableCollection<Schemas.SecuritySectorsType>(Metadata.XboxSecuritySectors);
|
||||
treeXboxSS.DataStore = lstXboxSS;
|
||||
}
|
||||
|
||||
if(Metadata.PS3Encryption != null)
|
||||
{
|
||||
txtPS3Key.Text = Metadata.PS3Encryption.Key;
|
||||
@@ -1169,37 +1142,6 @@ namespace osrepodbmgr.Eto
|
||||
lstLayers.Remove((SectorsType)treeLayers.SelectedItem);
|
||||
}
|
||||
|
||||
protected void OnBtnRemoveSSClicked(object sender, EventArgs e)
|
||||
{
|
||||
if(treeXboxSS.SelectedItem != null)
|
||||
lstXboxSS.Remove((SecuritySectorsType)treeXboxSS.SelectedItem);
|
||||
}
|
||||
|
||||
protected void OnBtnAddSSClicked(object sender, EventArgs e)
|
||||
{
|
||||
int temp, temp2;
|
||||
|
||||
if(!int.TryParse(txtSSStart.Text, out temp))
|
||||
{
|
||||
ErrorMessageBox("Xbox Security Sector start must be a number");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!int.TryParse(txtSSEnd.Text, out temp2))
|
||||
{
|
||||
ErrorMessageBox("Xbox Security Sector end must be a number");
|
||||
return;
|
||||
}
|
||||
|
||||
if(temp2 <= temp)
|
||||
{
|
||||
ErrorMessageBox("Xbox Security Sector must end after start, and be bigger than 1 sector");
|
||||
return;
|
||||
}
|
||||
|
||||
lstXboxSS.Add(new SecuritySectorsType { Start = long.Parse(txtSSStart.Text), End = long.Parse(txtSSEnd.Text) });
|
||||
}
|
||||
|
||||
protected void OnBtnRemovePartitionClicked(object sender, EventArgs e)
|
||||
{
|
||||
if(treePartitions.SelectedItem != null)
|
||||
@@ -1533,7 +1475,7 @@ namespace osrepodbmgr.Eto
|
||||
|
||||
protected void OnBtnAddExtentClicked(object sender, EventArgs e)
|
||||
{
|
||||
((ObservableCollection<ExtentType>)treeExtents.DataStore).Add(new ExtentType { Start = (int)spExtentStart.Value, End = (int)spExtentEnd.Value });
|
||||
((ObservableCollection<ExtentType>)treeExtents.DataStore).Add(new ExtentType { Start = (ulong)spExtentStart.Value, End = (ulong)spExtentEnd.Value });
|
||||
}
|
||||
|
||||
protected void OnBtnAddRingCodeClicked(object sender, EventArgs e)
|
||||
@@ -1733,6 +1675,7 @@ namespace osrepodbmgr.Eto
|
||||
}
|
||||
|
||||
Metadata.Checksums = checksums;
|
||||
Metadata.Xbox = xbox;
|
||||
|
||||
if(lstRingCodes.Count > 0)
|
||||
Metadata.RingCode = lstRingCodes.ToArray();
|
||||
@@ -1835,9 +1778,6 @@ namespace osrepodbmgr.Eto
|
||||
if(lstLeadOuts.Count == 1)
|
||||
Metadata.LeadOut = lstLeadOuts.ToArray();
|
||||
|
||||
if(lstXboxSS.Count == 1)
|
||||
Metadata.XboxSecuritySectors = lstXboxSS.ToArray();
|
||||
|
||||
if(!string.IsNullOrWhiteSpace(txtPS3Key.Text) && !string.IsNullOrWhiteSpace(txtPS3Serial.Text))
|
||||
{
|
||||
Metadata.PS3Encryption = new PS3EncryptionType();
|
||||
|
||||
@@ -19,8 +19,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Partitions",
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.CommonTypes", "DiscImageChef\DiscImageChef.CommonTypes\DiscImageChef.CommonTypes.csproj", "{F2B84194-26EB-4227-B1C5-6602517E85AE}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Claunia.RsrcFork", "DiscImageChef\Claunia.RsrcFork\Claunia.RsrcFork\Claunia.RsrcFork.csproj", "{CA231ED3-0C78-496C-AAFE-D085F6E9BEC6}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Decoders", "DiscImageChef\DiscImageChef.Decoders\DiscImageChef.Decoders.csproj", "{0BEB3088-B634-4289-AE17-CDF2D25D00D5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Metadata", "DiscImageChef\DiscImageChef.Metadata\DiscImageChef.Metadata.csproj", "{9F213318-5CB8-4066-A757-074489C9F818}"
|
||||
@@ -75,10 +73,6 @@ Global
|
||||
{F2B84194-26EB-4227-B1C5-6602517E85AE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{F2B84194-26EB-4227-B1C5-6602517E85AE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F2B84194-26EB-4227-B1C5-6602517E85AE}.Release|x86.Build.0 = Release|Any CPU
|
||||
{CA231ED3-0C78-496C-AAFE-D085F6E9BEC6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{CA231ED3-0C78-496C-AAFE-D085F6E9BEC6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{CA231ED3-0C78-496C-AAFE-D085F6E9BEC6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{CA231ED3-0C78-496C-AAFE-D085F6E9BEC6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{0BEB3088-B634-4289-AE17-CDF2D25D00D5}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{0BEB3088-B634-4289-AE17-CDF2D25D00D5}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{0BEB3088-B634-4289-AE17-CDF2D25D00D5}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
@@ -107,34 +101,15 @@ Global
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
Policies = $0
|
||||
$0.TextStylePolicy = $1
|
||||
$1.FileWidth = 120
|
||||
$1.inheritsSet = VisualStudio
|
||||
$1.inheritsScope = text/plain
|
||||
$1.scope = text/x-csharp
|
||||
$1.TabsToSpaces = True
|
||||
$0.CSharpFormattingPolicy = $2
|
||||
$2.IndentSwitchSection = True
|
||||
$2.NewLinesForBracesInProperties = True
|
||||
$2.NewLinesForBracesInAccessors = True
|
||||
$2.NewLinesForBracesInAnonymousMethods = True
|
||||
$2.NewLinesForBracesInControlBlocks = True
|
||||
$2.NewLinesForBracesInAnonymousTypes = True
|
||||
$2.NewLinesForBracesInObjectCollectionArrayInitializers = True
|
||||
$2.NewLinesForBracesInLambdaExpressionBody = True
|
||||
$2.NewLineForElse = True
|
||||
$2.NewLineForCatch = True
|
||||
$2.NewLineForFinally = True
|
||||
$2.inheritsSet = Mono
|
||||
$2.inheritsScope = text/x-csharp
|
||||
$2.scope = text/x-csharp
|
||||
$2.SpacingAfterMethodDeclarationName = False
|
||||
$2.SpaceAfterMethodCallName = False
|
||||
$2.SpaceAfterControlFlowStatementKeyword = False
|
||||
$2.SpaceBeforeOpenSquareBracket = False
|
||||
$0.ChangeLogPolicy = $3
|
||||
$3.UpdateMode = ProjectRoot
|
||||
$3.MessageStyle = $4
|
||||
$4.LastFilePostfix = "@:\n "
|
||||
$4.IncludeDirectoryPaths = True
|
||||
$3.inheritsSet = Mono
|
||||
$4.LineAlign = 2
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
* dlgBlockMedia.cs:
|
||||
* dlgOpticalDisc.cs:
|
||||
* gtk-gui/dlgAdd.cs:
|
||||
* gtk-gui/gui.stetic:
|
||||
* gtk-gui/generated.cs:
|
||||
* gtk-gui/osrepodbmgr.dlgHelp.cs:
|
||||
* gtk-gui/osrepodbmgr.frmMain.cs:
|
||||
* gtk-gui/osrepodbmgr.dlgMetadata.cs:
|
||||
* gtk-gui/osrepodbmgr.dlgSettings.cs:
|
||||
* gtk-gui/osrepodbmgr.dlgFilesystem.cs:
|
||||
* gtk-gui/osrepodbmgr.dlgBlockMedia.cs:
|
||||
* gtk-gui/osrepodbmgr.dlgOpticalDisc.cs:
|
||||
Updated DIC and Metadata code.
|
||||
|
||||
2017-05-21 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* dlgAdd.cs:
|
||||
|
||||
@@ -67,6 +67,7 @@ namespace osrepodbmgr
|
||||
BlockSizeType[] variableBlockSize;
|
||||
TapePartitionType[] tapeInformation;
|
||||
ScansType scans;
|
||||
ChecksumType[] contentChks;
|
||||
|
||||
public dlgBlockMedia()
|
||||
{
|
||||
@@ -347,6 +348,7 @@ namespace osrepodbmgr
|
||||
txtOffset.Text = Metadata.Image.offset.ToString();
|
||||
txtSize.Text = Metadata.Size.ToString();
|
||||
checksums = Metadata.Checksums;
|
||||
contentChks = Metadata.ContentChecksums;
|
||||
if(Metadata.Sequence != null)
|
||||
{
|
||||
lblMediaTitle.Visible = true;
|
||||
@@ -590,7 +592,7 @@ namespace osrepodbmgr
|
||||
{
|
||||
if(hw.Extents != null)
|
||||
{
|
||||
ListStore lstExtents = new ListStore(typeof(int), typeof(int));
|
||||
ListStore lstExtents = new ListStore(typeof(ulong), typeof(ulong));
|
||||
foreach(ExtentType extent in hw.Extents)
|
||||
lstExtents.AppendValues(extent.Start, extent.End);
|
||||
if(hw.Software != null)
|
||||
@@ -1385,6 +1387,7 @@ namespace osrepodbmgr
|
||||
}
|
||||
Metadata.Size = long.Parse(txtSize.Text);
|
||||
Metadata.Checksums = checksums;
|
||||
Metadata.ContentChecksums = contentChks;
|
||||
|
||||
if(chkSequence.Active)
|
||||
{
|
||||
@@ -1705,8 +1708,8 @@ namespace osrepodbmgr
|
||||
do
|
||||
{
|
||||
ExtentType extent = new ExtentType();
|
||||
extent.Start = (int)lstExtents.GetValue(extIter, 0);
|
||||
extent.End = (int)lstExtents.GetValue(extIter, 1);
|
||||
extent.Start = (ulong)lstExtents.GetValue(extIter, 0);
|
||||
extent.End = (ulong)lstExtents.GetValue(extIter, 1);
|
||||
extents.Add(extent);
|
||||
}
|
||||
while(lstExtents.IterNext(ref extIter));
|
||||
|
||||
@@ -80,6 +80,7 @@ namespace osrepodbmgr
|
||||
ChecksumType[] checksums;
|
||||
CaseType mediaCase;
|
||||
ScansType scans;
|
||||
XboxType xbox;
|
||||
|
||||
public dlgOpticalDisc()
|
||||
{
|
||||
@@ -374,17 +375,6 @@ namespace osrepodbmgr
|
||||
treeLeadOut.AppendColumn(sessionColumn);
|
||||
#endregion Set Lead-Out table
|
||||
|
||||
#region Set Xbox security sectors table
|
||||
CellRendererText ssStartCell = new CellRendererText();
|
||||
CellRendererText ssEndCell = new CellRendererText();
|
||||
TreeViewColumn ssStartColumn = new TreeViewColumn("Start", ssStartCell, "text", 0);
|
||||
TreeViewColumn ssEndColumn = new TreeViewColumn("End", ssEndCell, "text", 1);
|
||||
lstXboxSS = new ListStore(typeof(int), typeof(int));
|
||||
treeXboxSS.Model = lstXboxSS;
|
||||
treeXboxSS.AppendColumn(ssStartColumn);
|
||||
treeXboxSS.AppendColumn(ssEndColumn);
|
||||
#endregion Set Xbox security sectors table
|
||||
|
||||
#region Set tracks table
|
||||
lstTracks = new ListStore(typeof(int), typeof(int), typeof(string), typeof(long), typeof(string), typeof(long), typeof(string), typeof(string),
|
||||
typeof(long), typeof(long), typeof(string), typeof(int), typeof(string), typeof(ChecksumType[]), typeof(SubChannelType),
|
||||
@@ -499,6 +489,7 @@ namespace osrepodbmgr
|
||||
}
|
||||
|
||||
checksums = Metadata.Checksums;
|
||||
xbox = Metadata.Xbox;
|
||||
|
||||
if(Metadata.RingCode != null)
|
||||
{
|
||||
@@ -676,12 +667,6 @@ namespace osrepodbmgr
|
||||
lstLeadOuts.AppendValues(leadout.Image, leadout.Size, leadout.session, leadout.Checksums);
|
||||
}
|
||||
|
||||
if(Metadata.XboxSecuritySectors != null)
|
||||
{
|
||||
foreach(SecuritySectorsType ss in Metadata.XboxSecuritySectors)
|
||||
lstXboxSS.AppendValues(ss.Start, ss.End);
|
||||
}
|
||||
|
||||
if(Metadata.PS3Encryption != null)
|
||||
{
|
||||
txtPS3Key.Text = Metadata.PS3Encryption.Key;
|
||||
@@ -724,7 +709,7 @@ namespace osrepodbmgr
|
||||
{
|
||||
if(hw.Extents != null)
|
||||
{
|
||||
ListStore lstExtents = new ListStore(typeof(int), typeof(int));
|
||||
ListStore lstExtents = new ListStore(typeof(ulong), typeof(ulong));
|
||||
foreach(ExtentType extent in hw.Extents)
|
||||
lstExtents.AppendValues(extent.Start, extent.End);
|
||||
if(hw.Software != null)
|
||||
@@ -834,45 +819,6 @@ namespace osrepodbmgr
|
||||
lstLayers.Remove(ref outIter);
|
||||
}
|
||||
|
||||
protected void OnBtnRemoveSSClicked(object sender, EventArgs e)
|
||||
{
|
||||
TreeIter outIter;
|
||||
if(treeXboxSS.Selection.GetSelected(out outIter))
|
||||
lstXboxSS.Remove(ref outIter);
|
||||
}
|
||||
|
||||
protected void OnBtnAddSSClicked(object sender, EventArgs e)
|
||||
{
|
||||
MessageDialog dlgMsg;
|
||||
int temp, temp2;
|
||||
|
||||
if(!int.TryParse(txtSSStart.Text, out temp))
|
||||
{
|
||||
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Xbox Security Sector start must be a number");
|
||||
dlgMsg.Run();
|
||||
dlgMsg.Destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!int.TryParse(txtSSEnd.Text, out temp2))
|
||||
{
|
||||
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Xbox Security Sector end must be a number");
|
||||
dlgMsg.Run();
|
||||
dlgMsg.Destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
if(temp2 <= temp)
|
||||
{
|
||||
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Xbox Security Sector must end after start, and be bigger than 1 sector");
|
||||
dlgMsg.Run();
|
||||
dlgMsg.Destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
lstXboxSS.AppendValues(int.Parse(txtSSStart.Text), int.Parse(txtSSEnd.Text));
|
||||
}
|
||||
|
||||
protected void OnBtnRemovePartitionClicked(object sender, EventArgs e)
|
||||
{
|
||||
if(treePartitions.Selection.GetSelected(out partitionIter))
|
||||
@@ -1581,6 +1527,7 @@ namespace osrepodbmgr
|
||||
}
|
||||
|
||||
Metadata.Checksums = checksums;
|
||||
Metadata.Xbox = xbox;
|
||||
|
||||
if(lstRingCodes.GetIterFirst(out outIter))
|
||||
{
|
||||
@@ -1887,20 +1834,6 @@ namespace osrepodbmgr
|
||||
Metadata.LeadOut = leadouts.ToArray();
|
||||
}
|
||||
|
||||
if(lstXboxSS.GetIterFirst(out outIter))
|
||||
{
|
||||
List<SecuritySectorsType> xboxss = new List<SecuritySectorsType>();
|
||||
do
|
||||
{
|
||||
SecuritySectorsType ss = new SecuritySectorsType();
|
||||
ss.Start = (long)lstXboxSS.GetValue(outIter, 0);
|
||||
ss.End = (long)lstXboxSS.GetValue(outIter, 1);
|
||||
xboxss.Add(ss);
|
||||
}
|
||||
while(lstXboxSS.IterNext(ref outIter));
|
||||
Metadata.XboxSecuritySectors = xboxss.ToArray();
|
||||
}
|
||||
|
||||
if(!string.IsNullOrWhiteSpace(txtPS3Key.Text) && !string.IsNullOrWhiteSpace(txtPS3Serial.Text))
|
||||
{
|
||||
Metadata.PS3Encryption = new PS3EncryptionType();
|
||||
@@ -2005,8 +1938,8 @@ namespace osrepodbmgr
|
||||
do
|
||||
{
|
||||
ExtentType extent = new ExtentType();
|
||||
extent.Start = (int)lstExtents.GetValue(extIter, 0);
|
||||
extent.End = (int)lstExtents.GetValue(extIter, 1);
|
||||
extent.Start = (ulong)lstExtents.GetValue(extIter, 0);
|
||||
extent.End = (ulong)lstExtents.GetValue(extIter, 1);
|
||||
extents.Add(extent);
|
||||
}
|
||||
while(lstExtents.IterNext(ref extIter));
|
||||
|
||||
@@ -24,7 +24,8 @@ namespace Stetic
|
||||
{
|
||||
return res;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
int sz;
|
||||
int sy;
|
||||
global::Gtk.Icon.SizeLookup(size, out sz, out sy);
|
||||
@@ -38,7 +39,8 @@ namespace Stetic
|
||||
{
|
||||
return Stetic.IconLoader.LoadIcon(widget, "gtk-missing-image", size);
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
Gdk.Pixmap pmap = new Gdk.Pixmap(Gdk.Screen.Default.RootWindow, sz, sz);
|
||||
Gdk.GC gc = new Gdk.GC(pmap);
|
||||
gc.RgbFgColor = new Gdk.Color(255, 255, 255);
|
||||
|
||||
@@ -8008,7 +8008,7 @@ QNX/QNX/20090229/source.zip</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<widget class="Gtk.Dialog" id="osrepodbmgr.dlgOpticalDisc" design-size="914 738">
|
||||
<widget class="Gtk.Dialog" id="osrepodbmgr.dlgOpticalDisc" design-size="939 738">
|
||||
<property name="MemberName" />
|
||||
<property name="WindowPosition">CenterOnParent</property>
|
||||
<property name="Buttons">2</property>
|
||||
@@ -8021,7 +8021,7 @@ QNX/QNX/20090229/source.zip</property>
|
||||
<widget class="Gtk.Notebook" id="notebook1">
|
||||
<property name="MemberName" />
|
||||
<property name="CanFocus">True</property>
|
||||
<property name="CurrentPage">13</property>
|
||||
<property name="CurrentPage">10</property>
|
||||
<child>
|
||||
<widget class="Gtk.VBox" id="vbox2">
|
||||
<property name="MemberName" />
|
||||
@@ -10896,159 +10896,6 @@ QNX/QNX/20090229/source.zip</property>
|
||||
<property name="type">tab</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.Frame" id="frmXboxSS">
|
||||
<property name="MemberName" />
|
||||
<property name="ShadowType">None</property>
|
||||
<child>
|
||||
<widget class="Gtk.Alignment" id="GtkAlignment41">
|
||||
<property name="MemberName" />
|
||||
<property name="Xalign">0</property>
|
||||
<property name="Yalign">0</property>
|
||||
<property name="LeftPadding">12</property>
|
||||
<child>
|
||||
<widget class="Gtk.VBox" id="vbox39">
|
||||
<property name="MemberName" />
|
||||
<property name="Spacing">6</property>
|
||||
<child>
|
||||
<widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow24">
|
||||
<property name="MemberName" />
|
||||
<property name="ShadowType">In</property>
|
||||
<child>
|
||||
<widget class="Gtk.TreeView" id="treeXboxSS">
|
||||
<property name="MemberName" />
|
||||
<property name="CanFocus">True</property>
|
||||
<property name="ShowScrollbars">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">0</property>
|
||||
<property name="AutoSize">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.HBox" id="hbox94">
|
||||
<property name="MemberName" />
|
||||
<property name="Spacing">6</property>
|
||||
<child>
|
||||
<widget class="Gtk.Label" id="lblSSStart">
|
||||
<property name="MemberName" />
|
||||
<property name="LabelProp" translatable="yes">Start</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">0</property>
|
||||
<property name="AutoSize">True</property>
|
||||
<property name="Expand">False</property>
|
||||
<property name="Fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.Entry" id="txtSSStart">
|
||||
<property name="MemberName" />
|
||||
<property name="CanFocus">True</property>
|
||||
<property name="IsEditable">True</property>
|
||||
<property name="InvisibleChar">●</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">1</property>
|
||||
<property name="AutoSize">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.Label" id="lblSSEnd">
|
||||
<property name="MemberName" />
|
||||
<property name="LabelProp" translatable="yes">End</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">2</property>
|
||||
<property name="AutoSize">True</property>
|
||||
<property name="Expand">False</property>
|
||||
<property name="Fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.Entry" id="txtSSEnd">
|
||||
<property name="MemberName" />
|
||||
<property name="CanFocus">True</property>
|
||||
<property name="IsEditable">True</property>
|
||||
<property name="InvisibleChar">●</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">3</property>
|
||||
<property name="AutoSize">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.Button" id="btnRemoveSS">
|
||||
<property name="MemberName" />
|
||||
<property name="CanFocus">True</property>
|
||||
<property name="UseStock">True</property>
|
||||
<property name="Type">StockItem</property>
|
||||
<property name="StockId">gtk-remove</property>
|
||||
<signal name="Clicked" handler="OnBtnRemoveSSClicked" />
|
||||
<property name="label">gtk-remove</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">4</property>
|
||||
<property name="AutoSize">True</property>
|
||||
<property name="Expand">False</property>
|
||||
<property name="Fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.Button" id="btnAddSS">
|
||||
<property name="MemberName" />
|
||||
<property name="CanFocus">True</property>
|
||||
<property name="UseStock">True</property>
|
||||
<property name="Type">StockItem</property>
|
||||
<property name="StockId">gtk-add</property>
|
||||
<signal name="Clicked" handler="OnBtnAddSSClicked" />
|
||||
<property name="label">gtk-add</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">5</property>
|
||||
<property name="AutoSize">True</property>
|
||||
<property name="Expand">False</property>
|
||||
<property name="Fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">1</property>
|
||||
<property name="AutoSize">True</property>
|
||||
<property name="Expand">False</property>
|
||||
<property name="Fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.Label" id="GtkLabel46">
|
||||
<property name="MemberName" />
|
||||
<property name="LabelProp" translatable="yes"><b>Security sectors</b></property>
|
||||
<property name="UseMarkup">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">label_item</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">10</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.Label" id="label118">
|
||||
<property name="MemberName" />
|
||||
<property name="LabelProp" translatable="yes">Xbox</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">tab</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="Gtk.Frame" id="frmPS3">
|
||||
<property name="MemberName" />
|
||||
@@ -11151,7 +10998,7 @@ QNX/QNX/20090229/source.zip</property>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">11</property>
|
||||
<property name="Position">10</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -11978,7 +11825,7 @@ QNX/QNX/20090229/source.zip</property>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">12</property>
|
||||
<property name="Position">11</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -12602,7 +12449,7 @@ QNX/QNX/20090229/source.zip</property>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="Position">13</property>
|
||||
<property name="Position">12</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user