Skip to content

Commit

Permalink
Add copy button
Browse files Browse the repository at this point in the history
  • Loading branch information
egorozh committed Dec 15, 2020
1 parent e6cfb16 commit b9c4471
Show file tree
Hide file tree
Showing 7 changed files with 311 additions and 223 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,24 @@
<TargetFramework>net5.0</TargetFramework>
<RootNamespace>Egorozh.ColorPicker.Dialog</RootNamespace>
<Nullable>enable</Nullable>
<Version>0.2.0.7-a</Version>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageProjectUrl>https://github.com/egorozh/Egorozh.ColorPicker</PackageProjectUrl>
<RepositoryUrl>https://github.com/egorozh/Egorozh.ColorPicker</RepositoryUrl>
<PackageTags>Color, ColorPicker, Avalonia, AvaloniaUI</PackageTags>
<PackageLicenseFile>LICENSE.md</PackageLicenseFile>
<Description>ColorPicker dialog for Avalonia</Description>
<AssemblyVersion>0.2.0.7</AssemblyVersion>
<FileVersion>0.2.0.7</FileVersion>
</PropertyGroup>

<ItemGroup>
<None Include="..\..\LICENSE.md">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>

<ItemGroup>
<AvaloniaResource Include="Assets\**" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
using System.Linq;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Interactivity;
using Avalonia.Styling;
using TextCopy;

namespace Egorozh.ColorPicker
{
Expand Down Expand Up @@ -45,6 +47,10 @@ protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
Items = HexComboBoxHelpers.GetNamedColors();
SelectionChanged += Hex_SelectionChanged;

var copyButton = e.NameScope.Find<Button>("PART_CopyButton");
copyButton.Click += CopyButtonOnClick;


SetSelectedItemInHex(_manager.CurrentColor);
}

Expand All @@ -61,6 +67,15 @@ private void Hex_SelectionChanged(object sender, SelectionChangedEventArgs e)
}
}

private void CopyButtonOnClick(object? sender, RoutedEventArgs e)
{
var currentColor = _manager.CurrentColor;

var hexColor = $"{currentColor.A:X2}{currentColor.R:X2}{currentColor.G:X2}{currentColor.B:X2}";

ClipboardService.SetText(hexColor);
}

private void SetSelectedItemInHex(Color color)
{
var colors = (List<NamedColor>) Items;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,33 @@
<TargetFramework>net5.0</TargetFramework>
<RootNamespace>Egorozh.ColorPicker</RootNamespace>
<Nullable>enable</Nullable>

<Authors>egorozh</Authors>
<Version>0.2.0.7-a</Version>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageProjectUrl>https://github.com/egorozh/Egorozh.ColorPicker</PackageProjectUrl>
<RepositoryUrl>https://github.com/egorozh/Egorozh.ColorPicker</RepositoryUrl>
<PackageTags>Color, ColorPicker, Avalonia, AvaloniaUI</PackageTags>
<PackageLicenseFile>LICENSE.md</PackageLicenseFile>
<Description>ColorPicker control for Avalonia</Description>
<AssemblyVersion>0.2.0.7</AssemblyVersion>
<FileVersion>0.2.0.7</FileVersion>
</PropertyGroup>

<ItemGroup>
<None Include="..\..\LICENSE.md">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.0-rc1" />
<PackageReference Include="TextCopy" Version="4.2.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\Core\Egorozh.ColorPicker.Core\Egorozh.ColorPicker.Core.csproj" />
</ItemGroup>

</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -3,140 +3,142 @@

xmlns:local="clr-namespace:Egorozh.ColorPicker;assembly=Egorozh.ColorPicker.Avalonia">

<Style Selector="local|ColorEditor">

<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid RowDefinitions="auto * auto">

<Grid ColumnDefinitions="auto *">

<ListBox Name="PART_ModeComboBox">

<ListBox.Styles>
<StyleInclude Source="avares://Egorozh.ColorPicker.Avalonia/Themes/Controls/Default/ModeListBox.axaml" />
</ListBox.Styles>

<ListBoxItem Content="RGB" />
<ListBoxItem Content="HSV" />
</ListBox>

<local:ColorHexComboBox Name="PART_HexComboBox"
Grid.Column="1"
Margin="10 2 2 2">
<local:ColorHexComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Ellipse Fill="{Binding Color, Converter={local:ColorToSolidColorBrushConverter}}"
Margin="0 1 1 1"
Width="{Binding $self.Bounds.Height}" />
<TextBlock Text="{Binding Name}"
Margin="1 0 0 0" />
</StackPanel>
</DataTemplate>
</local:ColorHexComboBox.ItemTemplate>
</local:ColorHexComboBox>

</Grid>

<Grid Grid.Row="1"
RowDefinitions="auto auto auto auto"
ColumnDefinitions="auto *">

<!--#region RGB-->

<local:RgbaColorNumericUpDown Name="PART_RNumUpDown"
Grid.Row="0"
Grid.Column="0"
Label="R"
Channel="Red" />

<local:RgbaColorSlider Name="PART_RSlider"
Grid.Row="0"
Grid.Column="1"
Orientation="Horizontal"
Channel="Red" />


<local:RgbaColorNumericUpDown Name="PART_GNumUpDown"
Grid.Row="1"
Grid.Column="0"
Label="G"
Channel="Green" />

<local:RgbaColorSlider Name="PART_GSlider"
Grid.Row="1"
Grid.Column="1"
Orientation="Horizontal"
Channel="Green" />


<local:RgbaColorNumericUpDown Name="PART_BNumUpDown"
Grid.Row="2"
Grid.Column="0"
Label="B"
Channel="Blue" />

<local:RgbaColorSlider Name="PART_BSlider"
Grid.Row="2"
Grid.Column="1"
Orientation="Horizontal"
Channel="Blue" />

<!--#endregion-->

<!--#region HSV-->

<local:HueColorNumUpDown Name="PART_HNumUpDown"
Grid.Row="0"
Grid.Column="0"
Label="H" />

<local:HueColorSlider Name="PART_HSlider"
Grid.Row="0"
Grid.Column="1"
Orientation="Horizontal" />

<local:SaturationColorNumUpDown Name="PART_SNumUpDown"
Grid.Row="1"
Grid.Column="0"
Label="S"/>

<local:SaturationColorSlider Name="PART_SSlider"
Grid.Row="1"
Grid.Column="1"
Orientation="Horizontal" />

<local:ValueColorNumUpDown Name="PART_VNumUpDown"
Grid.Row="2"
Grid.Column="0"
Label="V" />

<local:ValueColorSlider Name="PART_VSlider"
Grid.Row="2"
Grid.Column="1"
Orientation="Horizontal" />

<!--#endregion-->

<local:RgbaColorNumericUpDown Name="PART_AlphaNumUpDown"
Grid.Row="3"
Grid.Column="0"
Label="A"
Channel="Alpha" />

<local:RgbaColorSlider Name="PART_AlphaSlider"
Grid.Row="3"
Grid.Column="1"
Orientation="Horizontal"
Channel="Alpha" />
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>

</Style>
<Style Selector="local|ColorEditor">

<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid RowDefinitions="auto * auto">

<Grid ColumnDefinitions="auto *">

<ListBox Name="PART_ModeComboBox">

<ListBox.Styles>
<StyleInclude
Source="avares://Egorozh.ColorPicker.Avalonia/Themes/Controls/Default/ModeListBox.axaml" />
</ListBox.Styles>

<ListBoxItem Content="RGB" />
<ListBoxItem Content="HSV" />
</ListBox>

<local:ColorHexComboBox Name="PART_HexComboBox"
Grid.Column="1"
Margin="10 2 2 2">
<local:ColorHexComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Ellipse
Fill="{Binding Color, Converter={local:ColorToSolidColorBrushConverter}}"
Margin="0 1 1 1"
Width="{Binding $self.Bounds.Height}" />
<TextBlock Text="{Binding Name}"
Margin="1 0 0 0" />
</StackPanel>
</DataTemplate>
</local:ColorHexComboBox.ItemTemplate>
</local:ColorHexComboBox>

</Grid>

<Grid Grid.Row="1"
RowDefinitions="auto auto auto auto"
ColumnDefinitions="auto *">

<!--#region RGB-->

<local:RgbaColorNumericUpDown Name="PART_RNumUpDown"
Grid.Row="0"
Grid.Column="0"
Label="R"
Channel="Red" />

<local:RgbaColorSlider Name="PART_RSlider"
Grid.Row="0"
Grid.Column="1"
Orientation="Horizontal"
Channel="Red" />


<local:RgbaColorNumericUpDown Name="PART_GNumUpDown"
Grid.Row="1"
Grid.Column="0"
Label="G"
Channel="Green" />

<local:RgbaColorSlider Name="PART_GSlider"
Grid.Row="1"
Grid.Column="1"
Orientation="Horizontal"
Channel="Green" />


<local:RgbaColorNumericUpDown Name="PART_BNumUpDown"
Grid.Row="2"
Grid.Column="0"
Label="B"
Channel="Blue" />

<local:RgbaColorSlider Name="PART_BSlider"
Grid.Row="2"
Grid.Column="1"
Orientation="Horizontal"
Channel="Blue" />

<!--#endregion-->

<!--#region HSV-->

<local:HueColorNumUpDown Name="PART_HNumUpDown"
Grid.Row="0"
Grid.Column="0"
Label="H" />

<local:HueColorSlider Name="PART_HSlider"
Grid.Row="0"
Grid.Column="1"
Orientation="Horizontal" />

<local:SaturationColorNumUpDown Name="PART_SNumUpDown"
Grid.Row="1"
Grid.Column="0"
Label="S" />

<local:SaturationColorSlider Name="PART_SSlider"
Grid.Row="1"
Grid.Column="1"
Orientation="Horizontal" />

<local:ValueColorNumUpDown Name="PART_VNumUpDown"
Grid.Row="2"
Grid.Column="0"
Label="V" />

<local:ValueColorSlider Name="PART_VSlider"
Grid.Row="2"
Grid.Column="1"
Orientation="Horizontal" />

<!--#endregion-->

<local:RgbaColorNumericUpDown Name="PART_AlphaNumUpDown"
Grid.Row="3"
Grid.Column="0"
Label="A"
Channel="Alpha" />

<local:RgbaColorSlider Name="PART_AlphaSlider"
Grid.Row="3"
Grid.Column="1"
Orientation="Horizontal"
Channel="Alpha" />
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>

</Style>

</Styles>
Loading

0 comments on commit b9c4471

Please sign in to comment.