Compare commits

...
This repository has been archived on 2020-12-20. You can view files and clone it, but cannot push or open issues or pull requests.

96 Commits

Author SHA1 Message Date
watsonb8
5da500f380 Adding readme 2020-12-20 11:35:16 -05:00
watsonb8
aa876e8494 Removing test scripts 2020-12-20 10:39:04 -05:00
watsonb8
a8d4e6ff1d Updating readme 2020-12-19 17:10:40 -05:00
watsonb8
89b928bd00 Stability fixes with streaming 2020-02-05 18:44:48 -05:00
watsonb8
aae221801a Merge branch 'feature/proto.v2' 2020-02-02 17:28:56 -05:00
watsonb8
be5c9a8de0 using new api 2020-02-02 17:28:34 -05:00
watsonb8
51ab2d9c42 Removed old proto definitions (not tested) 2020-02-02 16:49:01 -05:00
watsonb8
2a7e10364e Added basic unit tests for all controllers 2020-02-02 13:05:14 -05:00
watsonb8
8231a18c3e More progress on IoC. Controllers are implemented 2020-02-02 10:26:47 -05:00
watsonb8
48d0ffa77d Adding dependency injection 2020-01-31 20:41:45 -05:00
watsonb8
f8ad2f459e Added more unit tests for members resource 2020-01-20 23:22:58 -05:00
watsonb8
df2a6b4bfc Successful unit test setup and tear down 2020-01-20 22:53:33 -05:00
watsonb8
28afcf12e4 Added unit test project 2020-01-20 18:38:05 -05:00
watsonb8
320967be89 First pass at members resource controller 2020-01-20 16:55:12 -05:00
watsonb8
4ec9db4a45 Proto builds 2020-01-19 17:30:09 -05:00
watsonb8
4f67ad908a First pass at v2 proto definitions 2020-01-19 16:11:13 -05:00
watsonb8
0967be50ea potential proto stubs 2020-01-18 18:08:03 -05:00
watsonb8
dc7879c23d Cosmetic refactoring 2020-01-18 18:07:31 -05:00
watsonb8
e796bf2f35 Event manager improvements. Changed to console.writeline instead of diagnostics 2020-01-13 19:57:02 -05:00
watsonb8
43c6a5a2c6 More styling 2019-12-23 20:07:07 -05:00
watsonb8
109457d6fa Fixed issue navigating away and back to tab view 2019-12-23 19:06:03 -05:00
watsonb8
f691deab6a Fixed members list 2019-12-23 13:29:06 -05:00
watsonb8
5f241615ad More tab view styling 2019-12-23 12:23:51 -05:00
watsonb8
fa82c4fa30 Merge branch 'feature/party_list' 2019-12-22 23:58:49 -05:00
watsonb8
1a55ce0be1 Progress on party page styling 2019-12-22 23:58:29 -05:00
watsonb8
cc0d113204 Working tab view 2019-12-22 19:30:58 -05:00
watsonb8
945b7e8e11 First pass at tab view 2019-12-22 17:10:06 -05:00
watsonb8
7560e122f8 Added tab view (not working) 2019-12-21 22:21:07 -05:00
watsonb8
881d339ffd Formatting party dialog 2019-12-21 20:12:53 -05:00
watsonb8
7f2080119f Merge branch 'feature/data_grid_enhancements' 2019-12-18 23:04:17 -05:00
watsonb8
7d2f3f9553 Styling changes 2019-12-18 23:04:00 -05:00
watsonb8
1e7e71f29d Second pass at modal 2019-12-18 22:32:08 -05:00
watsonb8
8affc8d2af Progress 2019-12-18 21:55:01 -05:00
watsonb8
9e75dd66c0 Revert "Possible problem detected"
This reverts commit 3b8fe7fb97.
2019-12-18 21:04:23 -05:00
watsonb8
3b8fe7fb97 Possible problem detected 2019-12-18 20:54:47 -05:00
watsonb8
93dc9ae8c9 Work in progress 2019-12-18 20:23:59 -05:00
watsonb8
555eb07ec1 Readability changes to datagrid. Functional changes to come 2019-12-10 21:40:17 -05:00
watsonb8
cf05045448 Progress 2019-12-10 15:10:27 -05:00
watsonb8
01736333e9 First pass at modal dialog 2019-12-07 13:47:45 -05:00
watsonb8
3576a906e2 Moved music playing controls from individual viewmodels to main view 2019-12-04 20:42:23 -08:00
watsonb8
187de97503 Using System.Diagnostics.Debug. First pass at player controls styling 2019-12-04 14:53:49 -08:00
watsonb8
22a524cfd1 Icons finally working with pngs (SVGs later maybe) 2019-12-03 15:51:16 -08:00
watsonb8
c24ff95bfc Progress with icons (not working) 2019-12-03 11:31:02 -08:00
watsonb8
6bb4b5fdd5 More styling 2019-12-01 20:20:55 -08:00
watsonb8
89d7d65d8d Styling improvements 2019-12-01 16:14:36 -08:00
watsonb8
b60f2a4f47 Serious styling. Added data grid src for future modifications in performance 2019-12-01 15:26:13 -08:00
watsonb8
061adabff8 First pass at some styling 2019-12-01 06:53:30 -05:00
watsonb8
ee0f8afd86 Updated grpc version on both projects 2019-11-30 19:30:39 -05:00
watsonb8
82b8705a0c Using css after update (Fix your ish Microsoft) 2019-11-30 15:46:09 -05:00
watsonb8
042a0d466a Updated Xamarin forms and replaced main page with grid instead of master 2019-11-30 14:41:36 -05:00
watsonb8
41e853b1c6 Pretty good audio sync if I do say so myself :) 2019-11-29 22:04:55 -05:00
watsonb8
8bea1d03da Refactored error handler for events 2019-11-29 20:54:49 -05:00
watsonb8
e822829cc0 Now able to switch screens away from party without crashing 2019-11-29 20:51:48 -05:00
watsonb8
ad1fca2009 Added a little more stability (not really) 2019-11-29 19:27:31 -05:00
watsonb8
85ab39defd Code refactoring for cleaner view model design 2019-11-29 12:37:57 -05:00
watsonb8
3398d145ac First pass at syncing worked with some bug fixes 2019-11-12 20:09:45 -05:00
watsonb8
1acc383e90 First pass at sync working. Need to ignore for special cases 2019-11-11 15:10:08 -05:00
watsonb8
5f035e9bcb Both clients playing music 2019-11-10 15:33:06 -05:00
watsonb8
bbf8f3ae57 I think i've got simultaneous playback working but it is hard to test 2019-11-09 14:55:09 -05:00
watsonb8
426a368385 Player working for party view 2019-11-08 20:25:36 -05:00
watsonb8
63efcdad69 Working player contained within main page and control delegated to viewmodels 2019-11-08 19:54:51 -05:00
watsonb8
794b4739b1 Player controls now get dynamically assigned to view model base classes.
This gives view models more freedom in how play events from the player are handled
2019-11-06 22:32:43 -05:00
watsonb8
759c05e53b Successfully playing a song in a party with one member 2019-11-04 01:43:26 -05:00
watsonb8
ac17d9a432 Updated debug scripts 2019-11-04 01:27:55 -05:00
watsonb8
f8ad0399b8 Merge branch 'master' of ssh://watsonb8.ddns.net:2122/aurora/aurora-sharp-desktop 2019-11-03 23:17:46 -05:00
watsonb8
a537edd657 Remote playback almost working 2019-11-03 23:17:34 -05:00
Brandon Watson
12cacc8001 Add README.md 2019-11-03 20:06:01 -05:00
watsonb8
a13e491a7e Added GetQueue method that returns the hosts library 2019-11-03 16:04:05 -05:00
watsonb8
9a34e31f9c Code runs 2019-11-02 15:47:41 -04:00
watsonb8
a3937e78da Viewmodels are now maintained throughout the app lifecycle 2019-07-15 15:03:59 -04:00
watsonb8
00b39b1d84 EventManager rewritten to support a push arch instead of an internal poll. Crash finally fixed!!! The dangers of threading. 2019-07-15 12:14:38 -04:00
watsonb8
d78dce44f0 Fixed issue with Horizontal list not refreshing. Added clientId to joinPartyResponse. Crashing on multiple user joins. 2019-07-12 11:34:06 -04:00
watsonb8
11a585ecc0 Merge branch 'feature/single_executor' 2019-07-10 18:23:40 -04:00
watsonb8
6a70b3d90f Removed executors. All traffic goes through RPC 2019-07-10 18:23:19 -04:00
watsonb8
e0d5a66cac Left off last commit 2019-07-10 17:17:31 -04:00
watsonb8
c99f752174 Attempts to get horizontal list to work 2019-07-10 17:17:10 -04:00
watsonb8
823e1341ca First pass at events almost buttoned up.
The goal is to get the members list to update when new users enter and leave the party.
2019-07-07 17:12:13 -04:00
Brandon Watson
74f5d3e9c6 Merge branch 'feature/party_playback_proto' into 'master'
Feature/party playback proto

See merge request aurora/aurora-sharp-desktop!1
2019-07-06 15:53:46 -04:00
watsonb8
2a3290defc Can now somewhat reliably join a party 2019-07-06 15:52:28 -04:00
watsonb8
0d64c0732e Members now appearing on host 2019-07-05 17:37:10 -04:00
watsonb8
b18abf0400 Added script for starting a second instance 2019-07-05 14:17:31 -04:00
watsonb8
ec6a7586c7 Reorganization 2019-07-05 14:17:09 -04:00
watsonb8
a01d399a1f Refactored to only having one executor per platform 2019-07-05 11:37:44 -04:00
watsonb8
0cb0546741 Progress 2019-06-25 21:17:52 -04:00
watsonb8
613365f7ad Merge branch 'master' into feature/party_playback_proto
# Conflicts:
#	Aurora/Aurora.csproj
2019-06-03 11:00:51 -04:00
watsonb8
3d92926922 Merge branch 'feature/party_view' 2019-06-03 10:57:36 -04:00
watsonb8
b0307cf7b3 Beginning stages for party executors 2019-06-03 10:57:05 -04:00
watsonb8
6503d2c410 Protobufs compile 2019-05-31 10:17:14 -04:00
watsonb8
7d94c75f27 Added components to support the party view 2019-05-31 10:12:03 -04:00
watsonb8
d3f51371dd Initial commit for a party view which displays members and the shared queue 2019-05-27 11:23:14 -05:00
watsonb8
9354c0b27b Double click to play a song in the library 2019-05-26 11:33:07 -05:00
watsonb8
64c2285817 MediaChangedEvent now hooked up to player component. 2019-05-24 17:17:14 -04:00
watsonb8
80e9a4543d Added base classes to encapsulate metadata in media 2019-05-24 15:59:26 -04:00
watsonb8
93be6dc100 See commit description for changes
Added PageContainer to dynamically load pages within the main content. Added player component to control music playback(Half functional). Added playback changed event not the player service.
2019-05-24 10:27:19 -04:00
watsonb8
2dbe9cead9 vscode and mono now the supported dev environment 2019-05-22 19:47:27 -04:00
watsonb8
5427d08dd7 Playing works when ran with mono debug 2019-05-22 18:59:15 -04:00
511 changed files with 8672 additions and 5224 deletions

2
.gitignore vendored
View File

@ -347,3 +347,5 @@ healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017 # Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/ MigrationBackup/
start*.sh

27
.vscode/launch.json vendored
View File

@ -5,11 +5,32 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"preLaunchTask": "build-and-start-debug-server",
"name": "Start and Attach",
"type": "mono",
"request": "attach",
"address": "localhost",
"port": 55555,
},
{
"preLaunchTask": "Attach",
"name": "Attach",
"type": "mono",
"request": "attach",
"address": "localhost",
"port": 55555,
},
{
"preLaunchTask": "build",
"name": "Launch", "name": "Launch",
"type": "xamarin", "type": "mono",
"request": "launch", "request": "launch",
"package": "com.your.app.package", "console": "internalConsole",
"intent": "" "program": "${workspaceFolder}/Aurora.gtk/bin/Debug/Aurora.gtk.exe",
"args": [
"--debug",
"--debuggre-agent=transport=dt_socket,server=y,address=127.0.0.1:5555"
]
} }
] ]
} }

45
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,45 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "msbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true",
"/t:build"
],
"group": "build",
"problemMatcher": "$msCompile"
},
{
"label": "build-and-start-debug-server",
"type": "shell",
"isBackground": true,
"command": "./start.sh",
// This task is run before some debug tasks.
// Problem is, it's a watch script, and since it never exits, VSCode
// complains. All this is needed so VSCode just lets it run.
"problemMatcher": [
{
"pattern": [
{
"regexp": ".",
"file": 1,
"location": 2,
"message": 3
}
],
"background": {
"activeOnStart": true,
"beginsPattern": ".",
"endsPattern": ".",
}
}
]
}
]
}

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Xamarin.Forms.3.6.0.344457\build\Xamarin.Forms.props" Condition="Exists('..\packages\Xamarin.Forms.3.6.0.344457\build\Xamarin.Forms.props')" /> <Import Project="..\packages\Xamarin.Forms.4.3.0.991211\build\Xamarin.Forms.props" Condition="Exists('..\packages\Xamarin.Forms.4.3.0.991211\build\Xamarin.Forms.props')" />
<Import Project="..\packages\Grpc.Tools.2.25.0\build\Grpc.Tools.props" Condition="Exists('..\packages\Grpc.Tools.2.25.0\build\Grpc.Tools.props')" />
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform> <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
@ -47,29 +48,29 @@
</Reference> </Reference>
<Reference Include="Mono.Posix" /> <Reference Include="Mono.Posix" />
<Reference Include="Xamarin.Forms.Core"> <Reference Include="Xamarin.Forms.Core">
<HintPath>..\packages\Xamarin.Forms.3.6.0.344457\lib\netstandard2.0\Xamarin.Forms.Core.dll</HintPath> <HintPath>..\packages\Xamarin.Forms.4.3.0.991211\lib\netstandard2.0\Xamarin.Forms.Core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Xamarin.Forms.Platform"> <Reference Include="Xamarin.Forms.Platform">
<HintPath>..\packages\Xamarin.Forms.3.6.0.344457\lib\netstandard2.0\Xamarin.Forms.Platform.dll</HintPath> <HintPath>..\packages\Xamarin.Forms.4.3.0.991211\lib\netstandard2.0\Xamarin.Forms.Platform.dll</HintPath>
</Reference> </Reference>
<Reference Include="Xamarin.Forms.Xaml"> <Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\packages\Xamarin.Forms.3.6.0.344457\lib\netstandard2.0\Xamarin.Forms.Xaml.dll</HintPath> <HintPath>..\packages\Xamarin.Forms.4.3.0.991211\lib\netstandard2.0\Xamarin.Forms.Xaml.dll</HintPath>
</Reference> </Reference>
<Reference Include="OpenTK"> <Reference Include="OpenTK">
<HintPath>..\packages\Xamarin.Forms.Platform.GTK.3.6.0.344457\lib\net45\OpenTK.dll</HintPath> <HintPath>..\packages\OpenTK.3.1.0\lib\net20\OpenTK.dll</HintPath>
</Reference> </Reference>
<Reference Include="webkit-sharp"> <Reference Include="webkit-sharp">
<HintPath>..\packages\Xamarin.Forms.Platform.GTK.3.6.0.344457\lib\net45\webkit-sharp.dll</HintPath> <HintPath>..\packages\Xamarin.Forms.Platform.GTK.4.3.0.991211\lib\net45\webkit-sharp.dll</HintPath>
</Reference> </Reference>
<Reference Include="Xamarin.Forms.Platform.GTK"> <Reference Include="Xamarin.Forms.Platform.GTK">
<HintPath>..\packages\Xamarin.Forms.Platform.GTK.3.6.0.344457\lib\net45\Xamarin.Forms.Platform.GTK.dll</HintPath> <HintPath>..\packages\Xamarin.Forms.Platform.GTK.4.3.0.991211\lib\net45\Xamarin.Forms.Platform.GTK.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Reflection"> <Reference Include="System.Reflection">
<HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath> <HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
</Reference> </Reference>
<Reference Include="mscorlib" /> <Reference Include="mscorlib" />
<Reference Include="System.Reflection.TypeExtensions"> <Reference Include="System.Reflection.TypeExtensions">
<HintPath>..\packages\System.Reflection.TypeExtensions.4.4.0\lib\net461\System.Reflection.TypeExtensions.dll</HintPath> <HintPath>..\packages\System.Reflection.TypeExtensions.4.6.0\lib\net461\System.Reflection.TypeExtensions.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Runtime.Serialization.Primitives"> <Reference Include="System.Runtime.Serialization.Primitives">
<HintPath>..\packages\System.Runtime.Serialization.Primitives.4.3.0\lib\net46\System.Runtime.Serialization.Primitives.dll</HintPath> <HintPath>..\packages\System.Runtime.Serialization.Primitives.4.3.0\lib\net46\System.Runtime.Serialization.Primitives.dll</HintPath>
@ -78,18 +79,106 @@
<Reference Include="taglib-sharp"> <Reference Include="taglib-sharp">
<HintPath>..\packages\taglib-sharp-netstandard2.0.2.1.0\lib\netstandard2.0\taglib-sharp.dll</HintPath> <HintPath>..\packages\taglib-sharp-netstandard2.0.2.1.0\lib\netstandard2.0\taglib-sharp.dll</HintPath>
</Reference> </Reference>
<Reference Include="Xamarin.Forms.DataGrid">
<HintPath>..\packages\Xamarin.Forms.DataGrid.3.1.0\lib\netstandard2.0\Xamarin.Forms.DataGrid.dll</HintPath>
</Reference>
<Reference Include="NAudio">
<HintPath>..\packages\NAudio.1.9.0\lib\net35\NAudio.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="Microsoft.Threading.Tasks">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Net" />
<Reference Include="System.ValueTuple">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="LibVLCSharp">
<HintPath>..\packages\LibVLCSharp.3.3.1\lib\net40\LibVLCSharp.dll</HintPath>
</Reference>
<Reference Include="LibVLCSharp.Forms">
<HintPath>..\packages\LibVLCSharp.Forms.3.3.1\lib\netstandard2.0\LibVLCSharp.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
</Reference>
<Reference Include="LibVLCSharp.GTK">
<HintPath>..\packages\LibVLCSharp.GTK.3.3.1\lib\net47\LibVLCSharp.GTK.dll</HintPath>
</Reference>
<Reference Include="LibVLCSharp.Forms.Platforms.GTK">
<HintPath>..\packages\LibVLCSharp.Forms.GTK.3.3.1\lib\net47\LibVLCSharp.Forms.Platforms.GTK.dll</HintPath>
</Reference>
<Reference Include="Google.Protobuf">
<HintPath>..\packages\Google.Protobuf.3.10.1\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="System.Interactive.Async">
<HintPath>..\packages\System.Interactive.Async.4.0.0\lib\net461\System.Interactive.Async.dll</HintPath>
</Reference>
<Reference Include="Grpc.Core.Api">
<HintPath>..\packages\Grpc.Core.Api.2.25.0\lib\net45\Grpc.Core.Api.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Grpc.Core">
<HintPath>..\packages\Grpc.Core.2.25.0\lib\net45\Grpc.Core.dll</HintPath>
</Reference>
<Reference Include="Plugin.Settings.Abstractions">
<HintPath>..\packages\Xam.Plugins.Settings.3.1.1\lib\net45\Plugin.Settings.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Plugin.Settings">
<HintPath>..\packages\Xam.Plugins.Settings.3.1.1\lib\net45\Plugin.Settings.dll</HintPath>
</Reference>
<Reference Include="Sharpnado.Infrastructure">
<HintPath>..\packages\Sharpnado.Forms.HorizontalListView.1.3.0\lib\netstandard2.0\Sharpnado.Infrastructure.dll</HintPath>
</Reference>
<Reference Include="Sharpnado.Presentation.Forms">
<HintPath>..\packages\Sharpnado.Forms.HorizontalListView.1.3.0\lib\netstandard2.0\Sharpnado.Presentation.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Buffers">
<HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Numerics.Vectors">
<HintPath>..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Runtime.CompilerServices.Unsafe">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Memory">
<HintPath>..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="System.Linq.Async">
<HintPath>..\packages\System.Linq.Async.4.0.0\lib\net461\System.Linq.Async.dll</HintPath>
</Reference>
<Reference Include="OpenTK.GLControl">
<HintPath>..\packages\OpenTK.GLControl.3.0.1\lib\net20\OpenTK.GLControl.dll</HintPath>
</Reference>
<Reference Include="DLToolkit.Forms.Controls.FlowListView">
<HintPath>..\packages\DLToolkit.Forms.Controls.FlowListView.2.0.11\lib\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+netstandard1.0\DLToolkit.Forms.Controls.FlowListView.dll</HintPath>
</Reference>
<Reference Include="CarouselView.FormsPlugin.Abstractions">
<HintPath>..\packages\CarouselView.FormsPlugin.5.2.0\lib\netstandard2.0\CarouselView.FormsPlugin.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Autofac">
<HintPath>..\packages\Autofac.5.0.0\lib\net461\Autofac.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="gtk-gui\gui.stetic"> <EmbeddedResource Include="gtk-gui\gui.stetic">
<LogicalName>gui.stetic</LogicalName> <LogicalName>gui.stetic</LogicalName>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="LibVLCSharp.GTK.dll.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="LibVLCSharp.dll.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="gtk-gui\generated.cs" /> <Compile Include="gtk-gui\generated.cs" />
@ -97,11 +186,10 @@
<Compile Include="gtk-gui\MainWindow.cs" /> <Compile Include="gtk-gui\MainWindow.cs" />
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Helpers\Settings.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />
<None Include="webkit-sharp.dll.config" />
<None Include="OpenTK.dll.config" />
<None Include="Themes\apps.rc" /> <None Include="Themes\apps.rc" />
<None Include="Themes\assets-dark.svg" /> <None Include="Themes\assets-dark.svg" />
<None Include="Themes\assets.svg" /> <None Include="Themes\assets.svg" />
@ -415,6 +503,11 @@
<None Include="Themes\assets-dark\treeview-rtl-button-active.png" /> <None Include="Themes\assets-dark\treeview-rtl-button-active.png" />
<None Include="Themes\assets-dark\treeview-rtl-button-hover.png" /> <None Include="Themes\assets-dark\treeview-rtl-button-hover.png" />
<None Include="Themes\assets-dark\treeview-rtl-button.png" /> <None Include="Themes\assets-dark\treeview-rtl-button.png" />
<None Include="libvlc.dylib">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="OpenTK.dll.config" />
<None Include="webkit-sharp.dll.config" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Aurora\Aurora.csproj"> <ProjectReference Include="..\Aurora\Aurora.csproj">
@ -422,6 +515,35 @@
<Name>Aurora</Name> <Name>Aurora</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Content Include="Resources\play.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Resources\like.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Resources\forwards.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Resources\backward.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Resources\pause.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Resources\menu.png">
</Content>
<Content Include="Resources\shuffle.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Resources\loop.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Xamarin.Forms.3.6.0.344457\build\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.3.6.0.344457\build\Xamarin.Forms.targets')" /> <Import Project="..\packages\Grpc.Tools.2.25.0\build\Grpc.Tools.targets" Condition="Exists('..\packages\Grpc.Tools.2.25.0\build\Grpc.Tools.targets')" />
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
<Import Project="..\packages\Grpc.Core.2.25.0\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.2.25.0\build\net45\Grpc.Core.targets')" />
<Import Project="..\packages\VideoLAN.LibVLC.Mac.3.1.3.1\build\VideoLAN.LibVLC.Mac.targets" Condition="Exists('..\packages\VideoLAN.LibVLC.Mac.3.1.3.1\build\VideoLAN.LibVLC.Mac.targets')" />
<Import Project="..\packages\Xamarin.Forms.4.3.0.991211\build\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.4.3.0.991211\build\Xamarin.Forms.targets')" />
</Project> </Project>

View File

@ -0,0 +1,44 @@
/*
// Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it.
using Plugin.Settings;
using Plugin.Settings.Abstractions;
namespace Aurora.gtk.Helpers
{
/// <summary>
/// This is the Settings static class that can be used in your Core solution or in any
/// of your client applications. All settings are laid out the same exact way with getters
/// and setters.
/// </summary>
public static class Settings
{
private static ISettings AppSettings
{
get
{
return CrossSettings.Current;
}
}
#region Setting Constants
private const string SettingsKey = "settings_key";
private static readonly string SettingsDefault = string.Empty;
#endregion
public static string GeneralSettings
{
get
{
return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault);
}
set
{
AppSettings.AddOrUpdateValue(SettingsKey, value);
}
}
}
}*/

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<dllmap
os="linux"
dll="opengl32.dll"
target="libGL.so.1"/>
<dllmap
os="linux"
dll="glu32.dll"
target="libGLU.so.1"/>
<dllmap
os="linux"
dll="openal32.dll"
target="libopenal.so.1"/>
<dllmap
os="linux"
dll="alut.dll"
target="libalut.so.0"/>
<dllmap
os="linux"
dll="opencl.dll"
target="libOpenCL.so"/>
<dllmap
os="linux"
dll="libX11"
target="libX11.so.6"/>
<dllmap
os="linux"
dll="libXi"
target="libXi.so.6"/>
<dllmap
os="linux"
dll="SDL2.dll"
target="libSDL2-2.0.so.0"/>
<dllmap
os="osx"
dll="opengl32.dll"
target="/System/Library/Frameworks/OpenGL.framework/OpenGL"/>
<dllmap
os="osx"
dll="openal32.dll"
target="/System/Library/Frameworks/OpenAL.framework/OpenAL"/>
<dllmap
os="osx"
dll="alut.dll"
target="/System/Library/Frameworks/OpenAL.framework/OpenAL"/>
<dllmap
os="osx"
dll="libGLES.dll"
target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES"/>
<dllmap
os="osx"
dll="libGLESv1_CM.dll"
target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES"/>
<dllmap
os="osx"
dll="libGLESv2.dll"
target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES"/>
<dllmap
os="osx"
dll="opencl.dll"
target="/System/Library/Frameworks/OpenCL.framework/OpenCL"/>
<dllmap
os="osx"
dll="SDL2.dll"
target="libSDL2.dylib"/><!-- XQuartz compatibility (X11 on Mac) -->
<dllmap
os="osx"
dll="libGL.so.1"
target="/usr/X11/lib/libGL.dylib"/>
<dllmap
os="osx"
dll="libX11"
target="/usr/X11R6/lib/libX11.dylib"/>
<dllmap
os="osx"
dll="libXcursor.so.1"
target="/usr/X11/lib/libXcursor.dylib"/>
<dllmap
os="osx"
dll="libXi"
target="/usr/X11/lib/libXi.dylib"/>
<dllmap
os="osx"
dll="libXinerama"
target="/usr/X11/lib/libXinerama.dylib"/>
<dllmap
os="osx"
dll="libXrandr.so.2"
target="/usr/X11/lib/libXrandr.dylib"/>
</configuration>

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<dllmap
os="linux"
dll="opengl32.dll"
target="libGL.so.1"/>
<dllmap
os="linux"
dll="glu32.dll"
target="libGLU.so.1"/>
<dllmap
os="linux"
dll="openal32.dll"
target="libopenal.so.1"/>
<dllmap
os="linux"
dll="alut.dll"
target="libalut.so.0"/>
<dllmap
os="linux"
dll="opencl.dll"
target="libOpenCL.so"/>
<dllmap
os="linux"
dll="libX11"
target="libX11.so.6"/>
<dllmap
os="linux"
dll="libXi"
target="libXi.so.6"/>
<dllmap
os="linux"
dll="SDL2.dll"
target="libSDL2-2.0.so.0"/>
<dllmap
os="osx"
dll="opengl32.dll"
target="/System/Library/Frameworks/OpenGL.framework/OpenGL"/>
<dllmap
os="osx"
dll="openal32.dll"
target="/System/Library/Frameworks/OpenAL.framework/OpenAL"/>
<dllmap
os="osx"
dll="alut.dll"
target="/System/Library/Frameworks/OpenAL.framework/OpenAL"/>
<dllmap
os="osx"
dll="libGLES.dll"
target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES"/>
<dllmap
os="osx"
dll="libGLESv1_CM.dll"
target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES"/>
<dllmap
os="osx"
dll="libGLESv2.dll"
target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES"/>
<dllmap
os="osx"
dll="opencl.dll"
target="/System/Library/Frameworks/OpenCL.framework/OpenCL"/>
<dllmap
os="osx"
dll="SDL2.dll"
target="libSDL2.dylib"/><!-- XQuartz compatibility (X11 on Mac) -->
<dllmap
os="osx"
dll="libGL.so.1"
target="/usr/X11/lib/libGL.dylib"/>
<dllmap
os="osx"
dll="libX11"
target="/usr/X11R6/lib/libX11.dylib"/>
<dllmap
os="osx"
dll="libXcursor.so.1"
target="/usr/X11/lib/libXcursor.dylib"/>
<dllmap
os="osx"
dll="libXi"
target="/usr/X11/lib/libXi.dylib"/>
<dllmap
os="osx"
dll="libXinerama"
target="/usr/X11/lib/libXinerama.dylib"/>
<dllmap
os="osx"
dll="libXrandr.so.2"
target="/usr/X11/lib/libXrandr.dylib"/>
</configuration>

View File

@ -1,25 +1,25 @@
<configuration> <configuration>
<dllmap os="linux" dll="opengl32.dll" target="libGL.so.1"/> <dllmap os="linux" dll="opengl32.dll" target="libGL.so.1"/>
<dllmap os="linux" dll="glu32.dll" target="libGLU.so.1"/> <dllmap os="linux" dll="glu32.dll" target="libGLU.so.1"/>
<dllmap os="linux" dll="openal32.dll" target="libopenal.so.1"/> <dllmap os="linux" dll="openal32.dll" target="libopenal.so.1"/>
<dllmap os="linux" dll="alut.dll" target="libalut.so.0"/> <dllmap os="linux" dll="alut.dll" target="libalut.so.0"/>
<dllmap os="linux" dll="opencl.dll" target="libOpenCL.so"/> <dllmap os="linux" dll="opencl.dll" target="libOpenCL.so"/>
<dllmap os="linux" dll="libX11" target="libX11.so.6"/> <dllmap os="linux" dll="libX11" target="libX11.so.6"/>
<dllmap os="linux" dll="libXi" target="libXi.so.6"/> <dllmap os="linux" dll="libXi" target="libXi.so.6"/>
<dllmap os="linux" dll="SDL2.dll" target="libSDL2-2.0.so.0"/> <dllmap os="linux" dll="SDL2.dll" target="libSDL2-2.0.so.0"/>
<dllmap os="osx" dll="opengl32.dll" target="/System/Library/Frameworks/OpenGL.framework/OpenGL"/> <dllmap os="osx" dll="opengl32.dll" target="/System/Library/Frameworks/OpenGL.framework/OpenGL"/>
<dllmap os="osx" dll="openal32.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" /> <dllmap os="osx" dll="openal32.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
<dllmap os="osx" dll="alut.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" /> <dllmap os="osx" dll="alut.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
<dllmap os="osx" dll="libGLES.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" /> <dllmap os="osx" dll="libGLES.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="libGLESv1_CM.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" /> <dllmap os="osx" dll="libGLESv1_CM.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="libGLESv2.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" /> <dllmap os="osx" dll="libGLESv2.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="opencl.dll" target="/System/Library/Frameworks/OpenCL.framework/OpenCL"/> <dllmap os="osx" dll="opencl.dll" target="/System/Library/Frameworks/OpenCL.framework/OpenCL"/>
<dllmap os="osx" dll="SDL2.dll" target="libSDL2.dylib"/> <dllmap os="osx" dll="SDL2.dll" target="libSDL2.dylib"/>
<!-- XQuartz compatibility (X11 on Mac) --> <!-- XQuartz compatibility (X11 on Mac) -->
<dllmap os="osx" dll="libGL.so.1" target="/usr/X11/lib/libGL.dylib"/> <dllmap os="osx" dll="libGL.so.1" target="/usr/X11/lib/libGL.dylib"/>
<dllmap os="osx" dll="libX11" target="/usr/X11/lib/libX11.dylib"/> <dllmap os="osx" dll="libX11" target="/usr/X11/lib/libX11.dylib"/>
<dllmap os="osx" dll="libXcursor.so.1" target="/usr/X11/lib/libXcursor.dylib"/> <dllmap os="osx" dll="libXcursor.so.1" target="/usr/X11/lib/libXcursor.dylib"/>
<dllmap os="osx" dll="libXi" target="/usr/X11/lib/libXi.dylib"/> <dllmap os="osx" dll="libXi" target="/usr/X11/lib/libXi.dylib"/>
<dllmap os="osx" dll="libXinerama" target="/usr/X11/lib/libXinerama.dylib"/> <dllmap os="osx" dll="libXinerama" target="/usr/X11/lib/libXinerama.dylib"/>
<dllmap os="osx" dll="libXrandr.so.2" target="/usr/X11/lib/libXrandr.dylib"/> <dllmap os="osx" dll="libXrandr.so.2" target="/usr/X11/lib/libXrandr.dylib"/>
</configuration> </configuration>

View File

@ -1,7 +1,6 @@
using System; using System;
using Xamarin.Forms; using LibVLCSharp.Forms.Shared;
using Xamarin.Forms.Platform.GTK; using Xamarin.Forms.Platform.GTK;
using Xamarin.Forms.Platform.GTK.Helpers;
namespace Aurora.gtk namespace Aurora.gtk
{ {
@ -11,12 +10,14 @@ namespace Aurora.gtk
public static void Main(string[] args) public static void Main(string[] args)
{ {
Gtk.Application.Init(); Gtk.Application.Init();
Forms.Init(); LibVLCSharpFormsRenderer.Init();
DLToolkit.Forms.Controls.FlowListView.Init();
if (PlatformHelper.GetGTKPlatform() == GTKPlatform.Windows) // For some reason, Xamarin does not pick the LibVLCSharp.Form.Platforms.Gtk assembly as a renderer assembly.
{ // Add it manually.
GtkThemes.LoadCustomTheme("Themes/gtkrc-dark");
} //Also css doesn't work without adding the Xaml assembly
global::Xamarin.Forms.Forms.Init(new[] { typeof(LibVLCSharp.Forms.Platforms.GTK.VideoViewRenderer).Assembly, typeof(Xamarin.Forms.Xaml.ArrayExtension).Assembly });
var app = new App(); var app = new App();
var window = new FormsWindow(); var window = new FormsWindow();

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,92 +0,0 @@
# vim:set ft=gtkrc ts=2 sw=2 sts=2 ai et:
#
# This file, unlike hacks.rc, contains legitimate cases we need to handle, e.g.
# custom widgets, programs giving us a chance to alter their UI to fit more with
# the theme or stuff that is supposed to look different, like panels.
# TODO: This could really look nicer
style "gimp_spin_scale" {
# Spin background
bg[NORMAL] = @base_color
engine "pixmap" {
image {
function = BOX
state = NORMAL
detail = "spinbutton_up"
overlay_file = "assets/pan-up-alt.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = PRELIGHT
detail = "spinbutton_up"
overlay_file = "assets/pan-up.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = ACTIVE
detail = "spinbutton_up"
overlay_file = "assets/pan-up.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = INSENSITIVE
detail = "spinbutton_up"
overlay_file = "assets/pan-up-alt-insensitive.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = NORMAL
detail = "spinbutton_down"
overlay_file = "assets/pan-down-alt.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = PRELIGHT
detail = "spinbutton_down"
overlay_file = "assets/pan-down.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = ACTIVE
detail = "spinbutton_down"
overlay_file = "assets/pan-down.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = INSENSITIVE
detail = "spinbutton_down"
overlay_file = "assets/pan-down-alt-insensitive.png"
overlay_stretch = FALSE
}
}
}
style "chrome_gtk_frame" {
ChromeGtkFrame::frame-color = @titlebar_bg_color
ChromeGtkFrame::inactive-frame-color = @titlebar_bg_color
ChromeGtkFrame::incognito-frame-color = @titlebar_bg_color
ChromeGtkFrame::incognito-inactive-frame-color = @titlebar_bg_color
ChromeGtkFrame::frame-gradient-size = 0
}
# Disable spin button assets for GimpSpinScale
class "GimpSpinScale" style "gimp_spin_scale"
# Chromium lets us define some colours and settings for better integration
class "ChromeGtkFrame" style "chrome_gtk_frame"

View File

@ -1,657 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="200" height="480" viewBox="0 0 200 480">
<sodipodi:namedview showgrid="true">
<inkscape:grid empspacing="4"/>
</sodipodi:namedview>
<rect sodipodi:insensitive="true" width="200" height="480" fill="url(#color-bg)"/>
<defs>
<filter id="1" color-interpolation-filters="sRGB" x="0" y="0" width="1" height="1">
<!-- <feDropShadow dx="0" dy="1" stdDeviation="1.5" flood-color="#000000" flood-opacity="0.12"/> -->
<!-- <feDropShadow dx="0" dy="1" stdDeviation="1" flood-color="#000000" flood-opacity="0.24"/> -->
<feFlood flood-color="#000000" flood-opacity="0.12" result="flood"/>
<feComposite operator="in" in="flood" in2="SourceGraphic" result="composite1"/>
<feGaussianBlur stdDeviation="1.5" in="composite1" result="blur"/>
<feOffset dx="0" dy="1" result="offset"/>
<feComposite in="SourceGraphic" in2="offset" result="fbSourceGraphic"/>
<feFlood flood-color="#000000" flood-opacity="0.24" result="flood"/>
<feComposite operator="in" in="flood" in2="fbSourceGraphic" result="composite1"/>
<feGaussianBlur stdDeviation="1" in="composite1" result="blur"/>
<feOffset dx="0" dy="1" result="offset"/>
<feComposite in="fbSourceGraphic" in2="offset" result="composite2"/>
</filter>
<linearGradient id="color-fg">
<stop stop-color="#FFFFFF"/>
</linearGradient>
<linearGradient id="color-fg-insensitive">
<stop stop-color="#FFFFFF" stop-opacity="0.5"/>
</linearGradient>
<linearGradient id="color-fg-secondary">
<stop stop-color="#FFFFFF" stop-opacity="0.7"/>
</linearGradient>
<linearGradient id="color-fg-secondary-insensitive">
<stop stop-color="#FFFFFF" stop-opacity="0.3"/>
</linearGradient>
<linearGradient id="color-trough-insensitive">
<stop stop-color="#FFFFFF" stop-opacity="0.12"/>
</linearGradient>
<linearGradient id="color-primary">
<stop stop-color="#42A5F5"/>
</linearGradient>
<linearGradient id="color-accent">
<stop stop-color="#FF4081"/>
</linearGradient>
<linearGradient id="color-accent-insensitive">
<stop stop-color="#FF4081" stop-opacity="0.5"/>
</linearGradient>
<linearGradient id="color-bg">
<stop stop-color="#44545c"/>
</linearGradient>
<linearGradient id="color-bg-lighter">
<stop stop-color="#596e79"/>
</linearGradient>
<linearGradient id="color-base">
<stop stop-color="#50636c"/>
</linearGradient>
<linearGradient id="color-base-alt">
<stop stop-color="#4a5c64"/>
</linearGradient>
<linearGradient id="color-border">
<stop stop-color="#000000" stop-opacity="0.2"/>
</linearGradient>
<rect id="1x1" width="1" height="1"/>
<rect id="2x2" width="2" height="2"/>
<rect id="4x4" width="4" height="4"/>
<rect id="16x16" width="16" height="16" opacity="0"/>
<rect id="17x17" width="17" height="17" opacity="0"/>
<rect id="24x24" width="24" height="24" opacity="0"/>
<clipPath id="left">
<rect width="10" height="20"/>
</clipPath>
<clipPath id="right">
<rect width="10" height="20" x="10"/>
</clipPath>
<clipPath id="left-top">
<rect width="10" height="10"/>
</clipPath>
<clipPath id="left-bottom">
<rect width="10" height="10" y="10"/>
</clipPath>
<clipPath id="right-top">
<rect width="10" height="10" x="10"/>
</clipPath>
<clipPath id="right-bottom">
<rect width="10" height="10" x="10" y="10"/>
</clipPath>
<g id="base-box">
<rect width="20" height="20" opacity="0"/>
<rect x="2" y="2" width="16" height="16" rx="2" ry="2"/>
</g>
<use xlink:href="#base-box" id="base-flat-button" fill="url(#color-fg)" opacity="0"/>
<use xlink:href="#base-box" id="base-flat-button-hover" fill="url(#color-fg)" opacity="0.15"/>
<use xlink:href="#base-box" id="base-flat-button-active" fill="url(#color-fg)" opacity="0.3"/>
<use xlink:href="#base-box" id="base-flat-button-insensitive" fill="url(#color-fg)" opacity="0"/>
<use xlink:href="#base-box" id="base-button" fill="url(#color-bg-lighter)" filter="url(#1)"/>
<use xlink:href="#base-button" id="base-button-hover" filter="url(#1)"/>
<g id="base-button-active">
<use xlink:href="#base-button-hover"/>
<use xlink:href="#base-flat-button-active"/>
</g>
<use xlink:href="#base-box" id="base-button-insensitive" fill="url(#color-trough-insensitive)"/>
<use xlink:href="#1x1" id="base-entry-background" fill="url(#color-base)"/>
<use xlink:href="#1x1" id="base-entry-background-insensitive" fill="url(#color-base-alt)"/>
<use xlink:href="#base-box" id="base-entry-box" fill="url(#color-base)" filter="url(#1)"/>
<use xlink:href="#base-entry-box" id="base-entry-box-active" filter="url(#1)"/>
<use xlink:href="#base-box" id="base-entry-box-insensitive" fill="url(#color-base-alt)" filter="url(#1)"/>
<rect id="background-fill" width="20" height="20"/>
<g id="base-entry">
<use xlink:href="#background-fill"/>
<use xlink:href="#base-entry-box"/>
</g>
<g id="base-entry-active">
<use xlink:href="#background-fill"/>
<use xlink:href="#base-entry-box-active"/>
</g>
<g id="base-entry-insensitive">
<use xlink:href="#background-fill"/>
<use xlink:href="#base-entry-box-insensitive"/>
</g>
<use clip-path="url(#left)" xlink:href="#base-button" id="base-combo-rtl-button"/>
<use clip-path="url(#left)" xlink:href="#base-button-hover" id="base-combo-rtl-button-hover"/>
<use clip-path="url(#left)" xlink:href="#base-button-active" id="base-combo-rtl-button-active"/>
<use clip-path="url(#left)" xlink:href="#base-button-insensitive" id="base-combo-rtl-button-insensitive"/>
<use clip-path="url(#right)" xlink:href="#base-button" id="base-combo-ltr-button"/>
<use clip-path="url(#right)" xlink:href="#base-button-hover" id="base-combo-ltr-button-hover"/>
<use clip-path="url(#right)" xlink:href="#base-button-active" id="base-combo-ltr-button-active"/>
<use clip-path="url(#right)" xlink:href="#base-button-insensitive" id="base-combo-ltr-button-insensitive"/>
<use clip-path="url(#left-top)" xlink:href="#base-button" id="base-spin-rtl-up"/>
<use clip-path="url(#left-top)" xlink:href="#base-button-hover" id="base-spin-rtl-up-hover"/>
<use clip-path="url(#left-top)" xlink:href="#base-button-active" id="base-spin-rtl-up-active"/>
<use clip-path="url(#left-top)" xlink:href="#base-button-insensitive" id="base-spin-rtl-up-insensitive"/>
<use clip-path="url(#left-bottom)" xlink:href="#base-button" id="base-spin-rtl-down"/>
<use clip-path="url(#left-bottom)" xlink:href="#base-button-hover" id="base-spin-rtl-down-hover"/>
<use clip-path="url(#left-bottom)" xlink:href="#base-button-active" id="base-spin-rtl-down-active"/>
<use clip-path="url(#left-bottom)" xlink:href="#base-button-insensitive" id="base-spin-rtl-down-insensitive"/>
<use clip-path="url(#right-top)" xlink:href="#base-button" id="base-spin-ltr-up"/>
<use clip-path="url(#right-top)" xlink:href="#base-button-hover" id="base-spin-ltr-up-hover"/>
<use clip-path="url(#right-top)" xlink:href="#base-button-active" id="base-spin-ltr-up-active"/>
<use clip-path="url(#right-top)" xlink:href="#base-button-insensitive" id="base-spin-ltr-up-insensitive"/>
<use clip-path="url(#right-bottom)" xlink:href="#base-button" id="base-spin-ltr-down"/>
<use clip-path="url(#right-bottom)" xlink:href="#base-button-hover" id="base-spin-ltr-down-hover"/>
<use clip-path="url(#right-bottom)" xlink:href="#base-button-active" id="base-spin-ltr-down-active"/>
<use clip-path="url(#right-bottom)" xlink:href="#base-button-insensitive" id="base-spin-ltr-down-insensitive"/>
<use clip-path="url(#left)" xlink:href="#base-entry" id="base-combo-ltr-entry"/>
<use clip-path="url(#left)" xlink:href="#base-entry-active" id="base-combo-ltr-entry-active"/>
<use clip-path="url(#left)" xlink:href="#base-entry-insensitive" id="base-combo-ltr-entry-insensitive"/>
<use clip-path="url(#right)" xlink:href="#base-entry" id="base-combo-rtl-entry"/>
<use clip-path="url(#right)" xlink:href="#base-entry-active" id="base-combo-rtl-entry-active"/>
<use clip-path="url(#right)" xlink:href="#base-entry-insensitive" id="base-combo-rtl-entry-insensitive"/>
<path id="checkbox-unchecked-path" d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"/>
<path id="checkbox-checked-path" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
<path id="checkbox-mixed-path" d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"/>
<path id="radio-unchecked-path" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/>
<path id="radio-checked-path" d="M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/>
<path id="radio-mixed-path" d="m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm-5 7v2h10v-2h-10z"/>
<path id="menu-checkbox-unchecked-path" d="m2 0a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-12zm0 2h12v12h-12v-12z"/>
<path id="menu-checkbox-checked-path" d="m2 0a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-12zm10.6 3.59l1.41 1.41-8 8-4-4 1.41-1.41 2.59 2.59 6.59-6.59z"/>
<path id="menu-checkbox-mixed-path" d="m2 0a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-12zm2 7h8v2h-8v-2z"/>
<path id="menu-radio-unchecked-path" d="m8 0a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8zm0 2a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6z"/>
<path id="menu-radio-checked-path" d="m8 0a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8zm0 2a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6zm0 2a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4z"/>
<path id="menu-radio-mixed-path" d="m8 0a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8zm0 2a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6zm-4 5v2h8v-2h-8z"/>
<rect id="button-fill" width="24" height="24" rx="2" ry="2"/>
<g id="base-checkbox-unchecked">
<use xlink:href="#button-fill" opacity="0"/>
<use xlink:href="#checkbox-unchecked-path"/>
</g>
<g id="base-checkbox-unchecked-hover">
<use xlink:href="#button-fill" opacity="0.15"/>
<use xlink:href="#checkbox-unchecked-path"/>
</g>
<g id="base-checkbox-unchecked-active">
<use xlink:href="#button-fill" opacity="0.3"/>
<use xlink:href="#checkbox-unchecked-path"/>
</g>
<g id="base-checkbox-checked">
<use xlink:href="#button-fill" opacity="0"/>
<use xlink:href="#checkbox-checked-path"/>
</g>
<g id="base-checkbox-checked-hover">
<use xlink:href="#button-fill" opacity="0.15"/>
<use xlink:href="#checkbox-checked-path"/>
</g>
<g id="base-checkbox-checked-active">
<use xlink:href="#button-fill" opacity="0.3"/>
<use xlink:href="#checkbox-checked-path"/>
</g>
<g id="base-checkbox-mixed">
<use xlink:href="#button-fill" opacity="0"/>
<use xlink:href="#checkbox-mixed-path"/>
</g>
<g id="base-checkbox-mixed-hover">
<use xlink:href="#button-fill" opacity="0.15"/>
<use xlink:href="#checkbox-mixed-path"/>
</g>
<g id="base-checkbox-mixed-active">
<use xlink:href="#button-fill" opacity="0.3"/>
<use xlink:href="#checkbox-mixed-path"/>
</g>
<g id="base-radio-unchecked">
<use xlink:href="#button-fill" opacity="0"/>
<use xlink:href="#radio-unchecked-path"/>
</g>
<g id="base-radio-unchecked-hover">
<use xlink:href="#button-fill" opacity="0.15"/>
<use xlink:href="#radio-unchecked-path"/>
</g>
<g id="base-radio-unchecked-active">
<use xlink:href="#button-fill" opacity="0.3"/>
<use xlink:href="#radio-unchecked-path"/>
</g>
<g id="base-radio-checked">
<use xlink:href="#button-fill" opacity="0"/>
<use xlink:href="#radio-checked-path"/>
</g>
<g id="base-radio-checked-hover">
<use xlink:href="#button-fill" opacity="0.15"/>
<use xlink:href="#radio-checked-path"/>
</g>
<g id="base-radio-checked-active">
<use xlink:href="#button-fill" opacity="0.3"/>
<use xlink:href="#radio-checked-path"/>
</g>
<g id="base-radio-mixed">
<use xlink:href="#button-fill" opacity="0"/>
<use xlink:href="#radio-mixed-path"/>
</g>
<g id="base-radio-mixed-hover">
<use xlink:href="#button-fill" opacity="0.15"/>
<use xlink:href="#radio-mixed-path"/>
</g>
<g id="base-radio-mixed-active">
<use xlink:href="#button-fill" opacity="0.3"/>
<use xlink:href="#radio-mixed-path"/>
</g>
<g id="base-menu-checkbox-unchecked">
<use xlink:href="#16x16"/>
<use xlink:href="#menu-checkbox-unchecked-path"/>
</g>
<g id="base-menu-checkbox-checked">
<use xlink:href="#16x16"/>
<use xlink:href="#menu-checkbox-checked-path"/>
</g>
<g id="base-menu-checkbox-mixed">
<use xlink:href="#16x16"/>
<use xlink:href="#menu-checkbox-mixed-path"/>
</g>
<g id="base-menu-radio-unchecked">
<use xlink:href="#16x16"/>
<use xlink:href="#menu-radio-unchecked-path"/>
</g>
<g id="base-menu-radio-checked">
<use xlink:href="#16x16"/>
<use xlink:href="#menu-radio-checked-path"/>
</g>
<g id="base-menu-radio-mixed">
<use xlink:href="#16x16"/>
<use xlink:href="#menu-radio-mixed-path"/>
</g>
<g id="base-scale-slider">
<use xlink:href="#24x24"/>
<circle cx="12" cy="12" r="7" fill="url(#color-accent)"/>
</g>
<g id="base-scale-slider-hover">
<use xlink:href="#24x24"/>
<circle cx="12" cy="12" r="8" fill="url(#color-accent)"/>
</g>
<g id="base-scale-slider-active">
<use xlink:href="#24x24"/>
<circle cx="12" cy="12" r="9" fill="url(#color-accent)"/>
</g>
<g id="base-scale-slider-insensitive">
<use xlink:href="#24x24"/>
<circle cx="12" cy="12" r="7" fill="url(#color-bg)"/>
<circle cx="12" cy="12" r="6" fill="none" stroke="url(#color-trough-insensitive)" stroke-width="2"/>
</g>
<g id="base-scale-horz-trough">
<use xlink:href="#24x24"/>
<rect width="12" height="2" x="6" y="11"/>
</g>
<g id="base-scale-vert-trough">
<use xlink:href="#24x24"/>
<rect width="2" height="12" x="11" y="6"/>
</g>
<g id="base-scrollbar-horz-slider">
<use xlink:href="#17x17" y="-1"/>
<rect width="9" height="8" x="4" y="4" ry="4"/>
</g>
<g id="base-scrollbar-horz-trough">
<use xlink:href="#base-border" y="-1"/>
<use xlink:href="#base-entry-background"/>
</g>
<use xlink:href="#base-scrollbar-horz-slider" id="base-scrollbar-vert-ltr-slider" transform="rotate(-90 8.5 8.5)"/>
<use xlink:href="#base-scrollbar-horz-trough" id="base-scrollbar-vert-ltr-trough" transform="rotate(-90 0.5 0.5)"/>
<use xlink:href="#base-scrollbar-horz-slider" id="base-scrollbar-vert-rtl-slider" transform="rotate(90 8 8)"/>
<use xlink:href="#base-scrollbar-horz-trough" id="base-scrollbar-vert-rtl-trough" transform="rotate(90 0.5 0.5)"/>
<g id="base-handle-horz">
<circle cx="2" cy="2" r="2"/>
<circle cx="8" cy="2" r="2"/>
<circle cx="14" cy="2" r="2"/>
</g>
<use xlink:href="#base-handle-horz" id="base-handle-vert" transform="rotate(90 2 2)"/>
<path id="pan-path" d="M 13,6 8,11 3,6 Z"/>
<g id="base-pan-down">
<use xlink:href="#16x16"/>
<use xlink:href="#pan-path"/>
</g>
<g id="base-pan-up">
<use xlink:href="#16x16"/>
<use xlink:href="#pan-path" transform="rotate(180 8 8)"/>
</g>
<g id="base-pan-left">
<use xlink:href="#16x16"/>
<use xlink:href="#pan-path" transform="rotate(90 8 8)"/>
</g>
<g id="base-pan-right">
<use xlink:href="#16x16"/>
<use xlink:href="#pan-path" transform="rotate(-90 8 8)"/>
</g>
<g id="base-pan-left-semi">
<use xlink:href="#16x16"/>
<use xlink:href="#pan-path" transform="rotate(45 8 8)"/>
</g>
<g id="base-pan-right-semi">
<use xlink:href="#16x16"/>
<use xlink:href="#pan-path" transform="rotate(-45 8 8)"/>
</g>
<use xlink:href="#1x1" id="base-border" fill="url(#color-border)"/>
<use xlink:href="#1x1" id="base-tab" fill="url(#color-primary)"/>
<use xlink:href="#4x4" id="base-progressbar-progress" fill="url(#color-primary)"/>
<g id="base-progressbar-trough">
<use xlink:href="#4x4" fill="url(#color-bg)"/>
<use xlink:href="#base-progressbar-progress" opacity="0.3"/>
</g>
<rect id="base-frame" x="0.5" y="0.5" width="2" height="2" fill="none" stroke="url(#color-border)" stroke-width="1"/>
<g id="base-frame-notebook">
<rect width="3" height="3" fill="url(#color-border)"/>
<use xlink:href="#1x1" x="1" y="1" fill="url(#color-base)"/>
</g>
<g id="base-frame-inline">
<rect width="3" height="2" fill="url(#color-border)"/>
<use xlink:href="#1x1" x="1" fill="url(#color-base-alt)"/>
</g>
<rect id="base-focus" x="1" y="1" width="3" height="3" rx="1" ry="1" fill="none" stroke="url(#color-fg)" stroke-width="2" opacity="0.3"/>
<g id="base-treeview-ltr-button">
<use xlink:href="#2x2" fill="url(#color-base)"/>
<use xlink:href="#2x2" fill="url(#color-border)"/>
<use xlink:href="#1x1" fill="url(#color-base)"/>
</g>
<g id="base-treeview-ltr-button-hover">
<use xlink:href="#base-treeview-ltr-button"/>
<use xlink:href="#1x1" fill="url(#color-fg)" opacity="0.05"/>
</g>
<g id="base-treeview-ltr-button-active">
<use xlink:href="#base-treeview-ltr-button"/>
<use xlink:href="#1x1" fill="url(#color-fg)" opacity="0.3"/>
</g>
<use xlink:href="#base-treeview-ltr-button" id="base-treeview-rtl-button" transform="scale(-1 1)"/>
<use xlink:href="#base-treeview-ltr-button-hover" id="base-treeview-rtl-button-hover" transform="scale(-1 1)"/>
<use xlink:href="#base-treeview-ltr-button-active" id="base-treeview-rtl-button-active" transform="scale(-1 1)"/>
</defs>
<use x="8" y="8" xlink:href="#base-flat-button" id="flat-button"/>
<use x="8" y="28" xlink:href="#base-flat-button-hover" id="flat-button-hover"/>
<use x="8" y="48" xlink:href="#base-flat-button-active" id="flat-button-active"/>
<use x="8" y="68" xlink:href="#base-flat-button-insensitive" id="flat-button-insensitive"/>
<use x="32" y="8" xlink:href="#base-button" id="button"/>
<use x="32" y="28" xlink:href="#base-button-hover" id="button-hover"/>
<use x="32" y="48" xlink:href="#base-button-active" id="button-active"/>
<use x="32" y="68" xlink:href="#base-button-insensitive" id="button-insensitive"/>
<use x="52" y="8" xlink:href="#base-combo-rtl-button" id="combo-rtl-button"/>
<use x="52" y="28" xlink:href="#base-combo-rtl-button-hover" id="combo-rtl-button-hover"/>
<use x="52" y="48" xlink:href="#base-combo-rtl-button-active" id="combo-rtl-button-active"/>
<use x="52" y="68" xlink:href="#base-combo-rtl-button-insensitive" id="combo-rtl-button-insensitive"/>
<use x="56" y="8" xlink:href="#base-combo-ltr-button" id="combo-ltr-button"/>
<use x="56" y="28" xlink:href="#base-combo-ltr-button-hover" id="combo-ltr-button-hover"/>
<use x="56" y="48" xlink:href="#base-combo-ltr-button-active" id="combo-ltr-button-active"/>
<use x="56" y="68" xlink:href="#base-combo-ltr-button-insensitive" id="combo-ltr-button-insensitive"/>
<use x="76" y="8" xlink:href="#base-spin-rtl-up" id="spin-rtl-up"/>
<use x="76" y="28" xlink:href="#base-spin-rtl-up-hover" id="spin-rtl-up-hover"/>
<use x="76" y="48" xlink:href="#base-spin-rtl-up-active" id="spin-rtl-up-active"/>
<use x="76" y="68" xlink:href="#base-spin-rtl-up-insensitive" id="spin-rtl-up-insensitive"/>
<use x="76" y="8" xlink:href="#base-spin-rtl-down" id="spin-rtl-down"/>
<use x="76" y="28" xlink:href="#base-spin-rtl-down-hover" id="spin-rtl-down-hover"/>
<use x="76" y="48" xlink:href="#base-spin-rtl-down-active" id="spin-rtl-down-active"/>
<use x="76" y="68" xlink:href="#base-spin-rtl-down-insensitive" id="spin-rtl-down-insensitive"/>
<use x="80" y="8" xlink:href="#base-spin-ltr-up" id="spin-ltr-up"/>
<use x="80" y="28" xlink:href="#base-spin-ltr-up-hover" id="spin-ltr-up-hover"/>
<use x="80" y="48" xlink:href="#base-spin-ltr-up-active" id="spin-ltr-up-active"/>
<use x="80" y="68" xlink:href="#base-spin-ltr-up-insensitive" id="spin-ltr-up-insensitive"/>
<use x="80" y="8" xlink:href="#base-spin-ltr-down" id="spin-ltr-down"/>
<use x="80" y="28" xlink:href="#base-spin-ltr-down-hover" id="spin-ltr-down-hover"/>
<use x="80" y="48" xlink:href="#base-spin-ltr-down-active" id="spin-ltr-down-active"/>
<use x="80" y="68" xlink:href="#base-spin-ltr-down-insensitive" id="spin-ltr-down-insensitive"/>
<use x="104" y="8" xlink:href="#base-entry-background" id="entry-background"/>
<use x="104" y="16" xlink:href="#base-entry-background-insensitive" id="entry-background-insensitive"/>
<use x="104" y="28" xlink:href="#base-entry" fill="url(#color-bg)" id="entry"/>
<use x="104" y="48" xlink:href="#base-entry-active" fill="url(#color-bg)" id="entry-active"/>
<use x="104" y="68" xlink:href="#base-entry-insensitive" fill="url(#color-bg)" id="entry-insensitive"/>
<use x="124" y="28" xlink:href="#base-combo-ltr-entry" fill="url(#color-bg)" id="combo-ltr-entry"/>
<use x="124" y="48" xlink:href="#base-combo-ltr-entry-active" fill="url(#color-bg)" id="combo-ltr-entry-active"/>
<use x="124" y="68" xlink:href="#base-combo-ltr-entry-insensitive" fill="url(#color-bg)" id="combo-ltr-entry-insensitive"/>
<use x="128" y="28" xlink:href="#base-combo-rtl-entry" fill="url(#color-bg)" id="combo-rtl-entry"/>
<use x="128" y="48" xlink:href="#base-combo-rtl-entry-active" fill="url(#color-bg)" id="combo-rtl-entry-active"/>
<use x="128" y="68" xlink:href="#base-combo-rtl-entry-insensitive" fill="url(#color-bg)" id="combo-rtl-entry-insensitive"/>
<use x="152" y="28" xlink:href="#base-entry" fill="url(#color-base)" id="notebook-entry"/>
<use x="152" y="48" xlink:href="#base-entry-active" fill="url(#color-base)" id="notebook-entry-active"/>
<use x="152" y="68" xlink:href="#base-entry-insensitive" fill="url(#color-base)" id="notebook-entry-insensitive"/>
<use x="172" y="28" xlink:href="#base-combo-ltr-entry" fill="url(#color-base)" id="notebook-combo-ltr-entry"/>
<use x="172" y="48" xlink:href="#base-combo-ltr-entry-active" fill="url(#color-base)" id="notebook-combo-ltr-entry-active"/>
<use x="172" y="68" xlink:href="#base-combo-ltr-entry-insensitive" fill="url(#color-base)" id="notebook-combo-ltr-entry-insensitive"/>
<use x="176" y="28" xlink:href="#base-combo-rtl-entry" fill="url(#color-base)" id="notebook-combo-rtl-entry"/>
<use x="176" y="48" xlink:href="#base-combo-rtl-entry-active" fill="url(#color-base)" id="notebook-combo-rtl-entry-active"/>
<use x="176" y="68" xlink:href="#base-combo-rtl-entry-insensitive" fill="url(#color-base)" id="notebook-combo-rtl-entry-insensitive"/>
<use x="8" y="92" xlink:href="#base-checkbox-unchecked" fill="url(#color-fg-secondary)" id="checkbox-unchecked"/>
<use x="8" y="124" xlink:href="#base-checkbox-unchecked-hover" fill="url(#color-fg)" id="checkbox-unchecked-hover"/>
<use x="8" y="156" xlink:href="#base-checkbox-unchecked-active" fill="url(#color-fg)" id="checkbox-unchecked-active"/>
<use x="8" y="188" xlink:href="#base-checkbox-unchecked" fill="url(#color-fg-secondary-insensitive)" id="checkbox-unchecked-insensitive"/>
<use x="40" y="92" xlink:href="#base-checkbox-checked" fill="url(#color-accent)" id="checkbox-checked"/>
<use x="40" y="124" xlink:href="#base-checkbox-checked-hover" fill="url(#color-accent)" id="checkbox-checked-hover"/>
<use x="40" y="156" xlink:href="#base-checkbox-checked-active" fill="url(#color-accent)" id="checkbox-checked-active"/>
<use x="40" y="188" xlink:href="#base-checkbox-checked" fill="url(#color-accent-insensitive)" id="checkbox-checked-insensitive"/>
<use x="72" y="92" xlink:href="#base-checkbox-mixed" fill="url(#color-accent)" id="checkbox-mixed"/>
<use x="72" y="124" xlink:href="#base-checkbox-mixed-hover" fill="url(#color-accent)" id="checkbox-mixed-hover"/>
<use x="72" y="156" xlink:href="#base-checkbox-mixed-active" fill="url(#color-accent)" id="checkbox-mixed-active"/>
<use x="72" y="188" xlink:href="#base-checkbox-mixed" fill="url(#color-accent-insensitive)" id="checkbox-mixed-insensitive"/>
<use x="104" y="92" xlink:href="#base-radio-unchecked" fill="url(#color-fg-secondary)" id="radio-unchecked"/>
<use x="104" y="124" xlink:href="#base-radio-unchecked-hover" fill="url(#color-fg)" id="radio-unchecked-hover"/>
<use x="104" y="156" xlink:href="#base-radio-unchecked-active" fill="url(#color-fg)" id="radio-unchecked-active"/>
<use x="104" y="188" xlink:href="#base-radio-unchecked" fill="url(#color-fg-secondary-insensitive)" id="radio-unchecked-insensitive"/>
<use x="136" y="92" xlink:href="#base-radio-checked" fill="url(#color-accent)" id="radio-checked"/>
<use x="136" y="124" xlink:href="#base-radio-checked-hover" fill="url(#color-accent)" id="radio-checked-hover"/>
<use x="136" y="156" xlink:href="#base-radio-checked-active" fill="url(#color-accent)" id="radio-checked-active"/>
<use x="136" y="188" xlink:href="#base-radio-checked" fill="url(#color-accent-insensitive)" id="radio-checked-insensitive"/>
<use x="168" y="92" xlink:href="#base-radio-mixed" fill="url(#color-accent)" id="radio-mixed"/>
<use x="168" y="124" xlink:href="#base-radio-mixed-hover" fill="url(#color-accent)" id="radio-mixed-hover"/>
<use x="168" y="156" xlink:href="#base-radio-mixed-active" fill="url(#color-accent)" id="radio-mixed-active"/>
<use x="168" y="188" xlink:href="#base-radio-mixed" fill="url(#color-accent-insensitive)" id="radio-mixed-insensitive"/>
<use x="12" y="220" xlink:href="#base-menu-checkbox-unchecked" fill="url(#color-fg-secondary)" id="menu-checkbox-unchecked"/>
<use x="12" y="244" xlink:href="#base-menu-checkbox-unchecked" fill="url(#color-fg-secondary-insensitive)" id="menu-checkbox-unchecked-insensitive"/>
<use x="44" y="220" xlink:href="#base-menu-checkbox-checked" fill="url(#color-accent)" id="menu-checkbox-checked"/>
<use x="44" y="244" xlink:href="#base-menu-checkbox-checked" fill="url(#color-accent-insensitive)" id="menu-checkbox-checked-insensitive"/>
<use x="76" y="220" xlink:href="#base-menu-checkbox-mixed" fill="url(#color-accent)" id="menu-checkbox-mixed"/>
<use x="76" y="244" xlink:href="#base-menu-checkbox-mixed" fill="url(#color-accent-insensitive)" id="menu-checkbox-mixed-insensitive"/>
<use x="108" y="220" xlink:href="#base-menu-radio-unchecked" fill="url(#color-fg-secondary)" id="menu-radio-unchecked"/>
<use x="108" y="244" xlink:href="#base-menu-radio-unchecked" fill="url(#color-fg-secondary-insensitive)" id="menu-radio-unchecked-insensitive"/>
<use x="140" y="220" xlink:href="#base-menu-radio-checked" fill="url(#color-accent)" id="menu-radio-checked"/>
<use x="140" y="244" xlink:href="#base-menu-radio-checked" fill="url(#color-accent-insensitive)" id="menu-radio-checked-insensitive"/>
<use x="172" y="220" xlink:href="#base-menu-radio-mixed" fill="url(#color-accent)" id="menu-radio-mixed"/>
<use x="172" y="244" xlink:href="#base-menu-radio-mixed" fill="url(#color-accent-insensitive)" id="menu-radio-mixed-insensitive"/>
<use x="8" y="268" xlink:href="#base-scale-slider" id="scale-slider"/>
<use x="8" y="300" xlink:href="#base-scale-slider-hover" id="scale-slider-hover"/>
<use x="8" y="332" xlink:href="#base-scale-slider-active" id="scale-slider-active"/>
<use x="8" y="364" xlink:href="#base-scale-slider-insensitive" id="scale-slider-insensitive"/>
<use x="40" y="268" xlink:href="#base-scale-horz-trough" fill="url(#color-fg-secondary-insensitive)" id="scale-horz-trough"/>
<use x="40" y="332" xlink:href="#base-scale-horz-trough" fill="url(#color-accent)" id="scale-horz-trough-active"/>
<use x="40" y="364" xlink:href="#base-scale-horz-trough" fill="url(#color-trough-insensitive)" id="scale-horz-trough-insensitive"/>
<use x="72" y="268" xlink:href="#base-scale-vert-trough" fill="url(#color-fg-secondary-insensitive)" id="scale-vert-trough"/>
<use x="72" y="332" xlink:href="#base-scale-vert-trough" fill="url(#color-accent)" id="scale-vert-trough-active"/>
<use x="72" y="364" xlink:href="#base-scale-vert-trough" fill="url(#color-trough-insensitive)" id="scale-vert-trough-insensitive"/>
<use x="104" y="268" xlink:href="#base-scrollbar-horz-slider" fill="url(#color-fg-insensitive)" id="scrollbar-horz-slider"/>
<use x="104" y="292" xlink:href="#base-scrollbar-horz-slider" fill="url(#color-fg-secondary)" id="scrollbar-horz-slider-hover"/>
<use x="104" y="316" xlink:href="#base-scrollbar-horz-slider" fill="url(#color-fg)" id="scrollbar-horz-slider-active"/>
<use x="104" y="340" xlink:href="#base-scrollbar-horz-slider" fill="url(#color-fg-secondary-insensitive)" id="scrollbar-horz-slider-insensitive"/>
<use x="104" y="364" xlink:href="#base-scrollbar-horz-trough" id="scrollbar-horz-trough"/>
<use x="128" y="268" xlink:href="#base-scrollbar-vert-ltr-slider" fill="url(#color-fg-insensitive)" id="scrollbar-vert-ltr-slider"/>
<use x="128" y="292" xlink:href="#base-scrollbar-vert-ltr-slider" fill="url(#color-fg-secondary)" id="scrollbar-vert-ltr-slider-hover"/>
<use x="128" y="316" xlink:href="#base-scrollbar-vert-ltr-slider" fill="url(#color-fg)" id="scrollbar-vert-ltr-slider-active"/>
<use x="128" y="340" xlink:href="#base-scrollbar-vert-ltr-slider" fill="url(#color-fg-secondary-insensitive)" id="scrollbar-vert-ltr-slider-insensitive"/>
<use x="128" y="364" xlink:href="#base-scrollbar-vert-ltr-trough" id="scrollbar-vert-ltr-trough"/>
<use x="152" y="268" xlink:href="#base-scrollbar-vert-rtl-slider" fill="url(#color-fg-insensitive)" id="scrollbar-vert-rtl-slider"/>
<use x="152" y="292" xlink:href="#base-scrollbar-vert-rtl-slider" fill="url(#color-fg-secondary)" id="scrollbar-vert-rtl-slider-hover"/>
<use x="152" y="316" xlink:href="#base-scrollbar-vert-rtl-slider" fill="url(#color-fg)" id="scrollbar-vert-rtl-slider-active"/>
<use x="152" y="340" xlink:href="#base-scrollbar-vert-rtl-slider" fill="url(#color-fg-secondary-insensitive)" id="scrollbar-vert-rtl-slider-insensitive"/>
<use x="152" y="364" xlink:href="#base-scrollbar-vert-rtl-trough" id="scrollbar-vert-rtl-trough"/>
<use x="176" y="292" xlink:href="#base-handle-horz" fill="url(#color-fg-insensitive)" id="handle-horz"/>
<use x="176" y="328" xlink:href="#base-handle-horz" fill="url(#color-fg-secondary)" id="handle-horz-hover"/>
<use x="176" y="364" xlink:href="#base-handle-horz" fill="url(#color-fg)" id="handle-horz-active"/>
<use x="176" y="268" xlink:href="#base-handle-vert" fill="url(#color-fg-insensitive)" id="handle-vert"/>
<use x="176" y="304" xlink:href="#base-handle-vert" fill="url(#color-fg-secondary)" id="handle-vert-hover"/>
<use x="176" y="340" xlink:href="#base-handle-vert" fill="url(#color-fg)" id="handle-vert-active"/>
<use x="8" y="396" xlink:href="#base-pan-up" fill="url(#color-fg)" id="pan-up"/>
<use x="8" y="416" xlink:href="#base-pan-up" fill="url(#color-fg-insensitive)" id="pan-up-insensitive"/>
<use x="8" y="436" xlink:href="#base-pan-up" fill="url(#color-fg-secondary)" id="pan-up-alt"/>
<use x="8" y="456" xlink:href="#base-pan-up" fill="url(#color-fg-secondary-insensitive)" id="pan-up-alt-insensitive"/>
<use x="28" y="396" xlink:href="#base-pan-down" fill="url(#color-fg)" id="pan-down"/>
<use x="28" y="416" xlink:href="#base-pan-down" fill="url(#color-fg-insensitive)" id="pan-down-insensitive"/>
<use x="28" y="436" xlink:href="#base-pan-down" fill="url(#color-fg-secondary)" id="pan-down-alt"/>
<use x="28" y="456" xlink:href="#base-pan-down" fill="url(#color-fg-secondary-insensitive)" id="pan-down-alt-insensitive"/>
<use x="48" y="396" xlink:href="#base-pan-left" fill="url(#color-fg)" id="pan-left"/>
<use x="48" y="416" xlink:href="#base-pan-left" fill="url(#color-fg-insensitive)" id="pan-left-insensitive"/>
<use x="48" y="436" xlink:href="#base-pan-left" fill="url(#color-fg-secondary)" id="pan-left-alt"/>
<use x="48" y="456" xlink:href="#base-pan-left" fill="url(#color-fg-secondary-insensitive)" id="pan-left-alt-insensitive"/>
<use x="68" y="396" xlink:href="#base-pan-right" fill="url(#color-fg)" id="pan-right"/>
<use x="68" y="416" xlink:href="#base-pan-right" fill="url(#color-fg-insensitive)" id="pan-right-insensitive"/>
<use x="68" y="436" xlink:href="#base-pan-right" fill="url(#color-fg-secondary)" id="pan-right-alt"/>
<use x="68" y="456" xlink:href="#base-pan-right" fill="url(#color-fg-secondary-insensitive)" id="pan-right-alt-insensitive"/>
<use x="88" y="396" xlink:href="#base-pan-left-semi" fill="url(#color-fg)" id="pan-left-semi"/>
<use x="108" y="396" xlink:href="#base-pan-right-semi" fill="url(#color-fg)" id="pan-right-semi"/>
<use x="132" y="396" xlink:href="#base-border" id="border"/>
<use x="144" y="396" xlink:href="#base-tab" id="tab"/>
<use x="156" y="396" xlink:href="#base-progressbar-progress" id="progressbar-progress"/>
<use x="168" y="396" xlink:href="#base-progressbar-trough" id="progressbar-trough"/>
<use x="132" y="408" xlink:href="#base-frame" id="frame"/>
<use x="144" y="408" xlink:href="#base-frame-notebook" id="frame-notebook"/>
<use x="156" y="408" xlink:href="#base-frame-inline" id="frame-inline"/>
<use x="168" y="408" xlink:href="#base-focus" id="focus"/>
<use x="180" y="396" xlink:href="#base-treeview-ltr-button" id="treeview-ltr-button"/>
<use x="180" y="404" xlink:href="#base-treeview-ltr-button-hover" id="treeview-ltr-button-hover"/>
<use x="180" y="412" xlink:href="#base-treeview-ltr-button-active" id="treeview-ltr-button-active"/>
<use x="190" y="396" xlink:href="#base-treeview-rtl-button" id="treeview-rtl-button"/>
<use x="190" y="404" xlink:href="#base-treeview-rtl-button-hover" id="treeview-rtl-button-hover"/>
<use x="190" y="412" xlink:href="#base-treeview-rtl-button-active" id="treeview-rtl-button-active"/>
</svg>

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 317 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 B

Some files were not shown because too many files have changed in this diff Show More