Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9af1d1d

Browse files
committed
#31 fixed CanInsertEverywhere property
1 parent731249a commit9af1d1d

File tree

4 files changed

+72
-22
lines changed

4 files changed

+72
-22
lines changed

‎Sources/Samples/WpfHexEditor.Sample.InsertByteAnywhere/MainWindow.xaml‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
Margin="10,50,10,10"
2525
AllowAutoHighLightSelectionByte="False"
2626
AllowAutoSelectSameByteAtDoubleClick="False"
27+
CanInsertEverywhere="True"
2728
PreloadByteInEditorMode="MaxScreenVisibleLineAtDataLoad" />
2829

2930
<Button
@@ -39,9 +40,9 @@
3940
Width="218"
4041
Height="26"
4142
Margin="89,10,0,0"
42-
Click="AddByteButton_Click"
4343
HorizontalAlignment="Left"
4444
VerticalAlignment="Top"
45+
Click="AddByteButton_Click"
4546
Content="Insert 1 byte at SelectionStart position"
4647
IsEnabled="{Binding ElementName=HexEditor, Path=IsFileOrStreamLoaded, UpdateSourceTrigger=PropertyChanged}" />
4748

‎Sources/Samples/WpfHexEditor.Sample.InsertByteAnywhere/MainWindow.xaml.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ private void OpenButton_Click(object sender, RoutedEventArgs e) =>
2525
if(o.ShowDialog()??false)
2626
HexEditor.FileName=o.FileName;
2727
});
28-
29-
28+
3029
privatevoidAddByteButton_Click(objectsender,RoutedEventArgse)
3130
{
31+
HexEditor.InsertByte(224,15);
3232
}
3333
}
3434
}

‎Sources/WPFHexaEditor/Core/Bytes/ByteProvider.cs‎

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@ public sealed class ByteProvider : IDisposable
3131
privatestring_fileName=string.Empty;
3232
privateStream_stream;
3333
privatebool_readOnlyMode;
34-
privatebool_canInsertEverywhere;
34+
privatebool_canInsertEverywhere=false;
3535
privatedouble_longProcessProgress;
3636
privatestring_newfilename=string.Empty;
3737
#endregion Globals variable
3838

3939
#region Events
40-
40+
41+
//Somes other events can be added in futures
42+
4143
publiceventEventHandlerDataCopiedToClipboard;
4244
publiceventEventHandlerReadOnlyChanged;
4345
publiceventEventHandlerClosed;
@@ -74,16 +76,21 @@ public ByteProvider() { }
7476
/// <summary>
7577
/// Construct new ByteProvider with filename and try to open file
7678
/// </summary>
77-
publicByteProvider(stringfileName,boolreadOnlyMode)
79+
publicByteProvider(stringfileName,boolreadOnlyMode,boolcanInsertEverywhere)
7880
{
81+
CanInsertEverywhere=canInsertEverywhere;
7982
ReadOnlyMode=readOnlyMode;
8083
FileName=fileName;
8184
}
8285

8386
/// <summary>
8487
/// Constuct new ByteProvider with stream
8588
/// </summary>
86-
publicByteProvider(Streamstream)=>Stream=stream;
89+
publicByteProvider(Streamstream,boolcanInsertEverywhere)
90+
{
91+
CanInsertEverywhere=canInsertEverywhere;
92+
Stream=stream;
93+
}
8794

8895
#endregion Constructors
8996

@@ -573,26 +580,26 @@ public void SubmitChanges()
573580
/// <summary>
574581
/// Add/Modifiy a ByteModifed in the list of byte have changed
575582
/// </summary>
576-
publicvoidAddByteModified(byte?@byte,longBytePositionInStream,longundoLength=1)
583+
publicvoidAddByteModified(byte?@byte,longbytePositionInStream,longundoLength=1)
577584
{
578585
if(ReadOnlyMode)return;
579586

580-
var(success, _)=CheckIfIsByteModified(BytePositionInStream);
587+
var(success, _)=CheckIfIsByteModified(bytePositionInStream);
581588

582589
if(success)
583-
_byteModifiedDictionary.Remove(BytePositionInStream);
590+
_byteModifiedDictionary.Remove(bytePositionInStream);
584591

585592
varbyteModified=newByteModified
586593
{
587594
Byte=@byte,
588595
Length=undoLength,
589-
BytePositionInStream=BytePositionInStream,
596+
BytePositionInStream=bytePositionInStream,
590597
Action=ByteAction.Modified
591598
};
592599

593600
try
594601
{
595-
_byteModifiedDictionary.Add(BytePositionInStream,byteModified);
602+
_byteModifiedDictionary.Add(bytePositionInStream,byteModified);
596603
UndoStack.Push(byteModified);
597604
}
598605
catch
@@ -604,27 +611,27 @@ public void AddByteModified(byte? @byte, long BytePositionInStream, long undoLen
604611
/// <summary>
605612
/// Add new byte a ByteModifed in the list of byte have changed
606613
/// </summary>
607-
publicvoidAddByteAdded(byte?@byte,longBytePositionInStream,longundoLength=1)
614+
publicvoidAddByteAdded(byte?@byte,longbytePositionInStream,longundoLength=1)
608615
{
609616
if(ReadOnlyMode)return;
610617
if(!CanInsertEverywhere)return;
611618

612-
var(success, _)=CheckIfIsByteModified(BytePositionInStream,ByteAction.Added);
619+
var(success, _)=CheckIfIsByteModified(bytePositionInStream,ByteAction.Added);
613620

614621
if(success)
615-
_byteModifiedDictionary.Remove(BytePositionInStream);
622+
_byteModifiedDictionary.Remove(bytePositionInStream);
616623

617624
varbyteModified=newByteModified
618625
{
619626
Byte=@byte,
620627
Length=undoLength,
621-
BytePositionInStream=BytePositionInStream,
628+
BytePositionInStream=bytePositionInStream,
622629
Action=ByteAction.Added
623630
};
624631

625632
try
626633
{
627-
_byteModifiedDictionary.Add(BytePositionInStream,byteModified);
634+
_byteModifiedDictionary.Add(bytePositionInStream,byteModified);
628635
UndoStack.Push(byteModified);
629636
}
630637
catch
@@ -711,7 +718,6 @@ public void FillWithByte(long startPosition, long length, byte b)
711718
Position=startPosition+i;
712719
if(GetByte(Position).singleByte!=b)
713720
AddByteModified(b,Position-1);
714-
715721
}
716722

717723
FillWithByteCompleted?.Invoke(this,newEventArgs());
@@ -919,7 +925,11 @@ public void CopyToClipboard(CopyPasteMode copypastemode,
919925
/// <summary>
920926
/// Copy selection to clipboard in code block
921927
/// </summary>
922-
privatevoidCopyToClipboard_Language(longselectionStart,longselectionStop,boolcopyChange,DataObjectda,CodeLanguagelanguage)
928+
privatevoidCopyToClipboard_Language(longselectionStart,
929+
longselectionStop,
930+
boolcopyChange,
931+
DataObjectda,
932+
CodeLanguagelanguage)
923933
{
924934
if(!CanCopy(selectionStart,selectionStop))return;
925935

‎Sources/WPFHexaEditor/HexEditor.xaml.cs‎

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2241,7 +2241,7 @@ private void OpenFile(string filename)
22412241
if(PreloadByteInEditorMode==PreloadByteInEditor.MaxScreenVisibleLineAtDataLoad)
22422242
BuildDataLines(MaxScreenVisibleLine,false);
22432243

2244-
_provider=newByteProvider(filename,ReadOnlyMode);
2244+
_provider=newByteProvider(filename,ReadOnlyMode,CanInsertEverywhere);
22452245

22462246
_provider.With(p=>
22472247
{
@@ -2293,7 +2293,7 @@ private void OpenStream(Stream stream)
22932293
if(PreloadByteInEditorMode==PreloadByteInEditor.MaxScreenVisibleLineAtDataLoad)
22942294
BuildDataLines(MaxScreenVisibleLine,false);
22952295

2296-
_provider=newByteProvider(stream);
2296+
_provider=newByteProvider(stream,CanInsertEverywhere);
22972297

22982298
_provider.With(p=>
22992299
{
@@ -5609,7 +5609,7 @@ public IEnumerable<ByteDifference> Compare(HexEditor hexeditor, bool compareChan
56095609

56105610
#endregion
56115611

5612-
#region Commands implementation (In early stage ofdeveloppement)
5612+
#region Commands implementation (In early stage ofdevelopment)
56135613

56145614
publicstaticDependencyPropertyRefreshViewCommandProperty=
56155615
DependencyProperty.Register(
@@ -5638,5 +5638,44 @@ public ICommand SubmitChangesCommand
56385638
}
56395639

56405640
#endregion
5641+
5642+
#region Insert byte everywhere support (In early stage of development)
5643+
5644+
/// <summary>
5645+
/// Give the possibility to inserts byte everywhere.
5646+
/// </summary>
5647+
publicboolCanInsertEverywhere
5648+
{
5649+
get{return(bool)GetValue(CanInsertEverywhereProperty);}
5650+
set{SetValue(CanInsertEverywhereProperty,value);}
5651+
}
5652+
5653+
publicstaticreadonlyDependencyPropertyCanInsertEverywhereProperty=
5654+
DependencyProperty.Register(nameof(CanInsertEverywhere),typeof(bool),typeof(HexEditor),
5655+
newFrameworkPropertyMetadata(false,Control_CanInsertEverywhereChanged));
5656+
5657+
privatestaticvoidControl_CanInsertEverywhereChanged(DependencyObjectd,DependencyPropertyChangedEventArgse)
5658+
{
5659+
if(dis notHexEditorctrl||e.NewValue==e.OldValue)return;
5660+
5661+
if(CheckIsOpen(ctrl._provider))
5662+
ctrl._provider.CanInsertEverywhere=(bool)e.NewValue;
5663+
5664+
ctrl.RefreshView();
5665+
}
5666+
5667+
/// <summary>
5668+
/// Insert byte at the specified position
5669+
/// </summary>
5670+
publicvoidInsertByte(byte@byte,longbytePositionInStream)
5671+
{
5672+
if(!CheckIsOpen(_provider))return;
5673+
if(!CanInsertEverywhere)return;
5674+
5675+
_provider.AddByteAdded(@byte,bytePositionInStream);
5676+
5677+
RefreshView();
5678+
}
5679+
#endregion
56415680
}
56425681
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp