Skip to content

Commit b3c6a8e

Browse files
committed
app GUI remake
1 parent ab9478a commit b3c6a8e

6 files changed

Lines changed: 132 additions & 89 deletions

File tree

App.xaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,18 @@
22
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:local="clr-namespace:WPF_Utils"
5+
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
56
StartupUri="MainWindow.xaml">
67
<Application.Resources>
7-
8+
<ResourceDictionary>
9+
<ResourceDictionary.MergedDictionaries>
10+
<materialDesign:BundledTheme BaseTheme="Light" PrimaryColor="DeepPurple" SecondaryColor="Purple" />
11+
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesign3.Defaults.xaml" />
12+
</ResourceDictionary.MergedDictionaries>
13+
14+
<SolidColorBrush x:Key="AppBackground" Color="#FFF5F3F8" />
15+
<SolidColorBrush x:Key="SidebarBackground" Color="#FFEBE6F0" />
16+
<SolidColorBrush x:Key="AppText" Color="#FF333333" />
17+
</ResourceDictionary>
818
</Application.Resources>
919
</Application>

MainWindow.xaml

Lines changed: 110 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -4,110 +4,134 @@
44
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
66
xmlns:local="clr-namespace:WPF_utils"
7+
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
78
mc:Ignorable="d"
8-
Title="Utilities" Height="450" Width="600"
9-
Background="#F4F4F9"
10-
Icon="/wpf_utils.ico">
9+
TextElement.Foreground="{DynamicResource AppText}"
10+
TextElement.FontWeight="Regular"
11+
TextElement.FontSize="13"
12+
TextOptions.TextFormattingMode="Ideal"
13+
TextOptions.TextRenderingMode="Auto"
14+
Background="{DynamicResource AppBackground}"
15+
FontFamily="{DynamicResource MaterialDesignFont}"
16+
Title="Utilities" Height="450" Width="700"
17+
Icon="wek_icon.ico">
1118
<Grid>
12-
<TabControl Background="Transparent" BorderThickness="0" Margin="10">
19+
<Grid.ColumnDefinitions>
20+
<ColumnDefinition Width="200" />
21+
<ColumnDefinition Width="*" />
22+
</Grid.ColumnDefinitions>
23+
24+
<!-- Sidebar -->
25+
<Border Grid.Column="0" Background="{DynamicResource SidebarBackground}" Margin="0">
26+
<ListBox x:Name="AppMenu" SelectionChanged="AppMenu_SelectionChanged" SelectedIndex="0"
27+
Background="Transparent" BorderThickness="0" Margin="0,20,0,0">
28+
<ListBoxItem Padding="10">
29+
<StackPanel Orientation="Horizontal">
30+
<materialDesign:PackIcon Kind="FolderMultipleOutline" Width="24" Height="24" Margin="0,0,10,0" Foreground="{DynamicResource AppText}" />
31+
<TextBlock Text="File Organizer" FontSize="16" Foreground="{DynamicResource AppText}" VerticalAlignment="Center" />
32+
</StackPanel>
33+
</ListBoxItem>
34+
<ListBoxItem Padding="10">
35+
<StackPanel Orientation="Horizontal">
36+
<materialDesign:PackIcon Kind="Thermometer" Width="24" Height="24" Margin="0,0,10,0" Foreground="{DynamicResource AppText}" />
37+
<TextBlock Text="Temp Converter" FontSize="16" Foreground="{DynamicResource AppText}" VerticalAlignment="Center" />
38+
</StackPanel>
39+
</ListBoxItem>
40+
<ListBoxItem Padding="10">
41+
<StackPanel Orientation="Horizontal">
42+
<materialDesign:PackIcon Kind="VideoOutline" Width="24" Height="24" Margin="0,0,10,0" Foreground="{DynamicResource AppText}" />
43+
<TextBlock Text="Video to GIF" FontSize="16" Foreground="{DynamicResource AppText}" VerticalAlignment="Center" />
44+
</StackPanel>
45+
</ListBoxItem>
46+
<ListBoxItem Padding="10">
47+
<StackPanel Orientation="Horizontal">
48+
<materialDesign:PackIcon Kind="ImageOutline" Width="24" Height="24" Margin="0,0,10,0" Foreground="{DynamicResource AppText}" />
49+
<TextBlock Text="Image Converter" FontSize="16" Foreground="{DynamicResource AppText}" VerticalAlignment="Center" />
50+
</StackPanel>
51+
</ListBoxItem>
52+
</ListBox>
53+
</Border>
54+
55+
<!-- Content Area -->
56+
<TabControl x:Name="MainTabControl" Grid.Column="1" Background="Transparent" BorderThickness="0" Margin="10">
57+
<!-- Esta TabControl terá suas abas ocultas -->
58+
<TabControl.ItemContainerStyle>
59+
<Style TargetType="{x:Type TabItem}">
60+
<Setter Property="Visibility" Value="Collapsed" />
61+
</Style>
62+
</TabControl.ItemContainerStyle>
63+
1364
<!-- Primeira Aba: Organizador de Arquivos -->
1465
<TabItem Header="File Organizer">
15-
<StackPanel Margin="20">
16-
<TextBlock Text="Source Folder:" Margin="0,5,0,2" FontWeight="SemiBold"/>
17-
<Grid>
18-
<Grid.ColumnDefinitions>
19-
<ColumnDefinition Width="*" />
20-
<ColumnDefinition Width="Auto" />
21-
</Grid.ColumnDefinitions>
22-
<TextBox x:Name="txtOrigem" Padding="5" />
23-
<Button Grid.Column="1" Content="..." Width="35" Margin="5,0,0,0" Click="ProcurarOrigem_Click" ToolTip="Browse Folder" />
24-
</Grid>
25-
26-
<TextBlock Text="File Extension (e.g., .txt, .pdf):" Margin="0,15,0,2" FontWeight="SemiBold"/>
27-
<TextBox x:Name="txtExtensao" Padding="5" />
28-
29-
<TextBlock Text="Destination Folder:" Margin="0,15,0,2" FontWeight="SemiBold"/>
30-
<Grid>
31-
<Grid.ColumnDefinitions>
32-
<ColumnDefinition Width="*" />
33-
<ColumnDefinition Width="Auto" />
34-
</Grid.ColumnDefinitions>
35-
<TextBox x:Name="txtDestino" Padding="5" />
36-
<Button Grid.Column="1" Content="..." Width="35" Margin="5,0,0,0" Click="ProcurarDestino_Click" ToolTip="Browse Folder" />
37-
</Grid>
38-
39-
<Button Content="Move Files" Click="MoverArquivos_Click"
40-
Margin="0,20,0,10" Padding="8" Background="#007ACC"
41-
Foreground="White" BorderThickness="0" Cursor="Hand" />
42-
43-
<TextBlock x:Name="txtStatus" TextWrapping="Wrap" FontWeight="SemiBold" />
44-
</StackPanel>
66+
<ScrollViewer VerticalScrollBarVisibility="Auto">
67+
<StackPanel Margin="20">
68+
<TextBlock Text="File Organizer" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Margin="0,0,0,20" />
69+
70+
<TextBox x:Name="txtOrigem" materialDesign:HintAssist.Hint="Source Folder" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0,0,0,15" />
71+
<Button Content="Browse..." Width="100" HorizontalAlignment="Left" Click="ProcurarOrigem_Click" Margin="0,0,0,20" Style="{StaticResource MaterialDesignOutlinedButton}" />
72+
73+
<TextBox x:Name="txtExtensao" materialDesign:HintAssist.Hint="File Extension (e.g., .txt, .pdf)" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0,0,0,20" />
74+
75+
<TextBox x:Name="txtDestino" materialDesign:HintAssist.Hint="Destination Folder" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0,0,0,15" />
76+
<Button Content="Browse..." Width="100" HorizontalAlignment="Left" Click="ProcurarDestino_Click" Margin="0,0,0,20" Style="{StaticResource MaterialDesignOutlinedButton}" />
77+
78+
<Button Content="Move Files" Click="MoverArquivos_Click" Margin="0,10,0,20" Width="150" HorizontalAlignment="Left" />
79+
80+
<TextBlock x:Name="txtStatus" TextWrapping="Wrap" FontWeight="SemiBold" />
81+
</StackPanel>
82+
</ScrollViewer>
4583
</TabItem>
4684

85+
<!-- Segunda Aba: Conversor de Temperatura -->
4786
<TabItem Header="Temperature Converter">
4887
<StackPanel Margin="20">
49-
<TextBlock Text="Celsius (°C):" Margin="0,5,0,2" FontWeight="SemiBold"/>
50-
<TextBox x:Name="txtCelsius" Padding="5" TextChanged="txtCelsius_TextChanged" />
88+
<TextBlock Text="Temperature Converter" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Margin="0,0,0,20" />
5189

52-
<TextBlock Text="Fahrenheit (°F):" Margin="0,15,0,2" FontWeight="SemiBold"/>
53-
<TextBox x:Name="txtFahrenheit" Padding="5" TextChanged="txtFahrenheit_TextChanged" />
90+
<TextBox x:Name="txtCelsius" materialDesign:HintAssist.Hint="Celsius (°C)" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0,0,0,20" TextChanged="txtCelsius_TextChanged" />
91+
<TextBox x:Name="txtFahrenheit" materialDesign:HintAssist.Hint="Fahrenheit (°F)" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0,0,0,20" TextChanged="txtFahrenheit_TextChanged" />
5492
</StackPanel>
5593
</TabItem>
5694

5795
<!-- Terceira Aba: Video para GIF -->
5896
<TabItem Header="Video to GIF">
59-
<StackPanel Margin="20">
60-
<TextBlock Text="Video File:" Margin="0,5,0,2" FontWeight="SemiBold"/>
61-
<Grid>
62-
<Grid.ColumnDefinitions>
63-
<ColumnDefinition Width="*" />
64-
<ColumnDefinition Width="Auto" />
65-
</Grid.ColumnDefinitions>
66-
<TextBox x:Name="txtVideoPath" Padding="5" />
67-
<Button Grid.Column="1" Content="..." Width="35" Margin="5,0,0,0" Click="ProcurarVideo_Click" ToolTip="Browse Video" />
68-
</Grid>
69-
70-
<TextBlock Text="FPS:" Margin="0,15,0,2" FontWeight="SemiBold"/>
71-
<TextBox x:Name="txtFps" Padding="5" Text="15" />
72-
73-
<TextBlock Text="Scale / Max Width (maintains ratio):" Margin="0,15,0,2" FontWeight="SemiBold"/>
74-
<TextBox x:Name="txtScale" Padding="5" Text="480" />
75-
76-
<Button Content="Convert to GIF" Click="ConverterParaGif_Click"
77-
Margin="0,20,0,10" Padding="8" Background="#007ACC"
78-
Foreground="White" BorderThickness="0" Cursor="Hand" />
79-
80-
<TextBlock x:Name="txtGifStatus" TextWrapping="Wrap" FontWeight="SemiBold" />
81-
</StackPanel>
97+
<ScrollViewer VerticalScrollBarVisibility="Auto">
98+
<StackPanel Margin="20">
99+
<TextBlock Text="Video to GIF" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Margin="0,0,0,20" />
100+
101+
<TextBox x:Name="txtVideoPath" materialDesign:HintAssist.Hint="Video File" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0,0,0,15" />
102+
<Button Content="Browse..." Width="100" HorizontalAlignment="Left" Click="ProcurarVideo_Click" Margin="0,0,0,20" Style="{StaticResource MaterialDesignOutlinedButton}" />
103+
104+
<TextBox x:Name="txtFps" materialDesign:HintAssist.Hint="FPS" Text="15" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0,0,0,20" />
105+
<TextBox x:Name="txtScale" materialDesign:HintAssist.Hint="Scale / Max Width" Text="480" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0,0,0,20" />
106+
107+
<Button Content="Convert to GIF" Click="ConverterParaGif_Click" Margin="0,10,0,20" Width="150" HorizontalAlignment="Left" />
108+
109+
<TextBlock x:Name="txtGifStatus" TextWrapping="Wrap" FontWeight="SemiBold" />
110+
</StackPanel>
111+
</ScrollViewer>
82112
</TabItem>
83113

84114
<!-- Quarta Aba: Image Converter -->
85115
<TabItem Header="Image Converter">
86-
<StackPanel Margin="20">
87-
<TextBlock Text="Image Files (multiple allowed):" Margin="0,5,0,2" FontWeight="SemiBold"/>
88-
<Grid>
89-
<Grid.ColumnDefinitions>
90-
<ColumnDefinition Width="*" />
91-
<ColumnDefinition Width="Auto" />
92-
</Grid.ColumnDefinitions>
93-
<TextBox x:Name="txtImagesPath" Padding="5" IsReadOnly="True" />
94-
<Button Grid.Column="1" Content="..." Width="35" Margin="5,0,0,0" Click="ProcurarImagens_Click" ToolTip="Browse Images" />
95-
</Grid>
96-
97-
<TextBlock Text="Output Format:" Margin="0,15,0,2" FontWeight="SemiBold"/>
98-
<ComboBox x:Name="cmbFormatoImagem" Padding="5">
99-
<ComboBoxItem Content="PNG" IsSelected="True"/>
100-
<ComboBoxItem Content="JPEG"/>
101-
<ComboBoxItem Content="WEBP"/>
102-
<ComboBoxItem Content="SVG"/>
103-
</ComboBox>
104-
105-
<Button Content="Convert Images" Click="ConverterImagem_Click"
106-
Margin="0,20,0,10" Padding="8" Background="#007ACC"
107-
Foreground="White" BorderThickness="0" Cursor="Hand" />
108-
109-
<TextBlock x:Name="txtImageStatus" TextWrapping="Wrap" FontWeight="SemiBold" />
110-
</StackPanel>
116+
<ScrollViewer VerticalScrollBarVisibility="Auto">
117+
<StackPanel Margin="20">
118+
<TextBlock Text="Image Converter" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Margin="0,0,0,20" />
119+
120+
<TextBox x:Name="txtImagesPath" materialDesign:HintAssist.Hint="Image Files (multiple allowed)" IsReadOnly="True" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0,0,0,15" />
121+
<Button Content="Browse..." Width="100" HorizontalAlignment="Left" Click="ProcurarImagens_Click" Margin="0,0,0,20" Style="{StaticResource MaterialDesignOutlinedButton}" />
122+
123+
<ComboBox x:Name="cmbFormatoImagem" materialDesign:HintAssist.Hint="Output Format" Style="{StaticResource MaterialDesignFloatingHintComboBox}" Margin="0,0,0,20">
124+
<ComboBoxItem Content="PNG" IsSelected="True"/>
125+
<ComboBoxItem Content="JPEG"/>
126+
<ComboBoxItem Content="WEBP"/>
127+
<ComboBoxItem Content="SVG"/>
128+
</ComboBox>
129+
130+
<Button Content="Convert Images" Click="ConverterImagem_Click" Margin="0,10,0,20" Width="150" HorizontalAlignment="Left" />
131+
132+
<TextBlock x:Name="txtImageStatus" TextWrapping="Wrap" FontWeight="SemiBold" />
133+
</StackPanel>
134+
</ScrollViewer>
111135
</TabItem>
112136
</TabControl>
113137
</Grid>

MainWindow.xaml.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ public MainWindow()
2222
InitializeFFmpegAsync();
2323
}
2424

25+
private void AppMenu_SelectionChanged(object sender, SelectionChangedEventArgs e)
26+
{
27+
if (MainTabControl != null && AppMenu != null)
28+
{
29+
MainTabControl.SelectedIndex = AppMenu.SelectedIndex;
30+
}
31+
}
32+
2533
private async void InitializeFFmpegAsync()
2634
{
2735
// Baixa os binários do FFmpeg caso não existam no diretório

WindowsExtensionKit.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
<UseWPF>true</UseWPF>
9-
<ApplicationIcon>wpf_utils.ico</ApplicationIcon>
9+
<ApplicationIcon>wek_icon.ico</ApplicationIcon>
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<Resource Include="wpf_utils.ico" />
13+
<Resource Include="wek_icon.ico" />
1414
</ItemGroup>
1515

1616
<ItemGroup>
17+
<PackageReference Include="MaterialDesignThemes" Version="5.3.2" />
1718
<PackageReference Include="Xabe.FFmpeg" Version="6.0.2" />
1819
<PackageReference Include="Xabe.FFmpeg.Downloader" Version="6.0.2" />
1920
</ItemGroup>

wek_icon.ico

361 KB
Binary file not shown.

wpf_utils.ico

-4.19 KB
Binary file not shown.

0 commit comments

Comments
 (0)