aboutsummaryrefslogtreecommitdiff
path: root/Erable
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2021-02-08 00:00:49 -0500
committerAndrew Lee <alee14498@protonmail.com>2021-02-08 00:00:49 -0500
commitf5a7e3ef7e25aa2545f541e171f2d5f6fe43ecc7 (patch)
tree6f5dbb64c68ff3bf8a2cd771366ac5ff466d183d /Erable
parentc7428fab1c38d29bcc50ee263678504e34d01318 (diff)
downloaderable-godot-f5a7e3ef7e25aa2545f541e171f2d5f6fe43ecc7.tar.gz
erable-godot-f5a7e3ef7e25aa2545f541e171f2d5f6fe43ecc7.tar.bz2
erable-godot-f5a7e3ef7e25aa2545f541e171f2d5f6fe43ecc7.zip
Erable playing audio in bg thread; Sirop backend initalized; Msgbox added
Diffstat (limited to 'Erable')
-rw-r--r--Erable/Erable.csproj27
-rw-r--r--Erable/ViewModels/MainWindowViewModel.cs48
-rw-r--r--Erable/Views/MainWindow.axaml4
-rw-r--r--Erable/Views/MessageBox.axaml19
-rw-r--r--Erable/Views/MessageBox.axaml.cs74
5 files changed, 162 insertions, 10 deletions
diff --git a/Erable/Erable.csproj b/Erable/Erable.csproj
index b10f530..cee2a9c 100644
--- a/Erable/Erable.csproj
+++ b/Erable/Erable.csproj
@@ -3,7 +3,30 @@
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<Nullable>enable</Nullable>
+ <PublishTrimmed>true</PublishTrimmed>
+ <TrimMode>link</TrimMode>
<RootNamespace>Erable</RootNamespace>
+ <Company>Alee Productions</Company>
+ <AssemblyVersion>0.0.1</AssemblyVersion>
+ <IsPackable>false</IsPackable>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
+ <PlatformTarget>x64</PlatformTarget>
+ </PropertyGroup>
+ <PropertyGroup>
+ <RuntimeIdentifiers>osx-x64</RuntimeIdentifiers>
+ <CFBundleName>Erable</CFBundleName> <!-- Also defines .app file name -->
+ <CFBundleDisplayName>Erable</CFBundleDisplayName>
+ <CFBundleIdentifier>xyz.aleeproductions</CFBundleIdentifier>
+ <CFBundleVersion>0.0.1</CFBundleVersion>
+ <CFBundleShortVersionString>0.0.1</CFBundleShortVersionString>
+ <CFBundlePackageType>AAPL</CFBundlePackageType>
+ <CFBundleSignature>????</CFBundleSignature>
+ <CFBundleExecutable>Erable</CFBundleExecutable>
+ <!-- <CFBundleIconFile>AppName.icns</CFBundleIconFile> Will be copied from output directory -->
+ <NSPrincipalClass>NSApplication</NSPrincipalClass>
+ <NSHighResolutionCapable>true</NSHighResolutionCapable>
+ <UseAppHost>true</UseAppHost>
</PropertyGroup>
<ItemGroup>
<Folder Include="Models\" />
@@ -14,6 +37,10 @@
<PackageReference Include="Avalonia.Desktop" Version="0.10.0" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.0" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.0" />
+ <PackageReference Include="Dotnet.Bundle" Version="0.9.13" />
<PackageReference Include="gstreamer-sharp-netcore" Version="0.0.8" />
</ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Sirop.Backend\Sirop.Backend.csproj" />
+ </ItemGroup>
</Project>
diff --git a/Erable/ViewModels/MainWindowViewModel.cs b/Erable/ViewModels/MainWindowViewModel.cs
index 0c51fbd..ab41886 100644
--- a/Erable/ViewModels/MainWindowViewModel.cs
+++ b/Erable/ViewModels/MainWindowViewModel.cs
@@ -1,7 +1,6 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
+using System.Threading;
using Avalonia.Controls;
+using Erable.Views;
using Gst;
namespace Erable.ViewModels
@@ -10,9 +9,15 @@ namespace Erable.ViewModels
{
public string Greeting => "Welcome to Erable Audio Player!";
- public void PlayFunction(string[] args)
+ public void PlayFunction()
{
- Application.Init(ref args);
+ Thread t = new (AudioPlay);
+ t.Start();
+ }
+
+ static void AudioPlay()
+ {
+ Application.Init();
// Build the pipeline
var pipeline = Parse.Launch("playbin uri=file:///home/andrew/Music/4616-werq-by-kevin-macleod.mp3");
@@ -24,13 +29,38 @@ namespace Erable.ViewModels
var msg = bus.TimedPopFiltered (Constants.CLOCK_TIME_NONE, MessageType.Eos | MessageType.Error);
// Free resources
- //pipeline.SetState (State.Null);
+ pipeline.SetState (State.Null);
+
+ }
+
+
+ public async void BrowseFunction()
+ {
+ var dialog = new OpenFileDialog();
+ // dialog.Title
+ dialog.Filters.Add(new FileDialogFilter() {Name = "Audio Files", Extensions = {"mp3", "wav", "flac"}});
+ dialog.Title = "Select Audio FIle";
+ /*
+ var files = await dialog.ShowAsync(this);
+
+ if(files != null && files.Length > 0)
+ {
+ var file = files[0];
+ if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows))
+ {
+ PlayFunction($"file:/{file.Replace('\\', '/')}");
+ }
+ else
+ {
+ PlayFunction($"file://{file}");
+ }
+ }*/
}
- public void BrowseFunction()
+ public void MsgBoxTest()
{
- //OpenFileDialog dialog = new OpenFileDialog();
- //dialog.Filters.Add(new FileDialogFilter() {Name = "Audio Files", Extensions = {"mp3"}});
+ MessageBox.Show(new MainWindow(), "Hello world", "Test Title", MessageBox.MessageBoxButtons.Ok);
}
+
}
}
diff --git a/Erable/Views/MainWindow.axaml b/Erable/Views/MainWindow.axaml
index 6bb4cd1..02d362a 100644
--- a/Erable/Views/MainWindow.axaml
+++ b/Erable/Views/MainWindow.axaml
@@ -4,7 +4,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
- x:Class="Erable.Views.MainWindow"
+ x:Class="Erable.Views.MainWindow"
Icon="/Assets/avalonia-logo.ico"
Title="Erable">
@@ -16,5 +16,7 @@
<Button Name="PlayButton" Width="80" Command="{Binding PlayFunction}" >Play</Button>
<Button Name="StopButton" Width="80" >Stop</Button>
<Button Name="BrowseButton" Width="80" Command="{Binding BrowseFunction }" >Browse</Button>
+ <Button Name="MessageBoxTest" Width="80" Command="{Binding MsgBoxTest }" >Message Box Test</Button>
+
</StackPanel>
</Window>
diff --git a/Erable/Views/MessageBox.axaml b/Erable/Views/MessageBox.axaml
new file mode 100644
index 0000000..459817a
--- /dev/null
+++ b/Erable/Views/MessageBox.axaml
@@ -0,0 +1,19 @@
+<Window xmlns="https://github.com/avaloniaui"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:vm="using:Erable.ViewModels"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+ x:Class="Erable.Views.MessageBox" SizeToContent="WidthAndHeight" CanResize="False">
+ <StackPanel HorizontalAlignment="Center">
+ <TextBlock HorizontalAlignment="Center" Name="Text"/>
+ <StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Name="Buttons">
+ <StackPanel.Styles>
+ <Style Selector="Button">
+ <Setter Property="Margin" Value="5"/>
+ </Style>
+ </StackPanel.Styles>
+
+ </StackPanel>
+ </StackPanel>
+</Window> \ No newline at end of file
diff --git a/Erable/Views/MessageBox.axaml.cs b/Erable/Views/MessageBox.axaml.cs
new file mode 100644
index 0000000..6d8b6d9
--- /dev/null
+++ b/Erable/Views/MessageBox.axaml.cs
@@ -0,0 +1,74 @@
+using System.Threading.Tasks;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace Erable.Views
+{
+ public class MessageBox : Window
+ {
+ public enum MessageBoxButtons
+ {
+ Ok,
+ OkCancel,
+ YesNo,
+ YesNoCancel
+ }
+
+ public enum MessageBoxResult
+ {
+ Ok,
+ Cancel,
+ Yes,
+ No
+ }
+
+
+ public MessageBox()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public static Task<MessageBoxResult> Show(Window parent, string text, string title, MessageBoxButtons buttons)
+ {
+ var msgbox = new MessageBox()
+ {
+ Title = title
+ };
+ msgbox.FindControl<TextBlock>("Text").Text = text;
+ var buttonPanel = msgbox.FindControl<StackPanel>("Buttons");
+
+ var res = MessageBoxResult.Ok;
+
+ void AddButton(string caption, MessageBoxResult r, bool def = false)
+ {
+ var btn = new Button {Content = caption};
+ btn.Click += (_, __) => {
+ res = r;
+ msgbox.Close();
+ };
+ buttonPanel.Children.Add(btn);
+ if (def)
+ res = r;
+ }
+
+ if (buttons == MessageBoxButtons.Ok || buttons == MessageBoxButtons.OkCancel)
+ AddButton("OK", MessageBoxResult.Ok, true);
+ if (buttons == MessageBoxButtons.YesNo || buttons == MessageBoxButtons.YesNoCancel)
+ {
+ AddButton("Yes", MessageBoxResult.Yes);
+ AddButton("No", MessageBoxResult.No, true);
+ }
+
+ if (buttons == MessageBoxButtons.OkCancel || buttons == MessageBoxButtons.YesNoCancel)
+ AddButton("Cancel", MessageBoxResult.Cancel, true);
+
+
+ var tcs = new TaskCompletionSource<MessageBoxResult>();
+ msgbox.Closed += delegate { tcs.TrySetResult(res); };
+ if (parent != null)
+ msgbox.ShowDialog(parent);
+ else msgbox.Show();
+ return tcs.Task;
+ }
+ }
+} \ No newline at end of file