Skip to content

Commit fbafc16

Browse files
Add new feature: a GUI for writing and evaluating script
1 parent 22ae70e commit fbafc16

File tree

9 files changed

+428
-2
lines changed

9 files changed

+428
-2
lines changed

BitcoinTransactionTool/BitcoinTransactionTool.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@
127127
<Compile Include="Backend\LockTime.cs" />
128128
<Compile Include="Backend\StackInt.cs" />
129129
<Compile Include="Models\BitcoinAddress.cs" />
130+
<Compile Include="Models\ButtonModel.cs" />
130131
<Compile Include="Models\OutPointModel.cs" />
131132
<Compile Include="Models\TxInModel.cs" />
132133
<Compile Include="Models\TxModel.cs" />
@@ -143,6 +144,7 @@
143144
<Compile Include="ViewModels\MainWindowViewModel.cs" />
144145
<Compile Include="Services\WindowManager.cs" />
145146
<Compile Include="ViewModels\QrViewModel.cs" />
147+
<Compile Include="ViewModels\ScriptWindowViewModel.cs" />
146148
<Compile Include="ViewModels\TransactionEditViewModel.cs" />
147149
<Compile Include="ViewModels\TxJsonViewModel.cs" />
148150
<Compile Include="Views\QrView.xaml.cs">
@@ -151,6 +153,9 @@
151153
<Compile Include="Views\QrWindow.xaml.cs">
152154
<DependentUpon>QrWindow.xaml</DependentUpon>
153155
</Compile>
156+
<Compile Include="Views\ScriptWindow.xaml.cs">
157+
<DependentUpon>ScriptWindow.xaml</DependentUpon>
158+
</Compile>
154159
<Compile Include="Views\TransactionEditView.xaml.cs">
155160
<DependentUpon>TransactionEditView.xaml</DependentUpon>
156161
</Compile>
@@ -180,6 +185,10 @@
180185
<SubType>Designer</SubType>
181186
<Generator>MSBuild:Compile</Generator>
182187
</Page>
188+
<Page Include="Views\ScriptWindow.xaml">
189+
<SubType>Designer</SubType>
190+
<Generator>MSBuild:Compile</Generator>
191+
</Page>
183192
<Page Include="Views\TransactionEditView.xaml">
184193
<SubType>Designer</SubType>
185194
<Generator>MSBuild:Compile</Generator>

BitcoinTransactionTool/MainWindow.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717
</Window.Resources>
1818
<Window.InputBindings>
1919
<KeyBinding Key="F2" Command="{Binding ShowEditWindowCommand}"/>
20+
<KeyBinding Key="F3" Command="{Binding ShowScriptWindowCommand}"/>
2021
</Window.InputBindings>
2122
<Grid>
2223
<Menu VerticalAlignment="Top" FontSize="14">
2324
<MenuItem Header="_Tools">
2425
<MenuItem Header="Edit Transactions" InputGestureText="F2" Command="{Binding ShowEditWindowCommand, Mode=OneWay}"/>
26+
<MenuItem Header="Script builder" InputGestureText="F3" Command="{Binding ShowScriptWindowCommand, Mode=OneWay}"/>
2527
<Separator />
2628
<MenuItem Header="_Exit" Click="Exit_Click" InputGestureText="Alt+F4"/>
2729
</MenuItem>

BitcoinTransactionTool/MainWindow.xaml.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
using System.Windows;
1+
// Bitcoin Transaction Tool
2+
// Copyright (c) 2017 Coding Enthusiast
3+
// Distributed under the MIT software license, see the accompanying
4+
// file LICENCE or http://www.opensource.org/licenses/mit-license.php.
5+
6+
using System.Windows;
27

38
namespace BitcoinTransactionTool
49
{
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Bitcoin Transaction Tool
2+
// Copyright (c) 2017 Coding Enthusiast
3+
// Distributed under the MIT software license, see the accompanying
4+
// file LICENCE or http://www.opensource.org/licenses/mit-license.php.
5+
6+
using BitcoinTransactionTool.Backend.Blockchain.Scripts;
7+
using CommonLibrary;
8+
using System;
9+
10+
namespace BitcoinTransactionTool.Models
11+
{
12+
public class ButtonModel
13+
{
14+
public ButtonModel(OP op, bool enabled, Action<object> s)
15+
{
16+
OpCode = op;
17+
string n = op.ToString();
18+
Name = $"OP__{op.ToString()}";
19+
RunCommand = new BindableCommand(s);
20+
Enabled = enabled;
21+
}
22+
23+
public string Name { get; set; }
24+
public bool Enabled { get; set; }
25+
public OP OpCode { get; set; }
26+
public BindableCommand RunCommand { get; set; }
27+
}
28+
}

BitcoinTransactionTool/Services/WindowManager.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
using BitcoinTransactionTool.Views;
1+
// Bitcoin Transaction Tool
2+
// Copyright (c) 2017 Coding Enthusiast
3+
// Distributed under the MIT software license, see the accompanying
4+
// file LICENCE or http://www.opensource.org/licenses/mit-license.php.
5+
6+
using BitcoinTransactionTool.Views;
27
using CommonLibrary;
38
using System.Windows;
49

@@ -41,4 +46,15 @@ public void Show(InpcBase ViewModel)
4146
myWin.ShowDialog();
4247
}
4348
}
49+
50+
public class ScriptWinManager : IWindowManager
51+
{
52+
public void Show(InpcBase ViewModel)
53+
{
54+
ScriptWindow myWin = new ScriptWindow();
55+
myWin.DataContext = ViewModel;
56+
myWin.Owner = Application.Current.MainWindow;
57+
myWin.ShowDialog();
58+
}
59+
}
4460
}

BitcoinTransactionTool/ViewModels/MainWindowViewModel.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,15 @@ private void ShowEditWindow()
377377
winManager.Show(vm);
378378
}
379379

380+
381+
public RelayCommand ShowScriptWindowCommand => new RelayCommand(ShowScriptWindow);
382+
private void ShowScriptWindow()
383+
{
384+
ScriptWindowViewModel vm = new ScriptWindowViewModel();
385+
winManager = new ScriptWinManager();
386+
winManager.Show(vm);
387+
}
388+
380389
#endregion
381390
}
382391
}

0 commit comments

Comments
 (0)