OSDN Git Service

Added language bindings for Java.
[slunkcrypt/SlunkCrypt.git] / gui / SlunkCryptGUI.xaml
1 <Window x:Class="com.muldersoft.slunkcrypt.gui.SlunkCryptGUI"
2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6         xmlns:local="clr-namespace:com.muldersoft.slunkcrypt.gui"
7         xmlns:utils="clr-namespace:com.muldersoft.slunkcrypt.gui.utils"
8         xmlns:ctrls="clr-namespace:com.muldersoft.slunkcrypt.gui.ctrls"
9         mc:Ignorable="d"
10         Title="SlunkCrypt GUI"
11         Icon="pack://application:,,,/slunkcrypt-gui;component/Resources/Application.ico"
12         SizeToContent="WidthAndHeight"
13         WindowStartupLocation="CenterScreen"
14         ResizeMode="CanResize"
15         WindowStyle="ThreeDBorderWindow"
16         UseLayoutRounding="True"
17         AllowDrop="True"
18         Closing="Window_Closing"
19         PreviewDragEnter="Window_PreviewDragEnter"
20         PreviewDragOver="Window_PreviewDragEnter"
21         PreviewDragLeave="Window_PreviewDragLeave"
22         PreviewDrop="Window_PreviewDrop"
23         PreviewKeyDown="Window_PreviewKeyDown">
24
25     <Window.Resources>
26         <BitmapImage x:Key="ImageSource_Banner" UriSource="Resources/Banner.png"/>
27         <BitmapImage x:Key="ImageSource_Browse" UriSource="Resources/Browse.png"/>
28         <BitmapImage x:Key="ImageSource_Cancel" UriSource="Resources/Cancel.png"/>
29         <BitmapImage x:Key="ImageSource_Exit"   UriSource="Resources/Exit.png"/>
30         <BitmapImage x:Key="ImageSource_Eye1"   UriSource="Resources/Eye_1.png"/>
31         <BitmapImage x:Key="ImageSource_Eye2"   UriSource="Resources/Eye_2.png"/>
32         <BitmapImage x:Key="ImageSource_Info"   UriSource="Resources/Info.png"/>
33         <BitmapImage x:Key="ImageSource_Die"    UriSource="Resources/Die.png"/>
34         <BitmapImage x:Key="ImageSource_Start"  UriSource="Resources/Start.png"/>
35         <BitmapImage x:Key="ImageSource_TabHd1" UriSource="Resources/Tab_Encrypt.png"/>
36         <BitmapImage x:Key="ImageSource_TabHd2" UriSource="Resources/Tab_Decrypt.png"/>
37         <BitmapImage x:Key="ImageSource_TabHd3" UriSource="Resources/Tab_LogFile.png"/>
38         <BitmapImage x:Key="ImageSource_Bkgrnd" UriSource="Resources/Background.png"/>
39         <BitmapImage x:Key="ImageSource_Hint"   UriSource="Resources/Hint.png"/>
40         <ImageBrush x:Key="Brush_Bkgrnd" ImageSource="{StaticResource ImageSource_Bkgrnd}" TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,145,145"/>
41         <FontFamily x:Key="Monospace">pack://application:,,,/Resources/Fonts/#Hack</FontFamily>
42         <utils:FontSizeConverter x:Key="SlightlySmallFont"  Ratio="0.875"/>
43         <utils:FontSizeConverter x:Key="SlightlyLargerFont" Ratio="1.125"/>
44         <utils:VisibilityConverter x:Key="VisibilityConverter" Collapse="False"/>
45     </Window.Resources>
46
47     <Window.TaskbarItemInfo>
48         <TaskbarItemInfo/>
49     </Window.TaskbarItemInfo>
50
51     <StackPanel Style="{StaticResource WaitCursorWhileBusy}" Background="Transparent">
52         <Grid Background="{StaticResource Brush_Bkgrnd}">
53             <Image Source="{StaticResource ImageSource_Banner}" Stretch="None" MouseLeftButtonDown="Image_MouseLeftButtonDown" Name="Banner"/>
54             <Canvas x:Name="Canvas" IsHitTestVisible="False" Visibility="{Binding IsBusyIndicatorVisible, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}, Converter={StaticResource VisibilityConverter}}" MaxWidth="{Binding Path=ActualWidth, ElementName=Banner}" Opacity="0.8"/>
55             <Image Source="{StaticResource ImageSource_Hint}" Stretch="None" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="6" Visibility="Hidden" ToolTip="Software-rendering is enabled!" Name="Hint_SoftwareRendering"/>
56         </Grid>
57         <Separator Margin="0"/>
58         <StackPanel>
59             <StackPanel Margin="12,16,12,12">
60                 <TextBlock FontWeight="SemiBold" Text="Process has not been started yet. Please click the &quot;Start&quot; button to begin!" FontSize="{Binding FontSize, Converter={StaticResource SlightlyLargerFont}, RelativeSource={RelativeSource FindAncestor, AncestorType=Control}}" Margin="0,0,0,5" Name="Label_Status"/>
61                 <Grid>
62                     <Grid.ColumnDefinitions>
63                         <ColumnDefinition Width="*"/>
64                         <ColumnDefinition Width="auto"/>
65                     </Grid.ColumnDefinitions>
66                     <ProgressBar Grid.Column="0" Height="25" Name="ProgressBar" Value="0.0" Maximum="1.0"/>
67                     <TextBlock Grid.Column="0" Text="" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" Name="Label_Progress"/>
68                     <Button Grid.Column="1" Style="{StaticResource EnableWhileBusy}" Margin="2,0,0,0" Click="Button_AbortProcess_Click" Name="Button_Abort" ToolTip="Abort!" Focusable="False" IsTabStop="False">
69                         <Image Source="{StaticResource ImageSource_Cancel}" Margin="4,0,4,0" Style="{StaticResource GrayOutIfDisabled}"/>
70                     </Button>
71                 </Grid>
72                 <TabControl x:Name="TabControl" Margin="0,18,0,0" Style="{StaticResource HitInvisibleWhileBusy}" SelectionChanged="TabControl_SelectionChanged">
73                     <TabItem Name="TabItem_Encrypt" Tag="{x:Static local:ModeOfOperation.Encrypt}">
74                         <TabItem.Header>
75                             <StackPanel Orientation="Horizontal" Margin="10,0,10,0">
76                                 <Image Source="{StaticResource ImageSource_TabHd1}" Stretch="None"/>
77                                 <TextBlock Text="Encrypt" FontWeight="Bold" Style="{StaticResource HighlightIfSelected}" Margin="5,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
78                             </StackPanel>
79                         </TabItem.Header>
80                         <StackPanel Margin="12,4,12,12">
81                             <TextBlock FontWeight="SemiBold" Text="Input Plaintext File:" Margin="0,10,0,0"/>
82                             <DockPanel Margin="0,5,0,0">
83                                 <Button DockPanel.Dock="Right" Padding="7,0,7,0" Margin="3,0,0,0" Click="Button_Encrypt_InputFile_Click">
84                                     <StackPanel Orientation="Horizontal">
85                                         <Image Source="{StaticResource ImageSource_Browse}" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,3,0" Style="{StaticResource GrayOutIfDisabled}" Stretch="None"/>
86                                         <TextBlock Text="Browse..." VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
87                                     </StackPanel>
88                                 </Button>
89                                 <TextBox DockPanel.Dock="Left" Padding="3" Name="Edit_Encrypt_InputFile" Tag="{Binding ElementName=Edit_Encrypt_OutputFile}" KeyDown="Edit_FileName_KeyDown" LostFocus="Edit_FileName_LostFocus" MaxLength="{x:Static local:SlunkCryptGUI.MAX_PATH}"/>
90                             </DockPanel>
91                             <TextBlock FontWeight="SemiBold" Text="Output Ciphertext File:" Margin="0,10,0,0"/>
92                             <DockPanel Margin="0,5,0,0">
93                                 <Button DockPanel.Dock="Right" Padding="7,0,7,0" Margin="3,0,0,0" Click="Button_Encrypt_OutputFile_Click">
94                                     <StackPanel Orientation="Horizontal">
95                                         <Image Source="{StaticResource ImageSource_Browse}" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,3,0" Style="{StaticResource GrayOutIfDisabled}" Stretch="None"/>
96                                         <TextBlock Text="Browse..." VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
97                                     </StackPanel>
98                                 </Button>
99                                 <TextBox DockPanel.Dock="Left" Padding="3" Name="Edit_Encrypt_OutputFile" Tag="{Binding ElementName=Edit_Encrypt_Password}" KeyDown="Edit_FileName_KeyDown" LostFocus="Edit_FileName_LostFocus" MaxLength="{x:Static local:SlunkCryptGUI.MAX_PATH}"/>
100                             </DockPanel>
101                             <TextBlock FontWeight="SemiBold" Text="Passphrase:" Margin="0,10,0,0"/>
102                             <DockPanel Margin="0,5,0,0">
103                                 <ctrls:ImageToggleButton DockPanel.Dock="Right" Margin="3,0,0,0" x:Name="Button_Encrypt_Toggle" ImageSourceDefault="{StaticResource ImageSource_Eye1}" ImageSourceChecked="{StaticResource ImageSource_Eye2}" ToolTipDefault="Show password" ToolTipChecked="Hide password"/>
104                                 <ctrls:ImageButton DockPanel.Dock="Right" Margin="3,0,0,0" Clicked="Button_GeneratePasswd_Click" ImageSource="{StaticResource ImageSource_Die}" ButtonToolTip="Generate random password"/>
105                                 <ctrls:PasswordToggleBox DockPanel.Dock="Left" EditPadding="3,5,3,5" x:Name="Edit_Encrypt_Password" EditFontFamily="{StaticResource Monospace}" IsRevealed="{Binding IsChecked, ElementName=Button_Encrypt_Toggle}" PasswordChar="*" MaxLength="{x:Static local:SlunkCryptGUI.MAX_PASSWD_LENGTH}" Entered="Edit_Password_Entered"/>
106                             </DockPanel>
107                             <CheckBox x:Name="Checkbox_Encrypt_LegacyCompat" Content="Enable &quot;legacy&quot; compatibility-mode (version 1.2.x)" ToolTip="This option should *not* be used when encrypting new files!" Margin="0,14,0,0"/>
108                         </StackPanel>
109                     </TabItem>
110                     <TabItem Name="TabItem_Decrypt" Tag="{x:Static local:ModeOfOperation.Decrypt}">
111                         <TabItem.Header>
112                             <StackPanel Orientation="Horizontal" Margin="10,0,10,0">
113                                 <Image Source="{StaticResource ImageSource_TabHd2}" Stretch="None"/>
114                                 <TextBlock Text="Decrypt" FontWeight="Bold" Style="{StaticResource HighlightIfSelected}" Margin="5,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
115                             </StackPanel>
116                         </TabItem.Header>
117                         <StackPanel Margin="12,4,12,12">
118                             <TextBlock FontWeight="SemiBold" Text="Input Ciphertext File:" Margin="0,10,0,0"/>
119                             <DockPanel Margin="0,5,0,0">
120                                 <Button DockPanel.Dock="Right" Padding="7,0,7,0" Margin="3,0,0,0" Click="Button_Decrypt_InputFile_Click">
121                                     <StackPanel Orientation="Horizontal">
122                                         <Image Source="{StaticResource ImageSource_Browse}" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,3,0" Style="{StaticResource GrayOutIfDisabled}" Stretch="None"/>
123                                         <TextBlock Text="Browse..." VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
124                                     </StackPanel>
125                                 </Button>
126                                 <TextBox DockPanel.Dock="Left" Padding="3" Name="Edit_Decrypt_InputFile" Tag="{Binding ElementName=Edit_Decrypt_OutputFile}" KeyDown="Edit_FileName_KeyDown" LostFocus="Edit_FileName_LostFocus" MaxLength="{x:Static local:SlunkCryptGUI.MAX_PATH}"/>
127                             </DockPanel>
128                             <TextBlock FontWeight="SemiBold" Text="Output Plaintext File:" Margin="0,10,0,0"/>
129                             <DockPanel Margin="0,5,0,0">
130                                 <Button DockPanel.Dock="Right" Padding="7,0,7,0" Margin="3,0,0,0" Click="Button_Decrypt_OutputFile_Click">
131                                     <StackPanel Orientation="Horizontal">
132                                         <Image Source="{StaticResource ImageSource_Browse}" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,3,0" Style="{StaticResource GrayOutIfDisabled}" Stretch="None"/>
133                                         <TextBlock Text="Browse..." VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
134                                     </StackPanel>
135                                 </Button>
136                                 <TextBox DockPanel.Dock="Left" Padding="3" Name="Edit_Decrypt_OutputFile" Tag="{Binding ElementName=Edit_Decrypt_Password}" KeyDown="Edit_FileName_KeyDown" LostFocus="Edit_FileName_LostFocus" MaxLength="{x:Static local:SlunkCryptGUI.MAX_PATH}"/>
137                             </DockPanel>
138                             <TextBlock FontWeight="SemiBold" Text="Passphrase:" Margin="0,10,0,0"/>
139                             <DockPanel Margin="0,5,0,0">
140                                 <ctrls:ImageToggleButton DockPanel.Dock="Right" Margin="3,0,0,0" x:Name="Button_Decrypt_Toggle" ImageSourceDefault="{StaticResource ImageSource_Eye1}" ImageSourceChecked="{StaticResource ImageSource_Eye2}" ToolTipDefault="Show password" ToolTipChecked="Hide password"/>
141                                 <ctrls:PasswordToggleBox DockPanel.Dock="Left" EditPadding="3,5,3,5" x:Name="Edit_Decrypt_Password" EditFontFamily="{StaticResource Monospace}" IsRevealed="{Binding IsChecked, ElementName=Button_Decrypt_Toggle}" PasswordChar="*" MaxLength="{x:Static local:SlunkCryptGUI.MAX_PASSWD_LENGTH}" Entered="Edit_Password_Entered"/>
142                             </DockPanel>
143                             <CheckBox x:Name="Checkbox_Decrypt_LegacyCompat" Content="Enable &quot;legacy&quot; compatibility-mode (version 1.2.x)" ToolTip="This option *must* be enabled to decrypt files that were in encrypted with version 1.2.x or older!" Margin="0,14,0,0"/>
144                         </StackPanel>
145                     </TabItem>
146                     <TabItem Name="TabItem_LogFile">
147                         <TabItem.Header>
148                             <StackPanel Orientation="Horizontal" Margin="10,0,10,0">
149                                 <Image Source="{StaticResource ImageSource_TabHd3}" Stretch="None"/>
150                                 <TextBlock Text="Logfile" FontWeight="Bold" Style="{StaticResource HighlightIfSelected}" Margin="5,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
151                             </StackPanel>
152                         </TabItem.Header>
153                         <DockPanel Margin="12">
154                             <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal">
155                                 <ctrls:Hyperlink LinkText="Copy to Clipboard" Margin="0,3,0,0" Click="Link_CopyToClipboard_Click"/>
156                                 <ctrls:Hyperlink LinkText="Clear" Margin="7,3,0,0" Click="Link_ClearLog_Click"/>
157                             </StackPanel>
158                             <Grid>
159                                 <ListView DockPanel.Dock="Top" VerticalAlignment="Stretch" FontFamily="Courier New" FontSize="{Binding FontSize, Converter={StaticResource SlightlySmallFont}, RelativeSource={RelativeSource FindAncestor, AncestorType=Control}}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding LogFile, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" ItemContainerStyle="{StaticResource ItemToolTips}"/>
160                                 <TextBlock Text="The log file is empty. Please check back later!" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" Foreground="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" DataContext="{Binding LogFile, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" Style="{StaticResource HideIfNotEmpty}"/>
161                             </Grid>
162                         </DockPanel>
163                     </TabItem>
164                 </TabControl>
165             </StackPanel>
166             <Separator Margin="0,5,0,5"/>
167             <Grid Name="Grid_ButtonBar" Margin="12" Style="{StaticResource DisableWhileBusy}">
168                 <Grid.ColumnDefinitions>
169                     <ColumnDefinition Width="auto"/>
170                     <ColumnDefinition Width="*"/>
171                     <ColumnDefinition Width="auto"/>
172                     <ColumnDefinition Width="*"/>
173                     <ColumnDefinition Width="auto"/>
174                 </Grid.ColumnDefinitions>
175                 <Button Grid.Column="0" Padding="25,4,25,4" Name="Button_Start" MinWidth="125" Click="Button_Start_Click">
176                     <StackPanel Orientation="Horizontal">
177                         <Image Source="{StaticResource ImageSource_Start}" Margin="0,0,5,0" Style="{StaticResource GrayOutIfDisabled}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
178                         <TextBlock FontWeight="Bold" Text="Start" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
179                     </StackPanel>
180                 </Button>
181                 <Button Grid.Column="2" Padding="25,4,25,4" Name="Button_About" Margin="10,0,0,0" MinWidth="125" Click="Button_About_Click">
182                     <StackPanel Orientation="Horizontal">
183                         <Image Source="{StaticResource ImageSource_Info}" Margin="0,0,5,0" Style="{StaticResource GrayOutIfDisabled}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
184                         <TextBlock FontWeight="Bold" Text="About..." VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
185                     </StackPanel>
186                 </Button>
187                 <Button Grid.Column="4" Padding="25,4,25,4" Name="Button_Exit" MinWidth="125" Click="Button_Exit_Click">
188                     <StackPanel Orientation="Horizontal">
189                         <Image Source="{StaticResource ImageSource_Exit}" Margin="0,0,5,0" Style="{StaticResource GrayOutIfDisabled}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
190                         <TextBlock FontWeight="Bold" Text="Exit" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
191                     </StackPanel>
192                 </Button>
193             </Grid>
194         </StackPanel>
195     </StackPanel>
196 </Window>