Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
150 commits
Select commit Hold shift + click to select a range
955e5de
GpScanner 2.0
goksenpasli Apr 2, 2023
5294ff0
GpScanner 2.0
goksenpasli Apr 2, 2023
bf62ed6
GpScanner 2.0
goksenpasli Apr 3, 2023
e7fade4
GpScanner 2.0
goksenpasli Apr 4, 2023
ad54551
GpScanner 2.0
goksenpasli Apr 6, 2023
c3eb318
GpScanner 2.0
goksenpasli Apr 7, 2023
8533f45
GpScanner 2.0
goksenpasli Apr 7, 2023
96408e9
GpScanner 2.0
goksenpasli Apr 8, 2023
251b42c
GpScanner 2.0
goksenpasli Apr 9, 2023
f38a128
GpScanner 2.0
goksenpasli Apr 9, 2023
455bbe3
GpScanner 2.0
goksenpasli Apr 10, 2023
25ff202
GpScanner 2.0
goksenpasli Apr 11, 2023
fe9b766
GpScanner 2.0
goksenpasli Apr 11, 2023
503b971
GpScanner 2.0
goksenpasli Apr 11, 2023
f8b2dbc
GpScanner 2.0
goksenpasli Apr 13, 2023
efb91dd
GpScanner 2.0
goksenpasli Apr 14, 2023
6b1904d
GpScanner 2.0
goksenpasli Apr 14, 2023
5a42475
GpScanner 2.0
goksenpasli Apr 15, 2023
f741b89
GpScanner 2.0
goksenpasli Apr 15, 2023
024b605
GpScanner 2.0
goksenpasli Apr 15, 2023
9908ea7
GpScanner 2.0
goksenpasli Apr 16, 2023
96cd206
GpScanner 2.0
goksenpasli Apr 16, 2023
d130086
GpScanner 2.0
goksenpasli Apr 16, 2023
4b6ed20
GpScanner 2.0
goksenpasli Apr 16, 2023
63aea1e
GpScanner 2.0
goksenpasli Apr 17, 2023
f7c5e9d
GpScanner 2.0
goksenpasli Apr 17, 2023
4c13601
GpScanner 2.0
goksenpasli Apr 17, 2023
456b763
GpScanner 2.0
goksenpasli Apr 17, 2023
831e347
GpScanner 2.0
goksenpasli Apr 18, 2023
d37f160
GpScanner 2.0
goksenpasli Apr 18, 2023
17e06cc
GpScanner 2.0
goksenpasli Apr 19, 2023
09a36f0
GpScanner 2.0
goksenpasli Apr 19, 2023
bd7eea3
GpScanner 2.0
goksenpasli Apr 20, 2023
d4077fc
GpScanner 2.0
goksenpasli Apr 21, 2023
00a7170
GpScanner 2.0
goksenpasli Apr 21, 2023
3c629e3
GpScanner 2.0
goksenpasli Apr 22, 2023
f96e985
GpScanner 2.0
goksenpasli Apr 23, 2023
e8dc0d4
GpScanner 2.0
goksenpasli Apr 23, 2023
b8c4c0d
GpScanner 2.0
goksenpasli Apr 23, 2023
0e964ac
GpScanner 2.0
goksenpasli Apr 23, 2023
d9189cb
GpScanner 2.0
goksenpasli Apr 24, 2023
f981793
GpScanner 2.0
goksenpasli Apr 25, 2023
6280b23
GpScanner 2.0
goksenpasli Apr 27, 2023
2ffdcfb
GpScanner 2.0
goksenpasli Apr 28, 2023
f832e1c
GpScanner 2.0
goksenpasli Apr 28, 2023
3aeb2d4
GpScanner 2.0
goksenpasli Apr 29, 2023
4dcf056
GpScanner 2.0
goksenpasli Apr 29, 2023
2afac82
GpScanner 2.0
goksenpasli Apr 30, 2023
93629cc
GpScanner 2.0
goksenpasli Apr 30, 2023
f6e611a
GpScanner 2.0
goksenpasli May 1, 2023
acc5903
GpScanner 2.0
goksenpasli May 1, 2023
6dd48fb
GpScanner 2.0
goksenpasli May 1, 2023
419c99e
GpScanner 2.0
goksenpasli May 2, 2023
d3f9733
GpScanner 2.0
goksenpasli May 3, 2023
76f2d50
GpScanner 2.0
goksenpasli May 3, 2023
372c65c
GpScanner 2.0
goksenpasli May 3, 2023
c6e1fb2
GpScanner 2.0
goksenpasli May 4, 2023
c70b853
GpScanner 2.0
goksenpasli May 5, 2023
a9c910a
GpScanner 2.0
goksenpasli May 5, 2023
1b48fdb
GpScanner 2.0
goksenpasli May 6, 2023
2e9c005
GpScanner 2.0
goksenpasli May 7, 2023
6766a77
GpScanner 2.0
goksenpasli May 7, 2023
93d4e9a
GpScanner 2.0
goksenpasli May 8, 2023
da4cb6d
GpScanner 2.0
goksenpasli May 8, 2023
f799acf
GpScanner 2.0
goksenpasli May 9, 2023
525ef8d
GpScanner 2.0
goksenpasli May 10, 2023
de55cb2
GpScanner 2.0
goksenpasli May 12, 2023
971da70
GpScanner 2.0
goksenpasli May 12, 2023
fc4aab9
GpScanner 2.0
goksenpasli May 13, 2023
3f92de8
GpScanner 2.0
goksenpasli May 13, 2023
5e5df47
GpScanner 2.0
goksenpasli May 14, 2023
e1719ff
GpScanner 2.0
goksenpasli May 14, 2023
5ef9269
GpScanner 2.0
goksenpasli May 15, 2023
bc37775
GpScanner 2.0
goksenpasli May 16, 2023
001bd65
GpScanner 2.0
goksenpasli May 17, 2023
1d7e943
GpScanner 2.0
goksenpasli May 17, 2023
604f77b
GpScanner 2.0
goksenpasli May 18, 2023
80d8f51
GpScanner 2.0
goksenpasli May 19, 2023
39b0ebc
GpScanner 2.0
goksenpasli May 19, 2023
d0c2144
GpScanner 2.0
goksenpasli May 19, 2023
500ae0f
GpScanner 2.0
goksenpasli May 19, 2023
67ddb91
GpScanner 2.0
goksenpasli May 19, 2023
417833b
GpScanner 2.0
goksenpasli May 20, 2023
b475a12
GpScanner 2.0
goksenpasli May 21, 2023
1f9807c
GpScanner 2.0
goksenpasli May 21, 2023
7c86543
GpScanner 2.0
goksenpasli May 21, 2023
35c161b
GpScanner 2.0
goksenpasli May 22, 2023
9d1e8b2
GpScanner 2.0
goksenpasli May 22, 2023
079ef54
GpScanner 2.0
goksenpasli May 22, 2023
5d476d4
GpScanner 2.0
goksenpasli May 23, 2023
85f659e
GpScanner 2.0
goksenpasli May 24, 2023
32067da
GpScanner 2.0
goksenpasli May 24, 2023
d5eb75c
GpScanner 2.0
goksenpasli May 25, 2023
f8b846e
GpScanner 2.0
goksenpasli May 26, 2023
e6a6b86
GpScanner 2.0
goksenpasli May 27, 2023
16b79c9
GpScanner 2.0
goksenpasli May 27, 2023
7c2e4e9
GpScanner 2.0
goksenpasli May 27, 2023
01aab47
GpScanner 2.0
goksenpasli May 27, 2023
8915196
GpScanner 2.0
goksenpasli May 27, 2023
807398c
GpScanner 3.0
goksenpasli May 27, 2023
5543cd8
GpScanner 3.0
goksenpasli May 27, 2023
9721002
GpScanner 3.0
goksenpasli May 28, 2023
6937603
GpScanner 3.0
goksenpasli May 28, 2023
15023a9
GpScanner 3.0
goksenpasli May 28, 2023
cde85ae
GpScanner 3.0
goksenpasli May 28, 2023
d4254f0
GpScanner 3.0
goksenpasli May 28, 2023
f975360
GpScanner 3.0
goksenpasli May 28, 2023
86e5dbf
GpScanner 3.0
goksenpasli May 29, 2023
c309667
GpScanner 3.0
goksenpasli May 31, 2023
23f2d22
GpScanner 3.0
goksenpasli Jun 1, 2023
e9e3123
GpScanner 3.0
goksenpasli Jun 1, 2023
8b1ab9d
GpScanner 3.0
goksenpasli Jun 2, 2023
cd11ba5
GpScanner 3.0
goksenpasli Jun 2, 2023
b58c4c0
GpScanner 3.0
goksenpasli Jun 3, 2023
0f391bf
GpScanner 3.0
goksenpasli Jun 3, 2023
14c066b
GpScanner 3.0
goksenpasli Jun 3, 2023
b084cf2
GpScanner 3.0
goksenpasli Jun 3, 2023
5ae4cae
GpScanner 3.0
goksenpasli Jun 3, 2023
2dd845b
GpScanner 3.0
goksenpasli Jun 3, 2023
6afd29d
GpScanner 3.0
goksenpasli Jun 3, 2023
d5cc78c
GpScanner 3.0
goksenpasli Jun 4, 2023
ba16e13
GpScanner 3.0
goksenpasli Jun 4, 2023
6022723
GpScanner 3.0
goksenpasli Jun 5, 2023
38e1f54
GpScanner 3.0
goksenpasli Jun 5, 2023
01fabfc
GpScanner 3.0
goksenpasli Jun 5, 2023
56edec3
GpScanner 3.0
goksenpasli Jun 6, 2023
b24356b
GpScanner 3.0
goksenpasli Jun 8, 2023
d239064
GpScanner 3.0
goksenpasli Jun 8, 2023
dea6a84
GpScanner 3.0
goksenpasli Jun 8, 2023
c8eff5d
Create codeql.yml
goksenpasli Jun 9, 2023
57f9c40
Delete codeql.yml
goksenpasli Jun 9, 2023
2a3eaff
GpScanner 3.0
goksenpasli Jun 10, 2023
23997e0
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 10, 2023
8bb9576
GpScanner-3.0
goksenpasli Jun 10, 2023
77110bb
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 10, 2023
40e00c3
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 10, 2023
c2144d0
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 10, 2023
04ec17b
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 10, 2023
09094c1
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 11, 2023
e4e071c
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 11, 2023
3349fc9
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 11, 2023
2d2519a
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 11, 2023
b57a62f
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 12, 2023
8d95b3e
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 13, 2023
1543e3e
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 13, 2023
69d70e4
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 14, 2023
898e00d
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 16, 2023
e9c3ab1
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 17, 2023
71d392f
Merge branch 'GpScanner-3.0' of https://github.com/goksenpasli/GpScan…
goksenpasli Jun 17, 2023
e1ee359
Delete FodyWeavers.xml
goksenpasli Jun 25, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
32 changes: 28 additions & 4 deletions CodeMaid.config
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,40 @@
<value>True</value>
</setting>
<setting name="Reorganizing_MemberTypeIndexers" serializeAs="String">
<value>Indexers||10||Indexers</value>
<value>Indexers||9||Indexers</value>
</setting>
<setting name="Reorganizing_MemberTypeStructs" serializeAs="String">
<value>Structs||8||Structs</value>
<value>Structs||7||Structs</value>
</setting>
<setting name="Reorganizing_MemberTypeMethods" serializeAs="String">
<value>Methods||11||Methods</value>
<value>Methods||10||Methods</value>
</setting>
<setting name="Reorganizing_MemberTypeProperties" serializeAs="String">
<value>Properties||9||Properties</value>
<value>Properties||8||Properties</value>
</setting>
<setting name="Reorganizing_MemberTypeConstructors" serializeAs="String">
<value>Constructors||1||Constructors</value>
</setting>
<setting name="Reorganizing_MemberTypeEnums" serializeAs="String">
<value>Enums||5||Enums</value>
</setting>
<setting name="Reorganizing_MemberTypeDestructors" serializeAs="String">
<value>Destructors||2||Destructors</value>
</setting>
<setting name="Reorganizing_MemberTypeDelegates" serializeAs="String">
<value>Delegates||3||Delegates</value>
</setting>
<setting name="Reorganizing_MemberTypeInterfaces" serializeAs="String">
<value>Interfaces||6||Interfaces</value>
</setting>
<setting name="Reorganizing_MemberTypeClasses" serializeAs="String">
<value>Classes||11||Classes</value>
</setting>
<setting name="Reorganizing_MemberTypeFields" serializeAs="String">
<value>Fields||12||Fields</value>
</setting>
<setting name="Reorganizing_MemberTypeEvents" serializeAs="String">
<value>Events||4||Events</value>
</setting>
</SteveCadwallader.CodeMaid.Properties.Settings>
</userSettings>
Expand Down
311 changes: 311 additions & 0 deletions DvdBurner/Burner.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,311 @@
using System;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms;
using Extensions;
using IMAPI2;
using IMAPI2FS;
using Application = System.Windows.Application;
using Control = System.Windows.Controls.Control;
using MessageBox = System.Windows.MessageBox;

namespace DvdBurner
{
public class Burner : Control, INotifyPropertyChanged
{
static Burner()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(Burner), new FrameworkPropertyMetadata(typeof(Burner)));
}

public Burner()
{
BurnDvd = new RelayCommand<object>(
parameter =>
{
if (Burntask?.IsCompleted == false || Erasetask?.IsCompleted == false)
{
_ = MessageBox.Show(WarnText);
return;
}

dynamic Index;
dynamic recorder = null;
dynamic FolderPath;
dynamic Stream;
Index = 0;
FolderPath = BurnDirectory;
Burntask = Task.Run(
() =>
{
try
{
dynamic g_DiscMaster = new MsftDiscMaster2();
if (g_DiscMaster.Count > 0)
{
dynamic uniqueId;
recorder = new MsftDiscRecorder2();
uniqueId = g_DiscMaster.Item(Index);
recorder.InitializeDiscRecorder(uniqueId);

dynamic FSI;
dynamic Dir;
dynamic dataWriter;

FSI = new MsftFileSystemImage();
Dir = FSI.Root;

dataWriter = new MsftDiscFormat2Data();
dataWriter.Recorder = recorder;
dataWriter.ClientName = AppName;
FSI.VolumeName = CdLabel;
FSI.ChooseImageDefaults(recorder);
dataWriter.Update += new DDiscFormat2DataEvents_UpdateEventHandler(DataWriter_Update);
Dir?.AddTree(FolderPath, false);
dynamic result = FSI.CreateResultImage();
Stream = result?.ImageStream;
dataWriter.ForceOverwrite = true;
dataWriter.Write(Stream);
}
}
catch (Exception ex)
{
ActionText = ex.Message;
}
finally
{
if (Eject)
{
recorder?.EjectMedia();
}
}
});
},
parameter => Directory.Exists(BurnDirectory) && !string.IsNullOrWhiteSpace(CdLabel) && Directory.EnumerateFiles(BurnDirectory)?.Any() == true);

SelectBurnDir = new RelayCommand<object>(
parameter =>
{
FolderBrowserDialog dialog = new FolderBrowserDialog { Description = "Yazılacak Klasörü Seçin." };
if (dialog.ShowDialog() == DialogResult.OK)
{
BurnDirectory = dialog.SelectedPath;
}
},
parameter => true);

EraseDvd = new RelayCommand<object>(
parameter =>
{
if (Burntask?.IsCompleted == false || Erasetask?.IsCompleted == false)
{
_ = MessageBox.Show(WarnText);
return;
}

Erasetask = Task.Run(
() =>
{
MsftDiscRecorder2 recorder = null;
try
{
dynamic g_DiscMaster = new MsftDiscMaster2();
dynamic uniqueId;
dynamic Index = 0;
MsftDiscFormat2Erase discFormatErase = null;
if (g_DiscMaster.Count > 0)
{
recorder = new MsftDiscRecorder2();
uniqueId = g_DiscMaster.Item(Index);
recorder.InitializeDiscRecorder(uniqueId);
discFormatErase = new MsftDiscFormat2Erase { Recorder = recorder, ClientName = AppName, FullErase = false };
discFormatErase.EraseMedia();
}
}
catch (Exception ex)
{
ActionText = ex.Message;
}
finally
{
if (Eject)
{
recorder?.EjectMedia();
}
}
});
},
parameter => true);
}

public event PropertyChangedEventHandler PropertyChanged;

public string ActionText {
get => actionText;

set {
if (actionText != value)
{
actionText = value;
OnPropertyChanged(nameof(ActionText));
}
}
}

public string BurnDirectory { get => (string)GetValue(BurnDirectoryProperty); set => SetValue(BurnDirectoryProperty, value); }

public RelayCommand<object> BurnDvd { get; }

public string CdLabel {
get => cdLabel;

set {
if (cdLabel != value)
{
cdLabel = value;
OnPropertyChanged(nameof(CdLabel));
}
}
}

public bool Eject {
get => eject;

set {
if (eject != value)
{
eject = value;
OnPropertyChanged(nameof(Eject));
}
}
}

public RelayCommand<object> EraseDvd { get; }

public bool ProgressIndeterminate {
get => progressIndeterminate;

set {
if (progressIndeterminate != value)
{
progressIndeterminate = value;
OnPropertyChanged(nameof(ProgressIndeterminate));
}
}
}

public double ProgressValue {
get => progressValue;

set {
if (progressValue != value)
{
progressValue = value;
OnPropertyChanged(nameof(ProgressValue));
}
}
}

public RelayCommand<object> SelectBurnDir { get; }

public static readonly DependencyProperty BurnDirectoryProperty = DependencyProperty.Register(
"BurnDirectory",
typeof(string),
typeof(Burner),
new PropertyMetadata(string.Empty));

protected virtual void OnPropertyChanged(string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

private void DataWriter_Update(dynamic @object, dynamic progress)
{
try
{
switch ((int)progress.CurrentAction)
{
case (int)IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER:
ActionText = "Kalibrasyon Gücü (OPC).";
break;

case (int)IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED:
ActionText = "Bitti.";
ProgressIndeterminate = false;
break;

case (int)IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION:
ProgressIndeterminate = true;
ActionText = "Sonlandırılıyor.";
break;

case (int)IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA:
ActionText = "Medya Biçimlendiriliyor.";
break;

case (int)IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE:
ActionText = "Başlatılıyor.";
break;

case (int)IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA:
ActionText = "Medya Doğrulanıyor.";
break;

case (int)IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_VERIFYING:
ActionText = "Veri Doğrulanıyor.";
break;

case (int)IMAPI_FORMAT2_DATA_WRITE_ACTION.IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA:
dynamic totalSectors;
dynamic writtenSectors;
dynamic startLba;
dynamic lastWrittenLba;
dynamic percentDone;
totalSectors = progress.SectorCount;
startLba = progress.StartLba;
lastWrittenLba = progress.LastWrittenLba;
writtenSectors = lastWrittenLba - startLba;
percentDone =
FormatPercent(Convert.ToDecimal(writtenSectors) / Convert.ToDecimal(totalSectors));
ActionText = percentDone;
break;

default:
ActionText = "Bilinmeyen İşlem." + progress?.CurrentAction.ToString();
break;
}
}
catch (Exception ex)
{
ActionText = $"Hata{ex.Message}";
}
}

private dynamic FormatPercent(dynamic d)
{
ProgressValue = (double)d;
return d.ToString("0%");
}

private const string WarnText = "İşlem Sürüyor. Bitmesini Bekleyin.";

private static Task Burntask;

private static Task Erasetask;

private readonly string AppName = Application.Current?.MainWindow?.Title;

private string actionText;

private string cdLabel = DateTime.Now.ToString();

private bool eject = true;

private bool progressIndeterminate;

private double progressValue;
}
}
Loading