2026-06-11 10:47:52 +02:00
|
|
|
<Window xmlns="https://github.com/avaloniaui"
|
|
|
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
|
|
|
xmlns:vm="using:PalladiumWallet.App.ViewModels"
|
|
|
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
|
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
|
|
|
mc:Ignorable="d" d:DesignWidth="900" d:DesignHeight="620"
|
|
|
|
|
x:Class="PalladiumWallet.App.Views.MainWindow"
|
|
|
|
|
x:DataType="vm:MainWindowViewModel"
|
|
|
|
|
Icon="/Assets/avalonia-logo.ico"
|
|
|
|
|
Width="900" Height="620"
|
|
|
|
|
Title="Palladium Wallet">
|
|
|
|
|
|
|
|
|
|
<Design.DataContext>
|
|
|
|
|
<vm:MainWindowViewModel/>
|
|
|
|
|
</Design.DataContext>
|
|
|
|
|
|
2026-06-11 11:27:41 +02:00
|
|
|
<Grid RowDefinitions="Auto,*,Auto">
|
|
|
|
|
|
|
|
|
|
<!-- ============ MENU (stile Electrum) ============ -->
|
|
|
|
|
<Menu Grid.Row="0">
|
2026-06-11 16:23:02 +02:00
|
|
|
<MenuItem Header="{Binding Loc[menu.file]}">
|
|
|
|
|
<MenuItem Header="{Binding Loc[menu.file.new]}" Command="{Binding NewWalletCommand}"/>
|
|
|
|
|
<MenuItem Header="{Binding Loc[menu.file.open]}" Click="OnOpenWalletFileClick"/>
|
2026-06-11 11:27:41 +02:00
|
|
|
<Separator/>
|
2026-06-11 16:23:02 +02:00
|
|
|
<MenuItem Header="{Binding Loc[menu.file.close]}" Command="{Binding CloseWalletCommand}"
|
2026-06-11 11:27:41 +02:00
|
|
|
IsEnabled="{Binding IsWalletOpen}"/>
|
|
|
|
|
</MenuItem>
|
2026-06-11 16:23:02 +02:00
|
|
|
<MenuItem Header="{Binding Loc[menu.net]}">
|
|
|
|
|
<MenuItem Header="{Binding Loc[menu.net.discover]}" Command="{Binding DiscoverServersCommand}"/>
|
|
|
|
|
<MenuItem Header="{Binding Loc[menu.net.resetcerts]}" Command="{Binding ResetCertificatesCommand}"/>
|
|
|
|
|
</MenuItem>
|
|
|
|
|
<MenuItem Header="{Binding Loc[menu.settings]}">
|
|
|
|
|
<MenuItem Header="{Binding Loc[settings.language]}">
|
|
|
|
|
<MenuItem Header="Italiano" ToggleType="Radio"
|
|
|
|
|
IsChecked="{Binding IsLangIt, Mode=OneWay}"
|
|
|
|
|
Command="{Binding SetLanguageCommand}" CommandParameter="it"/>
|
|
|
|
|
<MenuItem Header="English" ToggleType="Radio"
|
|
|
|
|
IsChecked="{Binding IsLangEn, Mode=OneWay}"
|
|
|
|
|
Command="{Binding SetLanguageCommand}" CommandParameter="en"/>
|
|
|
|
|
</MenuItem>
|
|
|
|
|
<MenuItem Header="{Binding Loc[settings.unit.short]}">
|
|
|
|
|
<MenuItem Header="PLM" ToggleType="Radio"
|
|
|
|
|
IsChecked="{Binding IsUnitPlm, Mode=OneWay}"
|
|
|
|
|
Command="{Binding SetUnitCommand}" CommandParameter="PLM"/>
|
|
|
|
|
<MenuItem Header="mPLM" ToggleType="Radio"
|
|
|
|
|
IsChecked="{Binding IsUnitMilli, Mode=OneWay}"
|
|
|
|
|
Command="{Binding SetUnitCommand}" CommandParameter="mPLM"/>
|
|
|
|
|
<MenuItem Header="µPLM" ToggleType="Radio"
|
|
|
|
|
IsChecked="{Binding IsUnitMicro, Mode=OneWay}"
|
|
|
|
|
Command="{Binding SetUnitCommand}" CommandParameter="µPLM"/>
|
|
|
|
|
<MenuItem Header="sat" ToggleType="Radio"
|
|
|
|
|
IsChecked="{Binding IsUnitSat, Mode=OneWay}"
|
|
|
|
|
Command="{Binding SetUnitCommand}" CommandParameter="sat"/>
|
|
|
|
|
</MenuItem>
|
2026-06-11 11:27:41 +02:00
|
|
|
</MenuItem>
|
|
|
|
|
</Menu>
|
2026-06-11 10:47:52 +02:00
|
|
|
|
2026-06-11 16:04:25 +02:00
|
|
|
<!-- ============ WIZARD DI SETUP (§15): un passo alla volta ============ -->
|
2026-06-11 11:27:41 +02:00
|
|
|
<ScrollViewer Grid.Row="1" IsVisible="{Binding IsSetupVisible}">
|
2026-06-11 16:04:25 +02:00
|
|
|
<StackPanel MaxWidth="560" Margin="24,40" Spacing="18"
|
|
|
|
|
HorizontalAlignment="Center">
|
|
|
|
|
<TextBlock Text="Palladium Wallet" FontSize="28" FontWeight="Bold"
|
|
|
|
|
HorizontalAlignment="Center"/>
|
2026-06-11 10:47:52 +02:00
|
|
|
|
2026-06-11 16:04:25 +02:00
|
|
|
<!-- Passo 1: scelta iniziale -->
|
|
|
|
|
<StackPanel IsVisible="{Binding IsStepStart}" Spacing="12">
|
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="10" HorizontalAlignment="Center">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Text="{Binding Loc[wiz.net]}" VerticalAlignment="Center"/>
|
2026-06-11 16:04:25 +02:00
|
|
|
<ComboBox ItemsSource="{Binding Networks}"
|
|
|
|
|
SelectedItem="{Binding SelectedNetwork}" MinWidth="140"/>
|
|
|
|
|
</StackPanel>
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wiz.open.btn]}" FontSize="16"
|
2026-06-11 16:04:25 +02:00
|
|
|
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
|
|
|
|
|
IsVisible="{Binding WalletFileExists}"
|
|
|
|
|
Command="{Binding WizardStartOpenCommand}"/>
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wiz.new.btn]}" FontSize="16"
|
2026-06-11 16:04:25 +02:00
|
|
|
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
|
|
|
|
|
Command="{Binding WizardStartNewCommand}"/>
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wiz.restore.btn]}" FontSize="16"
|
2026-06-11 16:04:25 +02:00
|
|
|
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
|
|
|
|
|
Command="{Binding WizardStartRestoreCommand}"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
|
|
<!-- Passo: password del wallet esistente -->
|
|
|
|
|
<StackPanel IsVisible="{Binding IsStepOpen}" Spacing="12">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Text="{Binding Loc[wiz.open.title]}" FontSize="18" FontWeight="Bold"/>
|
|
|
|
|
<TextBox PlaceholderText="{Binding Loc[wiz.open.placeholder]}"
|
2026-06-11 16:04:25 +02:00
|
|
|
PasswordChar="●" Text="{Binding PasswordInput}"/>
|
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wiz.back]}" Command="{Binding WizardBackCommand}"/>
|
|
|
|
|
<Button Content="{Binding Loc[wiz.open.ok]}" Classes="accent"
|
|
|
|
|
Command="{Binding OpenExistingCommand}"/>
|
2026-06-11 16:04:25 +02:00
|
|
|
</StackPanel>
|
2026-06-11 10:47:52 +02:00
|
|
|
</StackPanel>
|
|
|
|
|
|
2026-06-11 16:04:25 +02:00
|
|
|
<!-- Passo: mostra il nuovo seed -->
|
|
|
|
|
<StackPanel IsVisible="{Binding IsStepShowSeed}" Spacing="12">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Text="{Binding Loc[wiz.seed.title]}" FontSize="18" FontWeight="Bold"/>
|
2026-06-11 16:04:25 +02:00
|
|
|
<Border BorderBrush="{DynamicResource SystemAccentColor}" BorderThickness="1"
|
|
|
|
|
CornerRadius="6" Padding="14">
|
|
|
|
|
<SelectableTextBlock Text="{Binding MnemonicInput}"
|
|
|
|
|
FontFamily="monospace" FontSize="16" TextWrapping="Wrap"/>
|
|
|
|
|
</Border>
|
|
|
|
|
<TextBlock Foreground="Orange" TextWrapping="Wrap"
|
2026-06-11 16:23:02 +02:00
|
|
|
Text="{Binding Loc[wiz.seed.warning]}"/>
|
2026-06-11 16:04:25 +02:00
|
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wiz.back]}" Command="{Binding WizardBackCommand}"/>
|
|
|
|
|
<Button Content="{Binding Loc[wiz.seed.next]}" Classes="accent"
|
2026-06-11 16:04:25 +02:00
|
|
|
Command="{Binding WizardNextFromShowSeedCommand}"/>
|
2026-06-11 10:47:52 +02:00
|
|
|
</StackPanel>
|
2026-06-11 16:04:25 +02:00
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
|
|
<!-- Passo: conferma del seed -->
|
|
|
|
|
<StackPanel IsVisible="{Binding IsStepConfirmSeed}" Spacing="12">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Text="{Binding Loc[wiz.confirm.title]}" FontSize="18" FontWeight="Bold"/>
|
|
|
|
|
<TextBox PlaceholderText="{Binding Loc[wiz.confirm.placeholder]}"
|
2026-06-11 16:04:25 +02:00
|
|
|
AcceptsReturn="False" Text="{Binding ConfirmMnemonicInput}"/>
|
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wiz.back]}" Command="{Binding WizardBackCommand}"/>
|
|
|
|
|
<Button Content="{Binding Loc[wiz.next]}" Classes="accent"
|
2026-06-11 16:04:25 +02:00
|
|
|
Command="{Binding WizardNextFromConfirmSeedCommand}"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</StackPanel>
|
2026-06-11 10:47:52 +02:00
|
|
|
|
2026-06-11 16:04:25 +02:00
|
|
|
<!-- Passo: inserimento seed (ripristino) -->
|
|
|
|
|
<StackPanel IsVisible="{Binding IsStepWords}" Spacing="12">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Text="{Binding Loc[wiz.words.title]}" FontSize="18" FontWeight="Bold"/>
|
|
|
|
|
<TextBox PlaceholderText="{Binding Loc[wiz.words.placeholder]}"
|
2026-06-11 16:04:25 +02:00
|
|
|
AcceptsReturn="False" Text="{Binding MnemonicInput}"/>
|
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wiz.back]}" Command="{Binding WizardBackCommand}"/>
|
|
|
|
|
<Button Content="{Binding Loc[wiz.next]}" Classes="accent"
|
2026-06-11 16:04:25 +02:00
|
|
|
Command="{Binding WizardNextFromWordsCommand}"/>
|
2026-06-11 10:47:52 +02:00
|
|
|
</StackPanel>
|
2026-06-11 16:04:25 +02:00
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
|
|
<!-- Passo: passphrase opzionale -->
|
|
|
|
|
<StackPanel IsVisible="{Binding IsStepPassphrase}" Spacing="12">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Text="{Binding Loc[wiz.passphrase.title]}" FontSize="18" FontWeight="Bold"/>
|
|
|
|
|
<TextBox PlaceholderText="{Binding Loc[wiz.passphrase.placeholder]}"
|
2026-06-11 16:04:25 +02:00
|
|
|
Text="{Binding PassphraseInput}"/>
|
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wiz.back]}" Command="{Binding WizardBackCommand}"/>
|
|
|
|
|
<Button Content="{Binding Loc[wiz.next]}" Classes="accent"
|
2026-06-11 16:04:25 +02:00
|
|
|
Command="{Binding WizardNextFromPassphraseCommand}"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
|
|
<!-- Passo finale: password del file -->
|
|
|
|
|
<StackPanel IsVisible="{Binding IsStepPassword}" Spacing="12">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Text="{Binding Loc[wiz.password.title]}" FontSize="18" FontWeight="Bold"/>
|
|
|
|
|
<TextBox PlaceholderText="{Binding Loc[wiz.password.placeholder]}"
|
2026-06-11 16:04:25 +02:00
|
|
|
PasswordChar="●" Text="{Binding PasswordInput}"/>
|
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wiz.back]}" Command="{Binding WizardBackCommand}"/>
|
|
|
|
|
<Button Content="{Binding Loc[wiz.password.create]}" Classes="accent"
|
2026-06-11 16:04:25 +02:00
|
|
|
Command="{Binding CreateOrRestoreCommand}"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</StackPanel>
|
2026-06-11 10:47:52 +02:00
|
|
|
</StackPanel>
|
|
|
|
|
</ScrollViewer>
|
|
|
|
|
|
|
|
|
|
<!-- ============ PANNELLO WALLET ============ -->
|
2026-06-11 11:27:41 +02:00
|
|
|
<Grid Grid.Row="1" RowDefinitions="Auto,Auto,*" IsVisible="{Binding IsWalletOpen}" Margin="16">
|
2026-06-11 10:47:52 +02:00
|
|
|
|
|
|
|
|
<!-- Testata: saldo + rete + chiudi -->
|
|
|
|
|
<Grid Grid.Row="0" ColumnDefinitions="*,Auto">
|
|
|
|
|
<StackPanel Grid.Column="0" Spacing="2">
|
|
|
|
|
<TextBlock Text="{Binding BalanceText}" FontSize="30" FontWeight="Bold"/>
|
|
|
|
|
<TextBlock Text="{Binding UnconfirmedText}" Foreground="Orange"/>
|
|
|
|
|
<TextBlock Text="{Binding NetworkInfo}" FontSize="12" Foreground="Gray"/>
|
|
|
|
|
</StackPanel>
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Grid.Column="1" Content="{Binding Loc[wallet.close]}" VerticalAlignment="Top"
|
2026-06-11 10:47:52 +02:00
|
|
|
Command="{Binding CloseWalletCommand}"/>
|
|
|
|
|
</Grid>
|
|
|
|
|
|
|
|
|
|
<!-- Server -->
|
|
|
|
|
<Border Grid.Row="1" Margin="0,12,0,12" Padding="10"
|
|
|
|
|
BorderBrush="Gray" BorderThickness="1" CornerRadius="6">
|
2026-06-11 11:27:41 +02:00
|
|
|
<Grid RowDefinitions="Auto,Auto" ColumnDefinitions="Auto,*,Auto,Auto">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Loc[wallet.server]}"
|
2026-06-11 11:27:41 +02:00
|
|
|
VerticalAlignment="Center" Margin="0,0,8,0"/>
|
|
|
|
|
<ComboBox Grid.Row="0" Grid.Column="1"
|
|
|
|
|
ItemsSource="{Binding KnownServers}"
|
|
|
|
|
SelectedItem="{Binding SelectedKnownServer}"
|
|
|
|
|
HorizontalAlignment="Stretch"/>
|
|
|
|
|
<CheckBox Grid.Row="0" Grid.Column="2" Content="TLS"
|
|
|
|
|
IsChecked="{Binding UseSsl}" Margin="8,0"/>
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Grid.Row="0" Grid.Column="3" Content="{Binding Loc[wallet.connect]}"
|
2026-06-11 10:47:52 +02:00
|
|
|
Command="{Binding ConnectAndSyncCommand}" IsEnabled="{Binding !IsSyncing}"/>
|
2026-06-11 11:27:41 +02:00
|
|
|
|
|
|
|
|
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal"
|
|
|
|
|
Spacing="8" Margin="0,8,0,0">
|
|
|
|
|
<TextBox Text="{Binding ServerInput}" MinWidth="220"
|
2026-06-11 16:23:02 +02:00
|
|
|
PlaceholderText="{Binding Loc[wallet.manual]}"/>
|
|
|
|
|
<Button Content="{Binding Loc[wallet.discover]}"
|
2026-06-11 11:27:41 +02:00
|
|
|
Command="{Binding DiscoverServersCommand}"/>
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[wallet.resetcert]}"
|
2026-06-11 11:27:41 +02:00
|
|
|
Command="{Binding ResetCertificatesCommand}"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
<StackPanel Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2"
|
|
|
|
|
Orientation="Horizontal" Spacing="6" Margin="8,8,0,0"
|
|
|
|
|
VerticalAlignment="Center">
|
|
|
|
|
<Ellipse Width="10" Height="10" Fill="LimeGreen"
|
|
|
|
|
IsVisible="{Binding IsConnected}"/>
|
|
|
|
|
<Ellipse Width="10" Height="10" Fill="IndianRed"
|
|
|
|
|
IsVisible="{Binding !IsConnected}"/>
|
|
|
|
|
<TextBlock Text="{Binding ConnectionStatus}" Foreground="Gray"/>
|
|
|
|
|
</StackPanel>
|
2026-06-11 10:47:52 +02:00
|
|
|
</Grid>
|
|
|
|
|
</Border>
|
|
|
|
|
|
2026-06-11 16:23:02 +02:00
|
|
|
<!-- Tab: Ricevi / Storico / Indirizzi / Invia -->
|
2026-06-11 10:47:52 +02:00
|
|
|
<TabControl Grid.Row="2">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TabItem Header="{Binding Loc[tab.receive]}">
|
2026-06-11 10:47:52 +02:00
|
|
|
<StackPanel Spacing="10" Margin="8">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Text="{Binding Loc[receive.next]}"/>
|
2026-06-11 10:47:52 +02:00
|
|
|
<SelectableTextBlock Text="{Binding ReceiveAddress}"
|
|
|
|
|
FontFamily="monospace" FontSize="16"/>
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Text="{Binding Loc[receive.hint]}"
|
2026-06-11 10:47:52 +02:00
|
|
|
Foreground="Gray" FontSize="12" TextWrapping="Wrap"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</TabItem>
|
|
|
|
|
|
2026-06-11 16:23:02 +02:00
|
|
|
<TabItem Header="{Binding Loc[tab.history]}">
|
2026-06-11 10:47:52 +02:00
|
|
|
<ListBox ItemsSource="{Binding History}" Margin="4">
|
|
|
|
|
<ListBox.ItemTemplate>
|
|
|
|
|
<DataTemplate x:DataType="vm:HistoryRow">
|
|
|
|
|
<Grid ColumnDefinitions="90,160,*,70">
|
|
|
|
|
<TextBlock Grid.Column="0" Text="{Binding Conferma}" Foreground="Gray"/>
|
|
|
|
|
<TextBlock Grid.Column="1" Text="{Binding Importo}" FontFamily="monospace"/>
|
|
|
|
|
<SelectableTextBlock Grid.Column="2" Text="{Binding Txid}"
|
|
|
|
|
FontFamily="monospace" FontSize="12"/>
|
|
|
|
|
<TextBlock Grid.Column="3" Text="{Binding Verificata}" Foreground="Green"/>
|
|
|
|
|
</Grid>
|
|
|
|
|
</DataTemplate>
|
|
|
|
|
</ListBox.ItemTemplate>
|
|
|
|
|
</ListBox>
|
|
|
|
|
</TabItem>
|
|
|
|
|
|
2026-06-11 16:23:02 +02:00
|
|
|
<TabItem Header="{Binding Loc[tab.addresses]}">
|
2026-06-11 11:27:41 +02:00
|
|
|
<Grid RowDefinitions="Auto,*" Margin="4">
|
|
|
|
|
<Grid Grid.Row="0" ColumnDefinitions="90,60,*,140,60" Margin="12,4">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Grid.Column="0" Text="{Binding Loc[addr.type]}" FontWeight="Bold"/>
|
|
|
|
|
<TextBlock Grid.Column="1" Text="{Binding Loc[addr.index]}" FontWeight="Bold"/>
|
|
|
|
|
<TextBlock Grid.Column="2" Text="{Binding Loc[addr.address]}" FontWeight="Bold"/>
|
|
|
|
|
<TextBlock Grid.Column="3" Text="{Binding Loc[addr.balance]}" FontWeight="Bold"/>
|
2026-06-11 11:27:41 +02:00
|
|
|
<TextBlock Grid.Column="4" Text="Tx" FontWeight="Bold"/>
|
|
|
|
|
</Grid>
|
|
|
|
|
<ListBox Grid.Row="1" ItemsSource="{Binding Addresses}">
|
|
|
|
|
<ListBox.ItemTemplate>
|
|
|
|
|
<DataTemplate x:DataType="vm:AddressRow">
|
|
|
|
|
<Grid ColumnDefinitions="90,60,*,140,60">
|
|
|
|
|
<TextBlock Grid.Column="0" Text="{Binding Tipo}" Foreground="Gray"/>
|
|
|
|
|
<TextBlock Grid.Column="1" Text="{Binding Indice}" Foreground="Gray"/>
|
|
|
|
|
<SelectableTextBlock Grid.Column="2" Text="{Binding Indirizzo}"
|
|
|
|
|
FontFamily="monospace" FontSize="13"/>
|
|
|
|
|
<TextBlock Grid.Column="3" Text="{Binding Saldo}" FontFamily="monospace"/>
|
|
|
|
|
<TextBlock Grid.Column="4" Text="{Binding NumTx}" Foreground="Gray"/>
|
|
|
|
|
</Grid>
|
|
|
|
|
</DataTemplate>
|
|
|
|
|
</ListBox.ItemTemplate>
|
|
|
|
|
</ListBox>
|
|
|
|
|
</Grid>
|
|
|
|
|
</TabItem>
|
|
|
|
|
|
2026-06-11 16:23:02 +02:00
|
|
|
<TabItem Header="{Binding Loc[tab.send]}">
|
2026-06-11 10:47:52 +02:00
|
|
|
<StackPanel Spacing="10" Margin="8" MaxWidth="640" HorizontalAlignment="Left">
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBox PlaceholderText="{Binding Loc[send.to]}" Text="{Binding SendTo}"
|
2026-06-11 10:47:52 +02:00
|
|
|
FontFamily="monospace"/>
|
2026-06-11 16:23:02 +02:00
|
|
|
<Grid ColumnDefinitions="*,Auto,Auto,Auto">
|
|
|
|
|
<TextBox Grid.Column="0" PlaceholderText="{Binding Loc[send.amount]}"
|
2026-06-11 10:47:52 +02:00
|
|
|
Text="{Binding SendAmount}" IsEnabled="{Binding !SendAll}"/>
|
2026-06-11 16:23:02 +02:00
|
|
|
<TextBlock Grid.Column="1" Text="{Binding UnitLabel}"
|
|
|
|
|
VerticalAlignment="Center" Margin="6,0" Foreground="Gray"/>
|
|
|
|
|
<CheckBox Grid.Column="2" Content="{Binding Loc[send.all]}" Margin="10,0"
|
2026-06-11 10:47:52 +02:00
|
|
|
IsChecked="{Binding SendAll}"/>
|
2026-06-11 16:23:02 +02:00
|
|
|
<StackPanel Grid.Column="3" Orientation="Horizontal" Spacing="6">
|
|
|
|
|
<TextBlock Text="{Binding Loc[send.feerate]}" VerticalAlignment="Center"/>
|
2026-06-11 10:47:52 +02:00
|
|
|
<TextBox Text="{Binding SendFeeRate}" MinWidth="60"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</Grid>
|
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
2026-06-11 16:23:02 +02:00
|
|
|
<Button Content="{Binding Loc[send.prepare]}" Command="{Binding PrepareSendCommand}"/>
|
|
|
|
|
<Button Content="{Binding Loc[send.confirm]}" Classes="accent"
|
2026-06-11 10:47:52 +02:00
|
|
|
Command="{Binding ConfirmSendCommand}"
|
|
|
|
|
IsEnabled="{Binding HasPendingSend}"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
<SelectableTextBlock Text="{Binding SendPreview}" TextWrapping="Wrap"
|
|
|
|
|
FontSize="13"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</TabItem>
|
|
|
|
|
</TabControl>
|
|
|
|
|
</Grid>
|
|
|
|
|
|
|
|
|
|
<!-- Barra di stato -->
|
2026-06-11 11:27:41 +02:00
|
|
|
<Border Grid.Row="2" Background="{DynamicResource SystemControlBackgroundChromeMediumBrush}"
|
2026-06-11 10:47:52 +02:00
|
|
|
Padding="10,6">
|
|
|
|
|
<TextBlock Text="{Binding StatusMessage}" FontSize="12" TextWrapping="Wrap"/>
|
|
|
|
|
</Border>
|
|
|
|
|
</Grid>
|
|
|
|
|
</Window>
|