Compare commits
13 commits
Author | SHA1 | Date | |
---|---|---|---|
ff39390505 | |||
e849d5ed43 | |||
e7fbfd9d8d | |||
52937f3839 | |||
3a131d93ed | |||
6bcd3da29f | |||
18878e34dd | |||
2156aff43c | |||
7717e63d04 | |||
719e900f22 | |||
cc198d6cba | |||
a5b4a21219 | |||
1f964b3148 |
11 changed files with 165 additions and 38 deletions
|
@ -42,7 +42,20 @@ jobs:
|
||||||
--self-contained true \
|
--self-contained true \
|
||||||
-p:PublishSingleFile=true \
|
-p:PublishSingleFile=true \
|
||||||
-p:PublishTrimmed=true \
|
-p:PublishTrimmed=true \
|
||||||
-o ./output_linux
|
-o ./output_linux_x64
|
||||||
|
|
||||||
|
- name: Build the project (Linux arm64)
|
||||||
|
run: |
|
||||||
|
dotnet publish ./Cryptura/Cryptura.csproj \
|
||||||
|
-c Release \
|
||||||
|
-r linux-arm64 \
|
||||||
|
--self-contained true \
|
||||||
|
-p:PublishSingleFile=true \
|
||||||
|
-p:PublishTrimmed=true \
|
||||||
|
-o ./output_linux_arm64
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- name: Build the project (Windows x64)
|
- name: Build the project (Windows x64)
|
||||||
run: |
|
run: |
|
||||||
dotnet publish ./Cryptura/Cryptura.csproj \
|
dotnet publish ./Cryptura/Cryptura.csproj \
|
||||||
|
@ -51,15 +64,49 @@ jobs:
|
||||||
--self-contained true \
|
--self-contained true \
|
||||||
-p:PublishSingleFile=true \
|
-p:PublishSingleFile=true \
|
||||||
-p:PublishTrimmed=true \
|
-p:PublishTrimmed=true \
|
||||||
-o ./output_win
|
-o ./output_win_x64
|
||||||
|
|
||||||
|
- name: Build the project (Windows arm64)
|
||||||
|
run: |
|
||||||
|
dotnet publish ./Cryptura/Cryptura.csproj \
|
||||||
|
-c Release \
|
||||||
|
-r win-arm64 \
|
||||||
|
--self-contained true \
|
||||||
|
-p:PublishSingleFile=true \
|
||||||
|
-p:PublishTrimmed=true \
|
||||||
|
-o ./output_win_arm64
|
||||||
|
|
||||||
|
|
||||||
|
- name: Download appimagetool
|
||||||
|
run: |
|
||||||
|
curl -L -o appimagetool-x86_64.AppImage https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
|
||||||
|
chmod +x appimagetool-x86_64.AppImage
|
||||||
|
|
||||||
|
- name: Build AppImage
|
||||||
|
run: |
|
||||||
|
mkdir -p Cryptura.AppDir/usr/bin
|
||||||
|
cp -r ./output_linux_x64/* Cryptura.AppDir/usr/bin/
|
||||||
|
|
||||||
|
cp Cryptura/Assets/AppRun Cryptura.AppDir/
|
||||||
|
cp Cryptura/Assets/cryptura.desktop Cryptura.AppDir/
|
||||||
|
cp Cryptura/Assets/cryptura.png Cryptura.AppDir/
|
||||||
|
|
||||||
|
chmod +x Cryptura.AppDir/AppRun
|
||||||
|
|
||||||
|
./appimagetool-x86_64.AppImage Cryptura.AppDir
|
||||||
|
|
||||||
|
mkdir -p release
|
||||||
|
mv Cryptura-x86_64.AppImage release/Cryptura_Linux_x64.AppImage
|
||||||
|
|
||||||
|
|
||||||
- name: Pack Releases into Zips
|
- name: Pack Releases into Zips
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ./release
|
mkdir -p ./release
|
||||||
zip -r ./release/Cryptura_Linux_x64.zip ./output_linux
|
zip -r ./release/Cryptura_Linux_x64.zip ./output_linux_x64
|
||||||
zip -r ./release/Cryptura_Windows_x64.zip ./output_win
|
zip -r ./release/Cryptura_Linux_arm64.zip ./output_linux_arm64
|
||||||
rm -rf ./output_linux ./output_win
|
zip -r ./release/Cryptura_Windows_x64.zip ./output_win_x64
|
||||||
|
zip -r ./release/Cryptura_Windows_arm64.zip ./output_win_arm64
|
||||||
|
rm -rf ./output_linux_x64 ./output_linux_arm64 ./output_win_x64 ./output_win_arm64
|
||||||
|
|
||||||
|
|
||||||
- name: Create Git tag
|
- name: Create Git tag
|
||||||
|
|
3
Cryptura/Assets/AppRun
Executable file
3
Cryptura/Assets/AppRun
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
HERE="$(dirname "$(readlink -f "$0")")"
|
||||||
|
exec "$HERE/usr/bin/Cryptura" "$@"
|
6
Cryptura/Assets/cryptura.desktop
Normal file
6
Cryptura/Assets/cryptura.desktop
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Cryptura
|
||||||
|
Exec=Cryptura
|
||||||
|
Icon=cryptura
|
||||||
|
Categories=Utility;
|
BIN
Cryptura/Assets/cryptura.png
Normal file
BIN
Cryptura/Assets/cryptura.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 282 KiB |
|
@ -4,10 +4,11 @@
|
||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||||
|
<ApplicationIcon>icon.ico</ApplicationIcon>
|
||||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||||
<AssemblyVersion>1.0</AssemblyVersion>
|
<AssemblyVersion>1.0</AssemblyVersion>
|
||||||
<FileVersion>1.0</FileVersion>
|
<FileVersion>2.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
Background="Transparent"
|
Background="Transparent"
|
||||||
Height="400"
|
Height="400"
|
||||||
Width="520"
|
Width="520"
|
||||||
|
MinHeight="340"
|
||||||
|
MinWidth="340"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
Title="Cryptura">
|
Title="Cryptura">
|
||||||
<!--ExtendClientAreaToDecorationsHint="True"-->
|
<!--ExtendClientAreaToDecorationsHint="True"-->
|
||||||
|
@ -24,8 +26,10 @@
|
||||||
</ExperimentalAcrylicBorder>
|
</ExperimentalAcrylicBorder>
|
||||||
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<Border Grid.Row="0" Background="#80000000" CornerRadius="10" Margin="10" Name="ContentBorder">
|
<Border Width="1" Background="#80000000" Margin="5,20" HorizontalAlignment="Center" ZIndex="1" Name="MiddleSeperator" IsVisible="False"/>
|
||||||
<ListBox Name="PasswordList" Background="Transparent" SelectionChanged="PasswordList_OnSelectionChanged">
|
<Border Background="#80000000" CornerRadius="10" Margin="10" Name="ContentBorder">
|
||||||
|
<ListBox Name="PasswordList" Background="Transparent" SelectionChanged="PasswordList_OnSelectionChanged"
|
||||||
|
Margin="10">
|
||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate x:DataType="local:Password">
|
<DataTemplate x:DataType="local:Password">
|
||||||
<Border Background="Transparent" Padding="10">
|
<Border Background="Transparent" Padding="10">
|
||||||
|
@ -33,11 +37,26 @@
|
||||||
<ContextMenu>
|
<ContextMenu>
|
||||||
<MenuItem Header="Add New Password" Click="CreatePassword_OnClick"/>
|
<MenuItem Header="Add New Password" Click="CreatePassword_OnClick"/>
|
||||||
<MenuItem Header="Remove Password" Click="DeletePassword_OnClick"/>
|
<MenuItem Header="Remove Password" Click="DeletePassword_OnClick"/>
|
||||||
|
<MenuItem Header="Hide/Unhide Passwords" Click="ToggleHide_OnClick"/>
|
||||||
</ContextMenu>
|
</ContextMenu>
|
||||||
</Border.ContextMenu>
|
</Border.ContextMenu>
|
||||||
<Grid ColumnDefinitions="*, *">
|
<Grid ColumnDefinitions="*, *">
|
||||||
<TextBlock Grid.Column="0" Foreground="White" Text="{Binding Name}" VerticalAlignment="Center"/>
|
<TextBlock
|
||||||
<TextBlock Grid.Column="1" Foreground="White" Text="{Binding DisplayValue}" VerticalAlignment="Center"/>
|
Grid.Column="0"
|
||||||
|
Foreground="White"
|
||||||
|
Text="{Binding Name}"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
TextTrimming="CharacterEllipsis"
|
||||||
|
TextWrapping="NoWrap"
|
||||||
|
Margin="20,0"/>
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="1"
|
||||||
|
Foreground="White"
|
||||||
|
Text="{Binding DisplayValue}"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
TextTrimming="CharacterEllipsis"
|
||||||
|
TextWrapping="NoWrap"
|
||||||
|
Margin="20,0"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
@ -45,12 +64,15 @@
|
||||||
<ListBox.ContextMenu>
|
<ListBox.ContextMenu>
|
||||||
<ContextMenu>
|
<ContextMenu>
|
||||||
<MenuItem Header="Add New Password" Click="CreatePassword_OnClick"/>
|
<MenuItem Header="Add New Password" Click="CreatePassword_OnClick"/>
|
||||||
<MenuItem Header="Remove Password" Click="DeletePassword_OnClick"/>
|
<MenuItem Header="Hide/Unhide Passwords" Click="ToggleHide_OnClick"/>
|
||||||
</ContextMenu>
|
</ContextMenu>
|
||||||
</ListBox.ContextMenu>
|
</ListBox.ContextMenu>
|
||||||
<ListBox.Styles>
|
<ListBox.Styles>
|
||||||
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
|
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
|
||||||
<Setter Property="Background" Value="#35313d"/>
|
<Setter Property="Background" Value="#40000000"/>
|
||||||
|
</Style>
|
||||||
|
<Style Selector="ListBoxItem:pointerover /template/ ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="#20000000"></Setter>
|
||||||
</Style>
|
</Style>
|
||||||
<Style Selector="ListBoxItem">
|
<Style Selector="ListBoxItem">
|
||||||
<Setter Property="Padding" Value="0"/>
|
<Setter Property="Padding" Value="0"/>
|
||||||
|
@ -58,23 +80,40 @@
|
||||||
</Style>
|
</Style>
|
||||||
</ListBox.Styles>
|
</ListBox.Styles>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
|
|
||||||
</Border>
|
</Border>
|
||||||
<Border Background="#80000000" Name="AddPasswordContainer" IsVisible="False">
|
<Border Background="#80000000" Name="AddPasswordContainer" IsVisible="False" PointerPressed="OuterBorder_OnPointerPressed" ZIndex="11">
|
||||||
<Border Margin="50" Background="#2b2f36" CornerRadius="10">
|
<Border Background="#80000000" CornerRadius="10" PointerPressed="InnerBorder_OnPointerPressed"
|
||||||
|
Name="AddPasswordBorder"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Height="300"
|
||||||
|
Width="300">
|
||||||
<StackPanel Spacing="10" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="20">
|
<StackPanel Spacing="10" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="20">
|
||||||
<TextBlock Text="Name:" Margin="20,0"/>
|
<TextBlock Text="Name:" Margin="20,0"/>
|
||||||
<TextBox Name="PasswordName" Margin="20,0" HorizontalAlignment="Stretch" VerticalAlignment="Center" KeyDown="DialogKeyDown"/>
|
<TextBox Name="PasswordName"
|
||||||
|
Margin="20,0"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
KeyDown="DialogKeyDown"/>
|
||||||
<TextBlock Text="Password:" Margin="20,0"/>
|
<TextBlock Text="Password:" Margin="20,0"/>
|
||||||
<TextBox Name="PasswordValue" Margin="20,0" HorizontalAlignment="Stretch" VerticalAlignment="Center" KeyDown="DialogKeyDown"/>
|
<TextBox Name="PasswordValue"
|
||||||
|
Margin="20,0"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
KeyDown="DialogKeyDown"
|
||||||
|
PasswordChar="*"/>
|
||||||
<TextBlock Text="Repeat Password:" Margin="20,0"/>
|
<TextBlock Text="Repeat Password:" Margin="20,0"/>
|
||||||
<TextBox Name="PasswordRepeat" Margin="20,0" HorizontalAlignment="Stretch" VerticalAlignment="Center" KeyDown="DialogKeyDown"/>
|
<TextBox Name="PasswordRepeat"
|
||||||
|
Margin="20,0"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
KeyDown="DialogKeyDown"
|
||||||
|
PasswordChar="*"/>
|
||||||
|
<TextBlock Name="ErrorTextBlock" IsVisible="False" HorizontalAlignment="Center" Foreground="Crimson"/>
|
||||||
<Button Name="PasswordSave" Click="PasswordSave_OnClick" HorizontalAlignment="Center" VerticalAlignment="Center"
|
<Button Name="PasswordSave" Click="PasswordSave_OnClick" HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||||
Content="Confirm"/>
|
Content="Confirm"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Panel>
|
</Panel>
|
||||||
|
|
|
@ -20,13 +20,15 @@ public partial class MainWindow : Window
|
||||||
this.TransparencyLevelHint = new[] { WindowTransparencyLevel.None };
|
this.TransparencyLevelHint = new[] { WindowTransparencyLevel.None };
|
||||||
this.Background = new SolidColorBrush(Color.Parse(ColorScheme.Surface.Color_1));
|
this.Background = new SolidColorBrush(Color.Parse(ColorScheme.Surface.Color_1));
|
||||||
this.ContentBorder.Background = new SolidColorBrush(Color.Parse(ColorScheme.Surface.Color_2));
|
this.ContentBorder.Background = new SolidColorBrush(Color.Parse(ColorScheme.Surface.Color_2));
|
||||||
AcrylicBorderObject.IsVisible = false;
|
this.AddPasswordBorder.Background = new SolidColorBrush(Color.Parse(ColorScheme.Surface.Color_2));
|
||||||
|
this.MiddleSeperator.IsVisible = true;
|
||||||
|
this.AcrylicBorderObject.IsVisible = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.TransparencyLevelHint = new[] { WindowTransparencyLevel.AcrylicBlur };
|
this.TransparencyLevelHint = new[] { WindowTransparencyLevel.AcrylicBlur };
|
||||||
this.Background = Brushes.Transparent;
|
this.Background = Brushes.Transparent;
|
||||||
AcrylicBorderObject.IsVisible = true;
|
this.AcrylicBorderObject.IsVisible = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public MainWindow(string masterPassword)
|
public MainWindow(string masterPassword)
|
||||||
|
@ -45,6 +47,7 @@ public partial class MainWindow : Window
|
||||||
if (Path.GetExtension(file).ToLower() == ".wx")
|
if (Path.GetExtension(file).ToLower() == ".wx")
|
||||||
{
|
{
|
||||||
Password pw = new Password(file);
|
Password pw = new Password(file);
|
||||||
|
if(!String.IsNullOrEmpty(pw.Value))
|
||||||
passwords.Add(pw);
|
passwords.Add(pw);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -65,11 +68,7 @@ public partial class MainWindow : Window
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Button_OnClick(object? sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
censorPasswords = !censorPasswords;
|
|
||||||
FetchPasswords();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PasswordList_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
private void PasswordList_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||||
{
|
{
|
||||||
|
@ -83,12 +82,23 @@ public partial class MainWindow : Window
|
||||||
|
|
||||||
private void DeletePassword_OnClick(object? sender, RoutedEventArgs e)
|
private void DeletePassword_OnClick(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
if (PasswordList.SelectedItem is Password password)
|
||||||
|
{
|
||||||
|
File.Delete(password.WxFile.Path);
|
||||||
|
FetchPasswords();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private void ToggleHide_OnClick(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
censorPasswords = !censorPasswords;
|
||||||
|
FetchPasswords();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ErrorMessage(string message)
|
private void ErrorMessage(string message)
|
||||||
{
|
{
|
||||||
//TODO: Show Error in GUI
|
ErrorTextBlock.Text = message;
|
||||||
|
ErrorTextBlock.IsVisible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SavePassword()
|
private void SavePassword()
|
||||||
|
@ -110,7 +120,17 @@ public partial class MainWindow : Window
|
||||||
}
|
}
|
||||||
Password newPassword = new Password(PasswordName.Text, PasswordValue.Text);
|
Password newPassword = new Password(PasswordName.Text, PasswordValue.Text);
|
||||||
FetchPasswords();
|
FetchPasswords();
|
||||||
|
ResetPasswordModal();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ResetPasswordModal()
|
||||||
|
{
|
||||||
AddPasswordContainer.IsVisible = false;
|
AddPasswordContainer.IsVisible = false;
|
||||||
|
PasswordName.Text = "";
|
||||||
|
PasswordValue.Text = "";
|
||||||
|
PasswordRepeat.Text = "";
|
||||||
|
ErrorTextBlock.IsVisible = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PasswordSave_OnClick(object? sender, RoutedEventArgs e)
|
private void PasswordSave_OnClick(object? sender, RoutedEventArgs e)
|
||||||
|
@ -125,4 +145,13 @@ public partial class MainWindow : Window
|
||||||
SavePassword();
|
SavePassword();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OuterBorder_OnPointerPressed(object? sender, PointerPressedEventArgs e)
|
||||||
|
{
|
||||||
|
ResetPasswordModal();
|
||||||
|
}
|
||||||
|
private void InnerBorder_OnPointerPressed(object sender, PointerPressedEventArgs e)
|
||||||
|
{
|
||||||
|
e.Handled = true;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -9,12 +9,12 @@ public class Password
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string Value { get; set; }
|
public string Value { get; set; }
|
||||||
public string CensoredValue { get; set; } = "******";
|
public string CensoredValue { get; set; } = "**********";
|
||||||
public WXFile WxFile { get; set; }
|
public WXFile WxFile { get; set; }
|
||||||
|
|
||||||
public string DisplayValue
|
public string DisplayValue
|
||||||
{
|
{
|
||||||
get => MainWindow.censorPasswords ? Value : CensoredValue;
|
get => MainWindow.censorPasswords ? CensoredValue : Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Password(string name, string value)
|
public Password(string name, string value)
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
Title="Cryptura"
|
Title="Cryptura"
|
||||||
CanResize="False"
|
CanResize="False"
|
||||||
Width="430"
|
Width="430"
|
||||||
Height="170">
|
Height="170"
|
||||||
|
Loaded="Control_OnLoaded"
|
||||||
|
WindowStartupLocation="CenterScreen">
|
||||||
<Panel>
|
<Panel>
|
||||||
<ExperimentalAcrylicBorder IsHitTestVisible="False" Name="AcrylicBorderObject">
|
<ExperimentalAcrylicBorder IsHitTestVisible="False" Name="AcrylicBorderObject">
|
||||||
<ExperimentalAcrylicBorder.Material>
|
<ExperimentalAcrylicBorder.Material>
|
||||||
|
@ -22,7 +24,6 @@
|
||||||
</ExperimentalAcrylicBorder>
|
</ExperimentalAcrylicBorder>
|
||||||
<Border Background="#80000000" CornerRadius="10" Margin="10" Name="ContentBorder">
|
<Border Background="#80000000" CornerRadius="10" Margin="10" Name="ContentBorder">
|
||||||
<StackPanel Spacing="10" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="20">
|
<StackPanel Spacing="10" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="20">
|
||||||
|
|
||||||
<TextBlock Text="Enter Master password" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
<TextBlock Text="Enter Master password" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||||
<TextBox Name="MasterPasswordBox" HorizontalAlignment="Center" VerticalAlignment="Center" Width="300" PasswordChar="*" KeyDown="MasterPasswordBox_OnKeyDown"/>
|
<TextBox Name="MasterPasswordBox" HorizontalAlignment="Center" VerticalAlignment="Center" Width="300" PasswordChar="*" KeyDown="MasterPasswordBox_OnKeyDown"/>
|
||||||
<Button Name="MasterPasswordConfirm" Content="Confirm" Click="MasterPasswordConfirm_OnClick" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
<Button Name="MasterPasswordConfirm" Content="Confirm" Click="MasterPasswordConfirm_OnClick" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||||
|
|
|
@ -32,10 +32,6 @@ public partial class PasswordWindow : Window
|
||||||
AdjustThemeToPlatform();
|
AdjustThemeToPlatform();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WindowBase_OnResized(object? sender, WindowResizedEventArgs e)
|
|
||||||
{
|
|
||||||
Console.WriteLine(e.ClientSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ConfirmPassword()
|
private void ConfirmPassword()
|
||||||
{
|
{
|
||||||
|
@ -54,4 +50,9 @@ public partial class PasswordWindow : Window
|
||||||
ConfirmPassword();
|
ConfirmPassword();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Control_OnLoaded(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
MasterPasswordBox.Focus();
|
||||||
|
}
|
||||||
}
|
}
|
BIN
Cryptura/icon.ico
Normal file
BIN
Cryptura/icon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 122 KiB |
Loading…
Add table
Reference in a new issue