From 2f2bc4faf362580c82e66c21c33dc06428ab1f7c Mon Sep 17 00:00:00 2001 From: Curtis Wensley Date: Sat, 30 Jan 2021 11:32:49 -0800 Subject: [PATCH 1/8] Update projects to use .NET 5 - Compile Mac version from PabloDraw.csproj - Remove lidgren and Mono.Nat submodules in favour of nuget packages - Add vscode tasks and launch files - Update license version --- .editorconfig | 26 ++ .vscode/launch.json | 27 +++ .vscode/settings.json | 8 + .vscode/tasks.json | 42 ++++ LICENSE | 2 +- Libraries/Mono.Nat | 1 - Libraries/extractprojects.sh | 82 ------- Libraries/lidgren | 1 - Source/Directory.Build.props | 9 +- Source/Directory.Build.targets | 2 +- Source/Pablo Desktop.sln | 28 --- Source/Pablo.Interface/Dialogs/About.cs | 2 +- Source/Pablo.Interface/Pablo.Interface.csproj | 3 +- Source/Pablo/Network/Server.cs | 8 +- Source/Pablo/Pablo.csproj | 10 +- .../PabloDraw.Console.csproj | 10 +- Source/PabloDraw.Mac/AssemblyInfo.cs | 10 - .../Assets.xcassets/Contents.json | 6 - Source/PabloDraw.Mac/PabloDraw.Mac.csproj | 229 ------------------ .../PabloDraw.WindowsInstaller.wixproj | 12 +- Source/PabloDraw.WindowsInstaller/Product.wxs | 110 ++++++++- .../AppDelegate.cs | 6 +- .../Entitlements.plist | 0 Source/PabloDraw/Icon.icns | Bin 245129 -> 0 bytes .../{PabloDraw.Mac => PabloDraw}/Info.plist | 0 .../Startup.cs => PabloDraw/MacStyles.cs} | 19 +- .../PabloDraw-Document.icns | Bin Source/PabloDraw/PabloDraw-Document.ico | Bin 0 -> 85182 bytes .../PabloDraw-nonglossy.icns | Bin Source/PabloDraw/PabloDraw.csproj | 85 +++++-- .../PabloDraw.icns | Bin Source/PabloDraw/PabloDraw.sln | 20 -- Source/PabloDraw/Program.cs | 211 ++++++++++------ Source/PabloDraw/Startup.cs | 2 +- Source/PabloDraw/app.config | 11 - 35 files changed, 455 insertions(+), 527 deletions(-) create mode 100644 .editorconfig create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json delete mode 160000 Libraries/Mono.Nat delete mode 100755 Libraries/extractprojects.sh delete mode 160000 Libraries/lidgren delete mode 100644 Source/PabloDraw.Mac/AssemblyInfo.cs delete mode 100644 Source/PabloDraw.Mac/Assets.xcassets/Contents.json delete mode 100644 Source/PabloDraw.Mac/PabloDraw.Mac.csproj rename Source/{PabloDraw.Mac => PabloDraw}/AppDelegate.cs (97%) rename Source/{PabloDraw.Mac => PabloDraw}/Entitlements.plist (100%) delete mode 100644 Source/PabloDraw/Icon.icns rename Source/{PabloDraw.Mac => PabloDraw}/Info.plist (100%) rename Source/{PabloDraw.Mac/Startup.cs => PabloDraw/MacStyles.cs} (93%) rename Source/{PabloDraw.Mac => PabloDraw}/PabloDraw-Document.icns (100%) create mode 100644 Source/PabloDraw/PabloDraw-Document.ico rename Source/{PabloDraw.Mac => PabloDraw}/PabloDraw-nonglossy.icns (100%) rename Source/{PabloDraw.Mac => PabloDraw}/PabloDraw.icns (100%) delete mode 100644 Source/PabloDraw/PabloDraw.sln delete mode 100644 Source/PabloDraw/app.config diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..aeef9da --- /dev/null +++ b/.editorconfig @@ -0,0 +1,26 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# use tabs by default for everything +[*.cs] +indent_style = tab +indent_size = 4 +tab_size = 4 +charset=utf-8 +csharp_new_line_before_open_brace = all + +# packages.config uses spaces +[**\packages.config] +indent_style = space +indent_size = 2 + +[*.{csproj,vbproj,proj,targets,props}] +indent_style = space +indent_size = 2 +tab_size = 2 + +[*.yml] +intent_style = space +indent_size = 2 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..7e15fcb --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,27 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "PabloDraw", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build-pablodraw", + "osx": { + "program": "${workspaceFolder}/artifacts/bin/${config:var.BuildConfiguration}/net5.0/osx-x64/PabloDraw.app/Contents/MacOS/PabloDraw", + }, + "windows": { + "program": "${workspaceFolder}/artifacts/bin/${config:var.BuildConfiguration}/net5.0-windows/win-x64/PabloDraw.exe", + }, + "linux": { + "program": "${workspaceFolder}/artifacts/bin/${config:var.BuildConfiguration}/net5.0/linux-x64/PabloDraw", + }, + "args": [], + "cwd": "${workspaceFolder}", + "stopAtEntry": false, + "console": "internalConsole" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7477247 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "vssolution.altSolutionFolders": [ + "Source" + ], + "var": { + "BuildConfiguration": "Debug" + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..a7e7858 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "shell", + "args": [ + "build", + "${workspaceFolder}/Source/Pablo Desktop.sln", + "/p:Configuration=Debug", + "/p:Platform=Mac", + "/p:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "group": "build", + "presentation": { + "clear": true + }, + "problemMatcher": "$msCompile" + }, + { + "label": "build-pablodraw", + "command": "dotnet", + "type": "shell", + "args": [ + "build", + "${workspaceFolder}/Source/PabloDraw/PabloDraw.csproj", + "/p:Configuration=${config:var.BuildConfiguration}", + "/p:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "group": "build", + "presentation": { + "clear": true + }, + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/LICENSE b/LICENSE index 0853656..2784717 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 Curtis Wensley +Copyright (c) 2021 Curtis Wensley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Libraries/Mono.Nat b/Libraries/Mono.Nat deleted file mode 160000 index b20141c..0000000 --- a/Libraries/Mono.Nat +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b20141c5e28dfb59a7d01828955311229bda97ad diff --git a/Libraries/extractprojects.sh b/Libraries/extractprojects.sh deleted file mode 100755 index a27d9df..0000000 --- a/Libraries/extractprojects.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -function extract_csproj () { - csprojdir=$1 - csproj=$4 - newdir=$2 - libdir=$3 - subdir="`echo $libdir/$csprojdir | sed 's/\\//\\\\\\\\/g'`" - subdir="$subdir\\\\" - if [[ -z "$5" ]]; then - oldcsproj=$csproj - else - oldcsproj=$csproj - csproj=$5 - fi - csproj="$newdir/$csproj" - - mkdir -p "$newdir" - - rm -f "$csproj" - - cp "$DIR/$csprojdir/$oldcsproj" "$csproj" - - rep="s/<(Compile|EmbeddedResource|None) Include=\"(.+)\">(?=\s*)/<\1 Include=\"$subdir\2\">/g" - #rep="s/<(Compile|EmbeddedResource|None) Include=\"(.+)\">(?!\s*)/<\1 Include=\"$subdir\2\">/g" - perl -0pi -e "$rep" "$csproj" - - rep="s/<(Compile|EmbeddedResource|None) Include=\"(.+)\">(?!\s*)/<\1 Include=\"$subdir\2\">\n \2<\/Link>/g" - #rep="s/<(Compile|EmbeddedResource|None) Include=\"(.+)\">\s*.+<\/Link>/<\1 Include=\"$subdir\2\">/g" - perl -0pi -e "$rep" "$csproj" - - rep="s/<(Compile|EmbeddedResource|None) Include=\"(.+)\" \/>/<\1 Include=\"$subdir\2\">\n \2<\/Link>\n <\/\1>/" - #rep="s/<(Compile|EmbeddedResource|None) Include=\"(.+)\" \/>/<\1 Include=\"$subdir\2\" \/>/" - perl -pi -e "$rep" "$csproj" - - rep="s/<(OutputPath|DocumentationFile)>(.+)<\//<\1>$subdir\2<\//" - perl -pi -e "$rep" "$csproj" - - rep="s/(?<=)/$subdir\2/g" - perl -0pi -e "$rep" "$csproj" - - rep="s/((\s|.)*?)((\s|.)+?<\/HintPath>(\s|.)+?<\/Reference>)/\1$subdir\3/g" - perl -0pi -e "$rep" "$csproj" -} - -function replace_reference () { - csproj=$1 - find_reference=$2 - replace_with=$3 - - uuid=$(sed -n 's/.*\(.*\)<\/ProjectGuid>.*/\1/p' "$replace_with.csproj") - - rep="s/(\s|.)*?<\/Reference>/\n $uuid<\/Project>\n $replace_with<\/Name>\n <\/ProjectReference>/g" - perl -0pi -e "$rep" "$csproj" -} - -function replace_hint () { - csprojdir=$1 - find_reference=$2 - newdir=$3 - - rep="s/((\s|.)*?)([^<]+?)($find_reference[.]dll<\/HintPath>(\s|.)+?<\/Reference>)/\1$newdir\4/g" - perl -0pi -e "$rep" "$csproj" -} - -function remove_line () { - file_name=$1 - remove_line=$2 - - perl -0pi -e "$remove_line" "$file_name" -} - -function convert_to_ios () { - remove_line "$1" "s/.*v4\.0<\/TargetFrameworkVersion>.*\n//g" - remove_line "$1" "s/(.*)(.*<\/ProjectGuid>)(.*\n)/\1\2\3\1{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}<\/ProjectTypeGuids>\3/g" -} - -extract_csproj "lidgren/Lidgren.Network" "../Source/Lidgren.Network" "../../Libraries" "Lidgren.Network.csproj" "Lidgren.Network - iOS.csproj" -convert_to_ios "../Source/Lidgren.Network/Lidgren.Network - iOS.csproj" -extract_csproj "Mono.Nat/src/Mono.Nat" "../Source/Mono.Nat" "../../Libraries" "Mono.Nat.csproj" "Mono.Nat - iOS.csproj" -convert_to_ios "../Source/Mono.Nat/Mono.Nat - iOS.csproj" diff --git a/Libraries/lidgren b/Libraries/lidgren deleted file mode 160000 index da7b4b8..0000000 --- a/Libraries/lidgren +++ /dev/null @@ -1 +0,0 @@ -Subproject commit da7b4b8042c72034075c04be140b5f749d0c109d diff --git a/Source/Directory.Build.props b/Source/Directory.Build.props index e135c03..d33c8ae 100644 --- a/Source/Directory.Build.props +++ b/Source/Directory.Build.props @@ -1,11 +1,13 @@  Picoe Software Solutions - (c) 2006-2019 by Curtis Wensley aka Eto + (c) 2006-2021 by Curtis Wensley aka Eto 3.3.0-dev $(MSBuildThisFileDirectory)..\ - $(BasePath)Artifacts\ + $(BasePath)artifacts\ + + embedded $(ArtifactsDir)obj\$(OS)\$(MSBuildProjectName)\ bin @@ -13,5 +15,8 @@ $(ArtifactsDir)nuget\$(Configuration)\ PackageReference + + + \ No newline at end of file diff --git a/Source/Directory.Build.targets b/Source/Directory.Build.targets index 72939ce..296ecfa 100644 --- a/Source/Directory.Build.targets +++ b/Source/Directory.Build.targets @@ -2,7 +2,7 @@ - + diff --git a/Source/Pablo Desktop.sln b/Source/Pablo Desktop.sln index 91d0e25..12e8f9c 100644 --- a/Source/Pablo Desktop.sln +++ b/Source/Pablo Desktop.sln @@ -9,8 +9,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pablo", "Pablo\Pablo.csproj EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pablo.Interface", "Pablo.Interface\Pablo.Interface.csproj", "{3FAACC7E-D156-4599-B0D1-6177AD78E8B1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Nat", "..\Libraries\Mono.Nat\src\Mono.Nat\Mono.Nat.csproj", "{F5D74163-145F-47BF-83DC-D0E07249C6CA}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PabloDraw.Console", "PabloDraw.Console\PabloDraw.Console.csproj", "{0457895A-719B-47E9-84F3-356B2A1F8D3C}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{88CCB819-8E11-429C-94D7-D5A27A671129}" @@ -20,10 +18,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EmbedReferences.targets = EmbedReferences.targets EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lidgren.Network", "..\Libraries\lidgren\Lidgren.Network\Lidgren.Network.csproj", "{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PabloDraw.Mac", "PabloDraw.Mac\PabloDraw.Mac.csproj", "{5590729F-3176-4A91-94E3-54F75DA2EB9D}" -EndProject Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PabloDraw.WindowsInstaller", "PabloDraw.WindowsInstaller\PabloDraw.WindowsInstaller.wixproj", "{38A42F6D-A417-45B0-8EC8-A700F31CBE26}" EndProject Global @@ -58,14 +52,6 @@ Global {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Release|Any CPU.Build.0 = Release|Any CPU {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Release|Mac.ActiveCfg = Release|Any CPU {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Release|Mac.Build.0 = Release|Any CPU - {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Mac.ActiveCfg = Debug|Any CPU - {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Mac.Build.0 = Debug|Any CPU - {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Any CPU.Build.0 = Release|Any CPU - {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Mac.ActiveCfg = Release|Any CPU - {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Mac.Build.0 = Release|Any CPU {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Debug|Any CPU.Build.0 = Debug|Any CPU {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Debug|Mac.ActiveCfg = Debug|Any CPU @@ -74,20 +60,6 @@ Global {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Release|Any CPU.Build.0 = Release|Any CPU {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Release|Mac.ActiveCfg = Release|Any CPU {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Release|Mac.Build.0 = Release|Any CPU - {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Mac.ActiveCfg = Debug|Any CPU - {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Mac.Build.0 = Debug|Any CPU - {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Any CPU.Build.0 = Release|Any CPU - {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Mac.ActiveCfg = Release|Any CPU - {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Mac.Build.0 = Release|Any CPU - {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Debug|Mac.ActiveCfg = Debug|Any CPU - {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Debug|Mac.Build.0 = Debug|Any CPU - {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Release|Mac.ActiveCfg = Release|Any CPU - {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Release|Mac.Build.0 = Release|Any CPU {38A42F6D-A417-45B0-8EC8-A700F31CBE26}.Debug|Any CPU.ActiveCfg = Debug|x86 {38A42F6D-A417-45B0-8EC8-A700F31CBE26}.Debug|Mac.ActiveCfg = Debug|x86 {38A42F6D-A417-45B0-8EC8-A700F31CBE26}.Release|Any CPU.ActiveCfg = Release|x86 diff --git a/Source/Pablo.Interface/Dialogs/About.cs b/Source/Pablo.Interface/Dialogs/About.cs index 3a1973c..0e53879 100644 --- a/Source/Pablo.Interface/Dialogs/About.cs +++ b/Source/Pablo.Interface/Dialogs/About.cs @@ -8,7 +8,7 @@ namespace Pablo.Interface.Dialogs { public class About : Dialog { - const string CopyRightText = @"PabloDraw is © 2013 by Curtis Wensley aka Eto + const string CopyRightText = @"PabloDraw is © 2006-2021 by Curtis Wensley aka Eto Amiga raw font versions are © dMG/t!s^dS! diff --git a/Source/Pablo.Interface/Pablo.Interface.csproj b/Source/Pablo.Interface/Pablo.Interface.csproj index d548def..df74c05 100644 --- a/Source/Pablo.Interface/Pablo.Interface.csproj +++ b/Source/Pablo.Interface/Pablo.Interface.csproj @@ -14,10 +14,9 @@ - + - \ No newline at end of file diff --git a/Source/Pablo/Network/Server.cs b/Source/Pablo/Network/Server.cs index aaf17fb..4483b7a 100644 --- a/Source/Pablo/Network/Server.cs +++ b/Source/Pablo/Network/Server.cs @@ -110,8 +110,8 @@ public void Start() natdevice = null; } NatUtility.DeviceFound += HandleNatUtilityDeviceFound; - NatUtility.DeviceLost += HandleDeviceLost; - NatUtility.UnhandledException += HandleNatUtilityUnhandledException; + // NatUtility.DeviceLost += HandleDeviceLost; + // NatUtility.UnhandledException += HandleNatUtilityUnhandledException; NatUtility.StartDiscovery(); } /**/ @@ -184,8 +184,8 @@ public void Stop() { NatUtility.StopDiscovery(); NatUtility.DeviceFound -= HandleNatUtilityDeviceFound; - NatUtility.UnhandledException -= HandleNatUtilityUnhandledException; - NatUtility.DeviceLost -= HandleDeviceLost; + // NatUtility.UnhandledException -= HandleNatUtilityUnhandledException; + // NatUtility.DeviceLost -= HandleDeviceLost; } server.Shutdown("Server shutdown by host"); diff --git a/Source/Pablo/Pablo.csproj b/Source/Pablo/Pablo.csproj index 031466a..5c191f0 100644 --- a/Source/Pablo/Pablo.csproj +++ b/Source/Pablo/Pablo.csproj @@ -21,12 +21,10 @@ - + - - - - - + + + \ No newline at end of file diff --git a/Source/PabloDraw.Console/PabloDraw.Console.csproj b/Source/PabloDraw.Console/PabloDraw.Console.csproj index a09651f..1b41177 100644 --- a/Source/PabloDraw.Console/PabloDraw.Console.csproj +++ b/Source/PabloDraw.Console/PabloDraw.Console.csproj @@ -11,13 +11,13 @@ True - - - - - + + + + + \ No newline at end of file diff --git a/Source/PabloDraw.Mac/AssemblyInfo.cs b/Source/PabloDraw.Mac/AssemblyInfo.cs deleted file mode 100644 index 5b33656..0000000 --- a/Source/PabloDraw.Mac/AssemblyInfo.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[assembly: AssemblyTitle("PabloDraw")] -[assembly: AssemblyDescription("PabloDraw for Mac")] diff --git a/Source/PabloDraw.Mac/Assets.xcassets/Contents.json b/Source/PabloDraw.Mac/Assets.xcassets/Contents.json deleted file mode 100644 index 4caf392..0000000 --- a/Source/PabloDraw.Mac/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Source/PabloDraw.Mac/PabloDraw.Mac.csproj b/Source/PabloDraw.Mac/PabloDraw.Mac.csproj deleted file mode 100644 index e6fc7f6..0000000 --- a/Source/PabloDraw.Mac/PabloDraw.Mac.csproj +++ /dev/null @@ -1,229 +0,0 @@ - - - - Debug - AnyCPU - {5590729F-3176-4A91-94E3-54F75DA2EB9D} - {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Exe - PabloDraw - PabloDraw - Resources - v2.0 - Xamarin.Mac - True - - - true - full - false - ..\..\Artifacts\bin\Debug\xammac - DEBUG; - prompt - 4 - false - Developer ID Application - false - false - false - true - true - HttpClientHandler - None - x86_64 - Developer ID Installer - other,rare,west - true - None - true - - - pdbonly - true - ..\..\Artifacts\bin\Release\xammac - - - prompt - 4 - true - true - true - true - true - true - SdkOnly - HttpClientHandler - x86_64 - Developer ID Application - Developer ID Installer - other,rare,west - true - None - true - - - - - - - - - - - - - - - - - - - - Code - - - - - {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69} - Pablo - - - {3FAACC7E-D156-4599-B0D1-6177AD78E8B1} - Pablo.Interface - - - - - - - - - 2.5.0-rc.4 - - - 0.24.0 - - - - - - - Properties\VersionInfo.cs - false - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Source/PabloDraw.WindowsInstaller/PabloDraw.WindowsInstaller.wixproj b/Source/PabloDraw.WindowsInstaller/PabloDraw.WindowsInstaller.wixproj index 4dadd68..ab3f095 100644 --- a/Source/PabloDraw.WindowsInstaller/PabloDraw.WindowsInstaller.wixproj +++ b/Source/PabloDraw.WindowsInstaller/PabloDraw.WindowsInstaller.wixproj @@ -11,13 +11,13 @@ Package - ..\..\Artifacts\bin\$(Configuration)\net47 - ..\..\Artifacts\obj\$(OS)\$(Configuration)\ + ..\..\artifacts\bin\$(Configuration)\net47 + ..\..\artifacts\obj\$(OS)\$(Configuration)\ Debug - ..\..\Artifacts\bin\$(Configuration)\net47 - ..\..\Artifacts\obj\$(OS)\$(Configuration)\ + ..\..\artifacts\bin\$(Configuration)\net47 + ..\..\artifacts\obj\$(OS)\$(Configuration)\ @@ -48,9 +48,9 @@ --> - + $(DefineConstants);AssemblyVersion=$(AssemblyVersion) - + \ No newline at end of file diff --git a/Source/PabloDraw.WindowsInstaller/Product.wxs b/Source/PabloDraw.WindowsInstaller/Product.wxs index 0841efd..2a67f39 100644 --- a/Source/PabloDraw.WindowsInstaller/Product.wxs +++ b/Source/PabloDraw.WindowsInstaller/Product.wxs @@ -6,32 +6,35 @@ - + - - + - + + + + - + - - - + + + @@ -39,7 +42,7 @@ - + @@ -54,11 +57,70 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -66,11 +128,33 @@ + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/Source/PabloDraw.Mac/AppDelegate.cs b/Source/PabloDraw/AppDelegate.cs similarity index 97% rename from Source/PabloDraw.Mac/AppDelegate.cs rename to Source/PabloDraw/AppDelegate.cs index 4e7ee74..053da2d 100644 --- a/Source/PabloDraw.Mac/AppDelegate.cs +++ b/Source/PabloDraw/AppDelegate.cs @@ -1,8 +1,9 @@ -using System; +#if MAC +using System; using Eto.Forms; using Pablo.Interface; -#if __UNIFIED__ +#if XAMMAC using AppKit; using ObjCRuntime; using Foundation; @@ -65,3 +66,4 @@ public override bool OpenFileWithoutUI (NSObject sender, string filename) } } +#endif \ No newline at end of file diff --git a/Source/PabloDraw.Mac/Entitlements.plist b/Source/PabloDraw/Entitlements.plist similarity index 100% rename from Source/PabloDraw.Mac/Entitlements.plist rename to Source/PabloDraw/Entitlements.plist diff --git a/Source/PabloDraw/Icon.icns b/Source/PabloDraw/Icon.icns deleted file mode 100644 index 99bcdbaa308ac5b896d101df7a584c1772699d9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245129 zcmdSCcUV+c7d|>1s-hsaXf&obog^lv7w zMpL9%vB#*<)Gu@2bq<((x%YR!=ehq~|M-kEv);4T+Iz3P_ge2dpXFX_2a#$+fThE% zuS6o|3MbNBU>+409lUpeOr$L~z4GeW#)A|r8a#Xre=PU>6dTHmn7b-UsG_i+|q-aE=nHUy)<7ss2#<|%omBofwtT2 zuCkBR`T~-cKyPjFTn8^lNB6+wkcDEINOQ&l6Eh1l{TZAH)~-F2nw1`Jw-(k)9D4rv z<;COc?G4TnSSxXT`a7)smM<%^UY zrLuIn<(-b7lmn#$%HQrjQa;Go?caV%sjSF_wRJI0_9;z2KZrZ7RAv|c`I0-l*EaNI z=jn#_zN+nUofQY%EG?pC*FKZ(I(;q9CCGARQ-6~*xxZ_VcmGwNz^v7CJ8s3BvoaXjAc3{> z);YL)xo?`sTRUZenT7e@AEv-s=7;R|Gp%)@0ltO|tY!4$J7Mi3WAh^gj7T&)TJ}nL z^M+EnZdJcBL^RIVIZgR+OMvqJQX{1@VBD8JyU!`hR@5n9T1bu8;be}bA-SCrP2>7N_Qu775r)^vS~_NSkX zPanvW*biJ*pEq!M^4P@_m;8@7x^d@2Yj0 zFP76v3A**u!@Dnvt5ElKH!`R4f%~h_~E-c&q0p zf2CStY*ct9t5gXVb0Uq|XCK_??)Z~cs$Onw8Q_#^QDH%WXYuXT*(`*79}IL}=wp>? z&q@n&8d;@!Z&0AG>?y0%K5LH<^nLe0$Jy4$`2JE(MoK&WuJ@ICMd9mT60*M+i5+fs zoNj3aYF9pjX$ zX^Oy7PC3qN*LG9)#fFIiZimm^e)2Nh#p%$Gta99~-Mh92{qgGQndQsZnBe<3@52G? z74>tj&Q77X*t_Etix(|Q>1@B^vwYQtee4p$SkA6Epi_0(4+~aso!YzBtT#I7XRs)a zwZ7!vt(LrCp}rg2tzEQkm%V0*RO_v|n>I~?R87Ox5C`qg$B8Z3@y`_;k?mamFt`?ZUV_n6tq z5;llM(+k)e>L(1BE?(5a-cYkyxq96N_J($Vsim!Fc-(YE+&uQSTFTPJ`m4Fysv&DP zxUjdiuA3jQ^9at|i2y7zV(+T$U!uQcpZ{IWQtLyW!D(TLz9Yo4dsnxwTDEL?zu!Gg zeN26)kakql3xDHEWW5A8Pix`$lFJFU7nXEnX>iKVY(bTUgWSGiUFxk2T7J z;`7T5Fb^k)=X%QB?GNs^+;3%f*j=WG$t;im1~Ye@SiCJXQtrdCQXhGELUwt;kLx=QR~&WmSJD zt0h=160>J7pFVhr)lyoNm)(N(5G%oIS=RC5$>8n(V72tMUmC=`&d<(B>A<(W%dlD` z;V&ND>A#Pu_;bs#y7O2qw=+_c;+|u^cd*#P3~xTV-P`pH-(NpkQ$efhbW&V&F24S? zu)A)_aR$p0K_&dICDk~}M#Mhk(l@1a~^PQf{=WgKRdu2s=ZJ7T>k@=aD zr31Z}PoMZ1AD_(6PQQuO@{>KlIA0HBU39BVLJTw@Jj=SgX>XeGra>?BMfNR*stvNCB zIJRTz1$kgV%B{PDgNepFcjR|dPu{XN zJ6zW8e^o8lX#1`p_NsP`oui91JZIgUw1`Zs7Pp-yd+M=T;+@?&d1BriiEnfZ+ozT% zSyrv&Qt77H6KjLcJ`)rMqo&EdRggQ?ARsj9kqhp#=Fe9JF0264&m$_t^VMM zxXjWf8*Jbrb9PY8%f#5k&3{m{IXWr3yfJ$&R*NL){&ffQeWn&S{O)V!rRG<)w64Ka z(URny^mDd3XjO#Oax=TQ?qu5*%&XCo?FnJt?k+CbXWKhE@3BubPFFRaIlC3}aDrq- zNNQBDT&@U-h)vEctZZnzT(%T5cbsINWkx|(dRlr`erZkPsY@rE=V6}fO6HkHRX5Zh zYi>J#CdYanRs$Btysf);@7ZfKPa>h!qQ)>&ept-vt4gLY3|0#>c~e|TNnUnVR$gwz z`pFDd3p0LSeoGL^wgL z56(CNXpD(T@;&VI3acf-$GaKxdiBcXh9&s+;ux$J#wgw2aepeNBCs|GV6~hyG+3gK z<)dA-9!H?DNx_FL_FlmEsTmys(MGPYgwBEHX4Ij5HU$!I=^WV|X>M)}l=e}q2`T>0G1+e2-EqA~8!Prmt zZEwrXtAVZdV!mYVdi*+l#y6|%r@gyx@z>wx8tKWKO*PIVlvYqOu^%pI)xXliV zELk<(fU8}dyEV0RK3Y5NU6VQQg#~o0>Zz*gaoyVQX^qgEvH9&cP3OIL!M{f>Kvhj` z6P88nh!NToXPLaom@hgI(5v>nn!0*6Hjk|%wRNV=H)EJ}t8%evaPuYe_TldqHFb@5 zv3XpYq&<4vr>i$G%qOPY4Yd!nG}Kw_9ro%PnuoA=gpL}mJ9YM+>5PbpVQ;C|YHFyd z9${~(Ni;OI+Sps#Yjkuc&RA)IVPKN6T4d^KQ1Oncg_hO=td?#a-3cEqF#j3{K+#e;RI&f)*bp^efZX- z3F9YBdh5fP^EX60x$1q=-?OwBR_E%rb{6=E9?V#Ov4Cc8m!-%(7AJ}VbVrJ{O z^9x!HETjI`2k*cC;WU=<6CLEwrE2`S6h}4unaK{F0UOzw!YBXyUz7hnkDC1RI~-pB zb$rAr_nm+IV(mZ9w!_EMr?@l>{rT5fbNCk~Ltn2Q{@~w#3kd%_IRE!A=ol>$HU9U9 z|NK`YzWzTvT=<#Ezs}+R6sG^aD4O~2kN*4LGui+C_rL!&?DKzrKK$>-;s5ym>)-#w z0Gy@&U;nWG%fJ79FZnmt#s59N|7(8y*G1>Q@rC&%`XBT2|EK~c*U+E;u|EFi`U1@V z`}(Bk{6DX6%R_W8Gu=(UC=*4AZ;Fz{*F-+z5i{p)vx-ixyLjOOd!9X~dA24Y;=q=9 zGkwHYMBZY(+1uo0S8xq`_S4g+KR$W#_|YTwq3nU$>3rWUv%SUVMN;t_Ggo>YyF*ts z{N_jc#lr{p@87#O$lYb{uy@r5yDME+%#?~xiDcp_E9GZj{o|+j<-NhXckbN2b?fF$ zpBtJtZ{E6f`bdi@tL?aV>;D{_eko z`DgNv#1pTPXh-{%%a<-)yvUN5FO0f)@zNEbbYHuE!RI?pTrFb7GiExr!&pJ@$B%{} zpfryl0AP^LpF4{qzV~UJGiT18JAdKQ<#wPPv!2O{E1<{cD;flhXJo^J`*7|p7~XrG zl;Cx^a2^O}PM>OPJ9)CTl{>+hzg&=PzDv@48xG$cam#&F8axp76>%`-z+g zAKo4YB4aLJx_III*|UH-*?Qu{@s<|0S=OZ6+;aSQ>&a86&tAB6rSr1;ELL0$C~brK zVY{CE608*c%)S`&{Q3PmcLqAz+gh5Nn;LOF@u}BsIM&$M+;XDz)R}V^uXN@uVZ{Zo zXw-o_ugEF9L4PJHHJ{$Te6+5vww600s$q}l*4EY?Z8+A{a^mD^h@CR!#JPCp=$WB{ z`aeB=^60^jsY=aPXKJdeswykFim{cIRaMnBwRQE!nvO&2(z)30S#dU`biO4`g=fL! zSLsT%{)+OlGHL0!lG4($vhvERn%bicBz6Ao^Np-H6GFPnTVK6=L9>ngGklqP5-CMBn&Ww!b9QgNd3V)3^pU>D5dJ%J}(zt)?l)UFgn65`|HV%Zpt z*tqzFq?B8}O4a8Z#o}08!o^>d@pAAWyg?7U+WioMC+JBD330KpG11Z})##YmG=E5a zFBV5b$8o_ge;zgq8e(O1b^M;E9Dg0!(W9cHqaq_B!o$NNA|e|Cl%j4{97$ppj|DOE zAgS2h+0m1)96y*4A0HPJLqg$Up&=o`A)#S?fl5&+D~=FN6pNSKA~D`FUPG+H%TMx^ zI)m|~-fJmNA&OKe8EdgPT=a%m{8cTa$RA`E|Ew#QF8(Q3j{cF>F2CxIA8&37R*t*- z8YMJ1I7oquYCx4jse0!tu{acJkN0{FBq)ugd!bjM)M-CbQ&ow{U5bfXkpDDDIqs~W zO<2efj=!JZHHA`T(2hmE0y-Hyi%)Gx~ih0thA)KurNO_ z_ZqOOhrOX7jr{%ne7t{ADAihzEf$M|3G9m+0>do6Nx2N-=Z$qoHvXbJW z!h(EE(dHoK*myWLG$e>O4odm@c;_pW8b8%E#(yCeD`4aVn-}C_fME`FceY=?c;Vcc z(|tf|t0;$BgoQKAh5xQn47!GfL8&Bt3Nm2xmvv$U|{XztfyaUf~vN0}U4 zJ29B>9IxN0wsQ)l-c{aKsFy=a3se5OTsgK}7)gIWU+5>3NjWwL7T-wCDXwmGWW@ob zdC%9^8wzqP>*Wb=k7!6p%PXs`{7#JI z6)T?T`}7H>9Is^iWmtWh!h6dvF#IRM=xpBTRIIOD7=E2*8;u7+a)9*kz;CsFjfqaA zYd$pfBTc{Ud-9M+z1r1&2_ti=t@Xt5W-|UP=1Y#?NYXPQ{v0%|4iE;J)bs+TyIZD0 zseMHr9-ER=a-`y0%9jDv=f_9)@7@}KKLLuJ=p?qG=EmDVEycvi5}ZkaATIVfP-8F$ zX>5iu-CWNDHQzrtG9kU7vf+>zdA-SE@t0Q~KLBd)5GpinX>K~!@CRHlkc%mlA$T+q zQ7NVdF1Rm@I2;P&-Q8S~!GjA%KlSns2#rb3DXlH~5~`BE#!ns&-oC*DpFex*WGj|$ zi-!yfr{tE^ zMYAYc!4r#b!x8;G-5r-MoH=#!cuP}bL;ca(dh$d!AI|xBDMX(Z@&vgS$_{CJ_^{)l z9}yhx*dKOdeS;zsvx;l#PzaEbFW5(e$YEaXxP0O4DL4XtI9gX*L%t~HgFf#DAsk`V ziJnRar2W!97I90r$o7znhj(CDTv~obgPj=pTj=`vQIr+>u617F@krCU+9TCf_o3?( zIDq{6I!qQ6E5~@+I2?B8{DPw~LUqZXi%}VXR{9SIVK7P&=b%&*bgDg4Q(ajPtxl&1 zLo*z&gFA|pdY2Dc+c~;=`OtV2RX4#l9>xCtof|Oi(z(+-2<)n^sw{5@O2*JQ2(d9Z zDB@S3q#v-db#V5O4OwJ9giy>xq-6+D z5fo1SeCwIl{Z0=2cG*drkBzTB&*shOw4906lQf#@4~n1%n@9#EC~+73XE7 zAO^?8#3dvpOH)*mPeG+$X@vN_O$ZupnZZhps{NK0=H_OsDYI|yVJ<+S6s27i3v<#FW5R<` z^pmoz)Y~^ek@S}w<3NT3mk)3Vn{2RhBx(c%OStTA)jo8MrNl>tD*R-uy9+`(duZg@ zp8i{dkDk5y{Xc(k7(LqX`JF_F`G`%sOdN^grZaZyyz`99>6`Fy6Im=guA5jf~iBq8mtB|Ml0OzrA|?*4A|53?On?97=Vz}EA06$x4Gfm? zPg=QZ&ALt7cI~yab!Pp;J@70=UPe-Ec#yx$%iRT!vbC`}>vNgCqK1bBnfM!P!bz6T z{`lk1z`v%nZ``n9-P+ZwSHVlmmKhiQZ&+a47Y}*RO+07%Md*I!>gZCdk@_(%1 zXSmE@>5|1VeQuFjE9DXV+9w4qgS%F&T(xTT>NV>&ZrN^PdeGig8W`cp&6q7`T59g{tI1VF4?zkb7}tvgIi_uDyn`Gv%Cz;Mq? z2S$Lmm+N5%8><8Rn~FM^Bc#PJ#3C0($K;KI4(ryf->_lR7FzZP?Oizkuy_Zopo0Vv z93b;_Ic#rzaKBS=rwYgGz%EdS4*L3K^3DAJot|=D;FKz(B<}F*H!d?q22N%{qBsLY9 z8=W}>5#lfPaCWdgXz5K2{gpoGezMV!9s;w4M=E4mr`b?ey;69grUw(m6AYjM!t z+0!Q|GAV1iR6IH`J2@saK<44(V12;+a?w?hLb^~DM(A^kRhKMXnl8UOrH$8M(`GWm zX!{Q1J*0#i=N}rA>W8cfjve+nDZ?Q9<;B;Sjbw!?S-~z*UAolZlKk4|$-F0qFm~?R zz0bnR-pRvTj)RA-a9S|RO^pi+lzBMYTU!a2WDk;lIK$(-D79TG6_H=fzvMuh>up?WB^)O(UiHhVspEnD} zkTry|$IOy+!O0HW{2T#hMtnv>gu=(u#lb4Fs7Ld%0JDT!s!lP(aJ!;sTIi4>&}0`t z_E{XTb#&!V&>8XI3b3M4VzFyhQdE$ymy3gSW6^c3SbkvPR@OkB4-J8e>x}W%ZLHB7 z01;5k_FLQIlu2j&95*^+f}OKICpkLAk99rduIL?`vt|wU76g7nL>z>iC5yKxdi6Hb zlv%PAVUvKdjL*n>rtdFZ7C%`R6(xU^98P75UO@j9d2yU)zxAe|$<196wiE}li$tXPZ7 zhz}2xxgWkL@6+iZ=pn6_E?vSdR?%;g_l@#+tu^8>yHaIUj=XPbCqWBJ@7W7%913xQ z@(YTLPtW&Zag!J!78_+JMPYp8iaza}RRS`(0}~EfZ6jOn2*67^1f+> zgbZ(>M7__HkWupY@*%aeigwba2hg)pQ)A%n3Pr!B8^6OEE@KTe$1T-mVy!mSarQLeLkdL0gBzZeTKm zMki+Emm&S*L%1_S;fqGa4Q&@;R`A-g1nVHbp%zF!U{{O~ltsV}Ros~7{5L4B7r4N= zdcqHp@kol$y6^>iOKg;x5OZCAV?;NcfSnn-vWt1tEcp#RYu=E}kG(gvTal6_)R!OoKX2 z;<}CE=CruI`}o1)kJq+v|Dj&Odh|l z3%dkG=uE|}DGr2Yj(YgY^jvA;XI*jaejah)a|lbW3wR%~alIsXnuKaRA^h zzILIo=UkKDns$^X5`Xr$vaxeG?Cj2Z2Y?Qel2uTi4fO&rqeN20ZS@Ksj$NX%crmAs zg|(zC=(diD;5>MbV!uprdrBms;UZyWZDV%`wgN3EJT@sKue92PMe>Wm{ZVn7ku5V| zmx?eRgvBgbauHx2Lz^M(hFi9l$Zt=(ZjG4;EGuiXz@9`bfIJ#xSnw5r2If!cVp=g=m>AbI45j5cprg99^SlM00lX2r_Qx%Vfr4u=joI>B7HNgf&zo0yhW zP+C>jgiLHSKR&&n;^x}!-)Fpi>&A6BaZ8tr5YL%atD3X#Pde*xh<~&foTUhjgmgAZ zH?l1118~=xKJLM2xs&YyQxn|v)~{VdmnRMW7`P@N`@x&3j)$FG-8@;DZ(vYZRD4o; zPGM>F(WVH@v^X-`fqkHR)yK=(?x5Kor_q*88^9J~*QisZFuR%Y@Qp@{l_w|j z4FEF=j?2s|DzB+;&V@WxU?v`VloK87&$&9<>^Iws+v=9hKv=(yU9Y-fqus6aM-!9W zJU}$`Bjw}Zx%}daBMmLN->_n;`b^j!%pafJo$RbEq5lrL7;WCfZdAi+vpkvlXyP3Y zFX7?g(ecUY*##w)M;eajL7a+B6K92_#o@%`<#GroNz*+hyZEcsR(6Xz&WxVbJxPxz z)N?W)e|c~iJfE7GTUb_AckFmRBFIX&a-Iw0K-B zWnOO1j&?Q&_fv)d7kSy9nSAX2JEYP2cXV=gar5vbR|65&CZwciW2~y{8jl~t$v+o} z6ZGStDBT}%1INvat|68d7QW`NjS&<)$H7pz!zMJOPJ`qK!4!UI*C&st0l5WvxE8w!xz1RUks}0fLWAW2e#qD$J;8c#?jLw~czSxVoK)sR z1_g(PMMT4-l=Q6J0)W6t$J^33P{CX(9=|iCFoy`IF_GaRNcr&@KV)g%@%Hxd_45yu z2f+}i0P(cU?7YI#ifSlvysg??ikiJtJa$)Faehu_YH~tcbYw(WD6(VgUT?@IKHg7ASWw5H5p|?%B7-e$c9fv)i5$DCYBe>KvlH> zb=;~WM~}6%o+>n#fuSH1k69uuEH5d_&&@``2ifVQL|MWls*0wj@e)NPWfj#&j#8bu zF~pF#5HhjO*CvXZ%JNbq2l-NwEOR1?y*au01@vnwOQV?GdMeiZ8yU~E81?m5?_6Y! zslr!MEG-&W%-5ljAEdH3s^yizJMq)=V1Q`-u*V~o67WZ)HM&QRpq^gefI@t0TdKGD ze4>H)iPe5schJ$Fjn_^{$V!B!au=Ho^ZmddNdk`~N?b;a5(yY35->_6S_@a2xu)eE z@9JVZRXRG@c8#X&WM{LL3wH+UOa#PjHjUd$UTuhR)5mp;A^x{DgmcNGIe|O6=FZ*r>}(S zy}(s@OiYxAeh<_hK0Fy}B$I$qBAL4Q@X4S5{FBEW`Z3RI0o~)lgZu0~mBB&pyIO;T z_wL=lS!cgkDgmKH^4^O0+kgJ~2OfbZynHF}T!`pG)Dn}{+54Dhq-!{?Ur?ori>66F@60vZnn8CU?pIaNK}nl3FD*x!r;vwqQ>xy8t`e5 znCk54;Mzr3xb{&U!|a%Wn^jvm3D_hO)y1JN0Q4!15wlkVz!ko1qfMf>in=SjqmvzS04O;{J_+E}mcmdJB6_ zdRF(`x%1~Q5Xpu(HvJVFSqaD_62|!v)X)&@`72SW_2OY4@o7$<_Bo|<8Z>{fU@l$h z=mNLio|Aw`A{o6P;lYpeGO-BzACa~8}Qh;*hKvJ$XJBsvBs zhDV)j{XJc&K8S*6ON&plZcEGY6RmB;aJk&k{qV(ZR)SqlqPy+Q#s&0`QqAcW(KL~rX&;X(Y&e~LkR4l2l9 zUZ%35qP(0fW6RZ1v8btS0)qrnI5bJd3Q{nMw8JWU_~4HmrS=~PWvGBrFe_n;HA}#$ zDX*xy0uBk}z#)-HmY$;^Ks`eORp`O}2YINM4heybQ&?EQ7OH`cQ+5v=k{7!r5^zW) zk_C0-4e}u5=yCT3pXVt@T@s!pPzTstwY>cN!g8=kUKmOwV3A11#X;<~mPGuyd;3p3 z@KzbcTa>EKe7y;*6J(fR8P$cUkoz0B8W&G(lt@4$!RR#$U;_8* zE|@t8Nksg3$SXx_=vX}pxfekrDTY$KaeRq65yjYAkSboBIFr3VA_0v=GQs^d82Jh& z_JMo{D|I_TE`Ws~0`U7}6KEt)iDHl;aH04Db9~%YsCKon^_(4xE`~`G$&wDMEpvw zd(D&*!Y0b%dbfZ_L^@u-YLsYE_#4~&w|+wDIi>~{-^GQp<+O~IfJP#b7~Flu&wPF? z;68yWcn^?g{x+CO*cIidu#Kg;0ipt54(AD0QQe@CoGL7}>CWrdP>uPy+cXIrw@d-O%&|O+6ZAK}|5NDnWGUNy$WFqTvMT%ADCR*p{pQ^f#O6AF1oHpFcMEGV8-RDA^s!>|+h$OabG*qkA^0+eTG1qTzICLJ9< zl=-P?Y|CKL4Gd3gc=+t;W6*zwa7kOx#x9U2Zh(S@dBuAHQ7kX_0zC1Uv?X<^2oHh- zPUWD0=su8BHUznw%K8(n>mDSRoYiK@}_m(R1#u z?2Z&?HLU2PlrV@(&MYXeZ9eTKL1Pnio!?5Xy?dMRh^KcEnu1vb8jIeu*Bi-DoU8|p zBode3@R%gz^=gitESN7r%N(@Y0E0oyBHo@rlH;jaU|Z>Rf;b@zjc|z1>;nPh8h?Qw zw(T5j<55^Ljo5KK2+@8)aXQ%#lp11R6jOzt=d@+y{sxqCDpkXx6yz;2s*Xb_HDH|) zoe4A^(AbFhOL37X7xzdL3i=eQi7a&jG!i+kkx1fT4D-v5G@VM9pg#;2>GwS$gZhS0 zDC8r6kwvG3y>4j#L2P&e;>Kl}H*A7ukhd$TK6bJRn+V#_Bs<|;B9~q5ymIOMIey?u!+vg?0OJp3h8SA#?C|CT)|KA%p|KIRu#}W!&~!fk zMMgNthegGwWb;$rL%_)faf-Kz=wofItrU@ukx@s7_ftf7{(1%nPdF{ZwGuGAkNH^> z4H$&v7O>FBrpp)30fn{+(2u~l(|ZaScox*IR6Z2NH-SbH4`qBQjSz`exO|G5g+FkT ziSusU5*%}p2LUPi7)V^iwYosVgQyFq2r=Srky7*%>#ZxmV5}%PTG!krl}uQ5;bMDN zSI6ZckVc-d1?JJ1a$##3-dSQZK>(?xYcj7&1aeoIdBqh~M{xO=umd5wrS&vC+j^n} zYVcetVp826aw{JJX_cM@N`$u$UAA%E=My+7sp#dyp?|zRI5icZOCLQZY)TZH>fqax zJaudc0vM4vGKhYW-Vpr~jm9{r`bz9I+{GFg>=qycn&iDG9NN$O_l0S(<@?vPO z<2MirogfFR<^r4bRPg{f=O*%&E8qAl_0Vu`$`Vzo!>%kEmE%$aIf-s;RasGPW@;jz zl~Du+vH>G6Tpzf753~+}L~@dLQo`qBGnh%wXzW-oEuucUyMg@3xrhn{7RfKq?;apF z4`(*of+umg5pgjt4G(%Rrm7T)8~7)R&)a|q6gkA{xOw-%6C#nMu;Faj2qFA~LzN2_ z&q<bPOf#cfunq@GdSCn9`CB{aE1yKvFx9q6AL%S4|6DLN({BF$0Iv9hM(5UL?Ezo3Y?)SM7b zGA5?7I4_fOi6KGA0D8;(!a773q;;YSHd!SpiR%dLWOBA`^WCbx&B$o`_8f3Pnn=~x zWf>|p`2>VSC8Xts5?lq~QpoM_g}0PTE$$TAvD>(^m>-oE*m2y{L|6 zXAgT_QS5`k*zUpr;YS)J10q=NPbtZhMO{oIq_?uL$!I&fLuF^6qHD4(I7eg<;x1?d|#eEtOCL=rn@k zmo+f90V6XxE;1BJWF%_OfyI#vcNmS>P7qWDPXH6-l2CEtbHGU7dax+sgrc;FQ^Yn- zqGMRigMe8E5U=3kt7U|l`q~Dq>+&!_wiSRV#}u1@VP*l7hNWh+z7?9 zz3AGAIGPu{Ev&H`6^Dz!2RVmw)DQ@tXZOZI1ZAak6#Zh*JC0L`S6LxXmXm`l7hl|? zx1UhRr&Ld%y7d)MISQ$$g^aeVo142QRY|DEf?X0-F;+M|SX2~drw(!MYKnUF%3u4H zuS)FQ7pCa>j3rh0thlF_P-{Vz3T39E@+12NnB|p4IY{*rbcS11aZCn$Q~^5nUT0Fm-Z zdYsFnVuuQEayoUQSATbT0f>7jhJ+~k#+G3lFypH$LsY|E)`~to>*4YZ8A(Cn0$3Cc zFcSJv`X6U4e-woxW9Vp7gu2$gA?!sJMcFBFsNEDQ`bG!+&Fn;UV~tgIMald0T8BoG zx13@ItLU4SB3MqyIP_4x38fb*_*EUH^C^fW60M*TlwCkZYnS(r>k`lE8lHf14 z%KP;~FhvB$0BH^SVTHVZYWHiW60~p>LRlvtRh?teEbbN~Bod3V{EVdN&;&)ldO7b8 zcJBzD7-`qazd_b?1*O>e~6hOm3(}=+c%Dm|W$X7}tP(n=2B!AQ$ zI|_$@SR&EzDb7iakLZ*SjJzro$Vg+(SdGY>)c|%CTr7Bks@L`4m9z`x8@~WL#D#=K zpq7NvD5{IK4K1N8Zkw7C$vSu=u~>0Kqg~1yEmlWOys>UT@R`3ocSQ{r0Kx%|p zL2d{JENV+A!xf-jSl`@=d=PjgcuPcLQC9Lv#f`CYo|nt-c>?uxhYxV$g~^6JgfF$* z+NA?GN|+HS7vVq^iINX$p(sP5x_5%s1&AdQiFs*mR-gRlsB5OgnH`!C>`r!vs6>8K z&wF?m6}AO?hja3q(=O3GBW0;58Hq9^idcC?D1;qrX|ti^gStdAH>03lace{cZTtW= z#{SGljVLfm1eUT`@^@f`+Y1 zVB9V>3IlbZg1FHr6Agh6-tpj-6bhaL7!65UMs_}FcC_($+gT*oz$=kRb|~&>L<+;f z0!*EcDIGy~bi#Qq1i<*f*&x3&Z6F+TCR`{DCsJuMzqqurhDXcAAcI&U5oOEoYFYtK zP>nTK#eT3q`0nU3K`)BJu5MDr-6^ePWhAQ1ROLepWPVW@ui4477mQh?65+LF*8}dV z9W%$Ni!{^ZHQT*M24YEp;Gnqp#AIBSgt8{|IC9%IkZ5?`gEy9<+cwXEKuZLOSP~nqADhH#IXF#wMZ|nvtE0 zfvBiPG4wPh+nN3hkB%)lO`R2UDf{7@N2yO%a2r*Eo5^pN+PiY#xi~W2lYKO%7cZ&-sooW&a4@TJA7Brt z^D*jN)}uGF(lfJi^WnE4<;ig!-A9)Ul}tPzJvyEo3$}navHuT&yKc={Y49gh?oP&| zH!ccQWjKy6Ve`rh;#8-Z;Q6>BDgMgFj+07kOFt+k7YmC@s1Lfn5pLrL?P|}lr9%Bn zPd}JWmcs{jG-tT`x{aW{*e@xww)Q;R5&2|%tx!y-R_{}S=GXHfPi41p^Zd)v?~xpb zd#HkEA>b}9^7QKp~Zok{A~g1@1#g2ph}>vB95*goN@O8a}usqEQ<&mz2XGka9f902X8V z;qIIcM}l4=(c4>2aM^hOUZT)w7wHo*BN7H8c2mqjS_pHHrZAe?c?tqwmZT~u%Da7? zxUhg;A{nz-QCC%7j0U6(B;JrKiD%>3ST^p{`1k|_009OI3C0l)TJal&_XS)aZ}s#I zq%Y<8!u6OPiF_wjL0%5!&d{#zo&0eM_!Vh$w^26U;Rr)#LbmL<*n2#rxF=%GCy9w|iyk^tzX1#SF04|rn+&biDJYWQR4S(i4} zqaTZ!?vUZ6N*!15UST0#3V_!MPfFPc{ceijp*Cs>l&z- zO3U6UFNYZa_JX0e9<-g|b*D0S-$0A&JmM_KBqKM6H}Kgz6dO1ccG=oD>yAPKb>!oy zBcJAFI=ac=&h+g>j)2S(yCn3bQl+}tr)g3%U#rI39H838%h2sAJ)y{Tsf?#xXf3gf zs^y!}xwc6s+uBayhx9@UzUB^3Uhg}TZet(=o5M$c!~PmyJXds(Cu@n#5}A=hG>SA=i=NK?vyV8TrJ$TZ`0+ll7J`nn_4 zl)% z92A0LZT*q3McPsZL=)!C@s<^*PN2o|2;ad+bCUhgKGGu-Te5Eq z$AEIeyr;1yzYQ+}tf?p|%mXhfDLyuuqSfneOzNPMva*T7d3%^PvNR~8-ZDzlpm{v3bD|0fTWD7*5vSq6*~X4KMJ zs8L;Bgj`qBi$uH%u`z)Nd~fh4)I&s^ea+TIb)rC@V?aA$Mr#~sI)1E{&m|_um!&G1 z$HC~YoJ8p_q|!hFN4^IPVZQoQQsO?AWk5Y)babI>eNA~$F4C(p5nbs@Q9WlmiOx|- z!V%ls1yp99?VVlN@$^fU!9K|7zMpim=_s3LBZh6oenNdo^Mr4D10wHYo%$WB} zAyiSEn}J<76zQ#NS;|Q_jd7ji6Cdbz*=tID8E6^s39JJH1#&oLklcx5N3dHXAxTFC z?|>Yon$Hd-962K$q;DVyIU95^NUwo{0x2AA7`^vOPc+n&4|QG!;CxY>qny}6y>`@W z2Og^tL?L<5)=>%$3dF!cVaD=eL+K`*syGj~K|Jmyb?C8MbT$)Peakk!Wy#Vy2OJd0 zfrG*@Ith4O8JZT+B8l`8PDB2A$_dVB>)Q;Wjc6MLX@0BG4m22D1_$Nomka|A3d3jw zv>vO$Q6?FAjX)o2t#quz8%d&vr9k?neg*1PJpc~M)3FQ#4hl2QToA+QDQKui(*6nF zf6~Z5iiC#f#%P#}1qbC4%YcKzj9b*uc!aVML|3IFBj~E~e5F>$24WZUGNRS&Dm640 zZa4!DN-E2MgTgRxRW}WZASsXM^=PT7ZNQhmdvKm4lS5uFP5jZI87zP{^h8Yps zT!(xRWtGtNICQ`T-$C^%-V4Ga+4v& z9uGRbQ{Pa9G*T?7M2(WRRyeh{q0Ic!5?Kh$MI^Fmid3V(;lr-d9s;7C5(9KGya3Uo zDC=#80S5)67u;A=l9L)24zjZcZU996-EWT?^KpJ!6BKoJZk7irwYCl;vCA}sW(_Ye zG9JcddTB5WI4I17Wi7R3d1>*HL1^M5FuY{e(jpaT{A?fU62)xV56|?$I@VBC& zXs)kce+)%;DZ5O4xGe=8h-f!;hsEtKvY@!E%`5{B3d87@)s^L@#)buYd%BX2mV9G1 zh)jCcq#u@nfQNb3E>~*2ZgXLP$1Y?REC8)#M7q7ZZ+LQ|E`xU^vdqL?4V4Ay)N98A z65W(Sp6L+^d^bRYr{y>_-Pf!!l`BKz087AMk1yt(VpZ53}-^OlS(W z2sAA{Qi2Y#U_Z|7u$}dOb2O(TVc-esL-ao&*)`1SRoO6J&MsCZo7sh$)E4{04-!}W zv}u>Qt*duvQUY}4QFk^}2EfRe z(5k^&)$`{A$nfIBWCFQGJrb(UpU?iFf+X`iwYhWW%sBuKN|E8(Ehf-d9-H+w!+6t} z`5!6HOyFDl><(HWi9wmW9Xs%Hkjqrg;|JC~iK`u+E_bK!@5 zOIB{!ZffJ|8=m6I;vMbq#9NgWc`4DszFyAuXvLsL1nLvtN1iC>1J2N@q?sRs33grZ zDmzzY&K&l8cDBlQsORhUNER(y1C<@Qp!ih0b`}&AhS^$6Dx=ZykhP^LUcrmdfmIL# zSL~zl8t$5-zAV(xnR^#6`dyHLDx(`bXa15E8+Mr4y7@(>uVwJAP$;S%R+*m~9pvMQ zo)xrg>=eS#ma|Z_pKnH_?o9NxQOB4)2q>$*o40V;nytGJ9+rkA$fzL^^br$()iUk&}HSuo#ytQfw9@Jj7M2sQIcxU3Ma$N1+iUIW8S~V`nqAw`!osiR0T^_WZw4hxhNiPW2q^Pr^2)5*Y+~ui1t&T&3}^ziT-l<*Ulp_HhLsO zZ+2xqswqf~R>)i(4w{+l*a{Fn1XMto7o>-vh_F!i6e~qG?B~>+gS9ymFKA z{=?GHlvM(ZZE!arD8u&_VL7f|jrgEvj`!#COGcQ6ScX7JN1yxWUw%7xp&^WN z@KVHE00q(5KZpG5Vz+zr~la0mRUE8;8K(`mYh62+SF+}e;uLCIo`R~5{_M3QMES7$% zGkwNqGiPBL7_8Z{$J*_Ej?ta(?P6`VYx7#_%tMRuQqDlM9$xjK=aUJ%_%~mFJ&4Wy zId?|o^z&$?=(O|`-H$)~;De7o{`9l2<}6;l&GgXs95dcPdicQZt!oVzNoIfh?RVeL zo4;U@eiY4@e`o@zS+nee@qZ;Sefp=LNQjk|4s0P0rGali5ARZD)DJ?o1ZFyPCtznepE)2ZUEgK-4;)mLAB*%%BX*-zMy z*^gu&iY$RS^WC@Knmj>ow6?bH_&4AEft{MY!j71K#IO*XKC@6Gr#yeFj%Rw|0DK8 z_5+{yMPDN5|Fsp68dA+sBX!2UG410o<}6va>mWdN%suVRcWy9TIA_*ppMLoMyX-sK zZ@2W_z}rKf3p5kefX~19LN-(7i!a#Ena@7Ei`UFN`w+O?`=a;QcU9kc=WPdH!2jp> zU!LFK@PN@;BS-7KG3}!-zF)j{*TL-^^C>-H$9lsB-+v|kU!PGUd(5Z{QX8^o9~V;zxRER}iZq zJP)qLfZx8`Z^fL_~dJ_4Jo+S8ethtAs z>GpN>q!}N*2ZP>v>$Go&W+%Oc)Oh@Ob{spF(__b~z5DnNdO?YHvyRT_(b^+NjL_87 zVAaQ}seAJ;?c-S`#QdnkLv*x8XzPrf^!7(HzsJbXaO?3;S!*!=yP4BJdY2xuS>CC3 z`t5OJ$Fh1VW5%$$BMEmWC?yXbJ@$X1vQvXo_fykQZ={!tcKLRStT|1Y)@b1J)9Cvp z>vvi09KtnPYw*LjUrhh-owwh5Yigpri%}4&>XxqD{V9x+6x696bh$ZTc*U;if%y#*o|M5KFNxOStLm*L%D|JN zNk(TR#^jB+KKSh01uM6iIWC0I4^l^qor2K&Z%>`TfHqiVUTYVn>c1 z1@FB5(HFDz*KD_Rngg*9yq)$NZ!lc&-ONwle|yU0=Avt&01{)=)otY0MCSxK9c|t+ zgb`YuuJ2)aj`MXnXtHVf!r3#S_88h14!*<`+ zRr+(jn(@IqQ!YTthJz1f>Y_k-kElro%Q)@PI%69tZTDN5qvg(Z z29j?+`{>q|lZdr88Q0?8K?>O^3Sc{x9~vIxeeh`}?80ySuwvx?8%tyBi+5 zOTwVLK~e;jQb0mLx(rhEdh|N;2S@bxIkxfNa2CJ6d+YV#YixSK(_$~+8AKgeg)JD z{)!FY#*wrFW%w0bI2slP0FI27g;!Mmwuz&E3;+yRYypjE9_j(qy_C>U;wtdk*w4@) z%%EU_wFS_+uwS`>5g@ox9uZj$BRii6e#p2UV22VG z8JYctqs1EZicp>V~#nzydJ9OF{sK_tAcirr@M?sI2BZBag z)bNFk0K7#h|+#NDbPX#-m27nr~>AjQNDXdAe% zpu!PBcEAn1s9#G61~>uQr=Vly5d}cmc!qg^0cR74UGPWxdMqSvz)t;a5#g}mFhI?1 zK#6`u6oCkZ^cXnn0JIK92V-Dk0fi%@Vd4~&1a#%>A0q(qg~8C!{=qp(Z-DywYF2^#WDp_1J`LhC z2|6-79Hd(WtY55V8+03j8wUa$prT{p5|mKT1YGW*SR*hH5(ALy11lJ;Fi{cV0pt+? zP4zaAC=8&%|4KtbNz2S7aOFR;OTKOP!ZsODg$~_oa!B@cz_6u zh5c0!Eii=3{mdtI3FP&`|(7@V6fBY1J-B5R8e31)(G& z1;laii^;0$nmKrdCK!W(xFmp4DP|YhgNBR%82bX003pzdWmN7$cLO6GEPQOBPJbf& z=Hmp%f&rkwQUz$xo#;JeQ6_4D6axhT9xeiCSU`rAdr)owAufcF?3+Xxz^AtL2#SdV zHsXK;UO~?y_fVe+aegC3MM40oB?9QPaDgQXtPre#C6ZCmF>~?*eic9p1c_3G!9b`N zQV)v}d#I_BUx^8EG0~6_q97g5LtuGAGlUe6kc6C?j)jvSa5KM=rT{T3V0i*GH2YHc z0fwEDq!1Sq4LLC$7CH(NWLOAvKE~w-1Xfr$0AdmfYI;_nPGnU8U(78a3YcsFLfQai z17K~!Yg331z|BHOL4uDBh(?Tr^cYRR!UReHGN2|J1~zU%aXD2TQ(L#dsFWboZ*g=& zgM)*LZ%zphD?KGCAub>r8So0=fd-Iv8CaR{02hLrik69;2k=PMbiW41zS2X&_XLJ- zlf3~)NkvAKkDZZ*oCqHW!TL_B29 z0AI`_9Pr-s)Z}gf<7PT4QbIf&Omx(5eFI%Hurgtl2v8a=BO8|h5G&Bsw{Y+bicSp% z$O{2-3KY)>KNl+ljjyf>BQUH1=&^tyI|?$;h)dm@$UDSKC!?aJXW`%#0^%oHhL%oV z!7*te06k=Wgb2kVGQiEoSW8)2On{4p0T_l6;NfCpVxXgfQ4o-kiDYhvgj9grGLLZO zY3P{%5I`(PO~=^A**7#U-4WnY3d|o78^i>A*qiC8D@X_fo*e@XB`MKY=K%v9E&8Xn z6a-{f%&0uXc7T%n76Z~k(P?AxDXE~ z#65zzr}%g{*jT{$J`!kDAp?CZ3cwce@Ck?j?NULoLBbc(3hFvWmX4l4Hozni$Sf5w z=|~zF8Q^Ybrmv|aBQC_t$;Qk;1280laKr_il1Qv@Y$^yRd_sT~IVBAp1H{=C6qAxy z)iN-%{hGfrnj##SDTC-grA#(m5H8~ngSSJ6GA*D{3tx?uO1aK z2^j?yH5~&JD+f295Wq|2ww{T#BP0dl9dkf!z={NDGWN*GKp-Y!41@vXB*ldI0B+2H ze-C(r5ElMHvZEA$}fCb{1wvfFHzh45y@|q6WCo18mqh06xNElCnx_w;_yx#G+A2 zndYeBU*|R{=$&H0{vJR&8bcio6$KdyF=0VI9xhIHHdYoObil|6W+G)_Wn<^$;^h|- zxg{y9prWB;0Av{ivhxACbUhg%6Rp5Ju^`YG0U6|gI0+DEQBjnYmbfJ%B*@PP1Pvm% zNVs`;fl!5rn1r;PqKbyLzA+@rAh1haLVC1F1Tfhf0Zk$p5+4!l>)~u?Y4SCx4`d@M zNpbP7F&eNa;VmG{AtR@#takfbrbSmTAX{zXS8^cr1vG(>Z&C~pR(E%{gQTU=1-7eF z1@Zzx5}((r zPDoZ8Aeg5ONhf7s1euL1+mcZcns3YCT^}^7bHK((kfFG8AiNV zU_C+}ur47Bx)J34b)zMTUu?7l*=ptYeJCZssa;*a*gWaDt1A^OLHYZr|JYp;;9m;< zhmCK#z!HCq`@g5Abnp7Lz<+ku};miHHAnC`2;PwFr4T6M?#1&cp$hzb6MrTy$}{|N~GXXy}he;k3v>VGQb zzyE#p581(Q_iy|6(*D`6zuNKbzcYjXunE{dllIT9f&V+HKi^IHyPx-eCiIur#wdU0 z`CojS|BqJxOTj-MADjOdg1_CG`ZMjH^PT$N0l@szbpJE_vHzwm;9UKg?9cmN<^0_$ z;QSM-{_h1i{=ESH8u37D`1=5u{~hw5ePsSSs^CBDEcnMD{bvpQRm%T{`#)B}Un~AU z+5qP2AJgxDre4MTcQ){+H#@%t1nfQeFF${Bqx)OokSqVXDgFzeyk9~w{}<)|*E_cU zlKPJy|Fl2nZ%}-P%KrxbpPRs+G}`$+`T_r@>>v>3?;-rN?xFlGfUZA__wV5Y+2Qxs zpMSYq>+fOr-`}J0Yw4iBzTx{d#(!)EzoYSe0|Ne)0x6!2YJ z{$Cc6@*993Vto)CKUv^+>-T?IcF6I!alj8#|IN+U3ix5_|EU7H{!uO8@BHg9;QNXD ztt8+9kofJ@?{`H4SZnnCr2SSB7zFD2?bYvh1u%f`KJxfw>5jkeu=|&yza3NlQ1iRF zk@%tJ2aLi}f2))4c_p>$drJGQtgas||A#()z$o~)D*3-F|EGcf)4=~};QtQ|{NM)g zxa-HN`G@y^KYIM}qsL!Adi+WGW9^UfNBbW?-2eKa1_=0{KhyvL{~Pop4G<9jBMsnd z{N+c-pMGEqKnc-5XzWK>z)$m#Kdb_NiogD_3izge5UAnDRKU;icaX-9k^i^(2hi$| z0Py$u7tjx}z@MxS@&x|q`L`btgatzi{`2SiE8v&Yj{pkr_qIUr&qe?C{iEmKzjqt( z_hA~8u;4r|1A02_jm0DD1R;c>)CfSLGV8j{~gBxKlS_n2;xVtzXF+m9}_hH z$AbUu{JS{gsecpq+k@{g6#N&J{|(Du-wgia!lQrC0q5~wYXd)c0qlPi4+3%il?vee z2X+6m)4%X3H2-Jvesk@wvVq^B{BKzP8UVjrJYWN>f4&j?7w;bc1L8luA^NZ0zW}P? zPi~6;U8DOO1N?fy{7-C&{)hK(fCagKS{?jP?;in5_>)FN;D4^*-*NQ^zkdcG)cAu> z;vake4gm0j-#`2#2>$rnk3X5nkA462D~KQZ{_R%;Klc6OpCEMo=YHw0djI+-TlkUh zpZ^2_^k=?*?_k9#2m*~x0=!WjH7F_3kYka7V_aMB0Cz`sZc2#EpT5*A|M^c}Lqq?@8iWOc zQnqliu=Zi|Ab#(H?Mz*+;0K9&HJ&(dDUvzN{<>qy<}9_CnlUt4udwC;j3GmV8xm4A>_kz`y4>Fc~~Cp zG1fy!oE@y}n00h7a^wD?KeycI)T(HYnn6R3nC!54fdxbDo#fGdUGib}f^2B355-vX zM^_Ai$x#cE=mf4J6#8biRwIi3T3JvF9VL#Z7?9D_( zJtsSa67XCq$)9_={xN`Fu(7p+r-CI9kd8(E;($GSyA8kpQ`*xGS2=VW$s06Ft)TH` z_ybruu{_T#zj|T|R=w*5YHRvhrJ7(>-q-)r!5y6VYa-Wo=#zyhQVHraa z3kC9TXwg_jo9DPj&{|QY3j*rklDna1W8yLf9u_>rYURa`PctHHYoK`{%TAdZj+pBCIN=0^Ox-uoNH7S0*ZT$YLMEj4G9UjC6!i;fftr z9#Qz{Lvft;=xB3>ROf=AKxnppM<+h3y=Xtn);coBN|;k|DTrG1AOjDCXZ6A4;{LE~ z%?%?8AO4-5N$ED|g;)7m9FmW846K9X;!! zzC-cY1s{ZkKynM>fgCa?{jz+oVG*#3fA2yhg^g zJMqvS*;soQs7&=4B+`LB~hOu{)%$&&BJEVIjqI2#kh zV$#WW_>qA1qdsa$@|mF?;k47%XXSC(SC+i_M5piN&?JWqKx?8!`SgnvUifc4*j=8W zt0G`fT=R3o)Vt{6h#;J|>ce%G+m#SxEFk0fd+d#s53IY(uRHd9SOi%fXR{+czY`i2 zjqk+L!K&qLtSKD0JWocO&1MSH&W_oJqOld{A%OFu?!X<<(8z3^hDx``1LKe7FcozQsv1#AzKu!LL)q zOdo}@m+8J7U(WYjdUb)oSA(-QbIWBtChQy%HfNCA|!fR|T zEm7#F&N9p;FDV6^-p7s+dYNqvwLG(p@ZH@+XyAX5fidduZk~fS`YJ*uy3FP;8N=n(@{XDUnC{#+*${+LcIaWUnicgj_bq;ix{Z zuWJ_Hov?o^hp1E0E=`ad>Nnzj)|uio_vDLHv9eb;U(~x2o=?5XAbifIXW~xwd<^#y zG-yM5chVxQ-eBcgoMjHFu;w!d@7By=wnUQO5Z9bmxpBtPxd~UjQ>Q!e4ERtQ&2VTG zpHYEhVvsxx>lC{O|F4?TkR*i;D#G1xZYljFySkXBrC(h z^4E{mL_QZ^;C?7cjWqDzAayPv*SF6QIl4Mh{Xy6Lq8ejI$n`W$lHq3UZ_K@PD_{G8dd86ZkejhSIR!f#mRGjeJei zDRJktLxjW}l(uDw*=}%Fv8j6ncSJb?_u!chQqRuI(!8x1(`mKnLD3^=nrgUK8w^cf z^J%X5*ShRcvAyi@RC0+FNcW>bHx^roz0ROomY^Ebj~jxm)m7s~)%F5|^IPSqNVJYg zV~uFZj|98lxI^9bhpNL9X$wdaJx;4i_Snmy@4`KG_l`^X zkbxu!imIPE%+o?1di>FW3@avCFfe2-Nc@Pjsyz209O;S0s_J;hsq|gLee4@Te*Dy4 z!!V)udxvEPN1V9RX)C;9F|Rr#JGsQD{GU%T&Yqn$r}@> zSB2<9&+BGixZt9`gmyy2%QrXj!8<0LHfzK*31q%u@8w3!KibN(PY!tsY^H{-B*awJ z0xOJ^o`cs;?ek@bn&z=QRxtiLyO$axh+lyJvB1mSm~7gyl?Lb7P#LI@6)`IF@IY{$;&9I>*$H=`ps1f9Vs}O?>gH~C1)MAS zq_!?ppn7r_0_~w$SOJ-c{herpnqOJRH`lFy5nmUZ?3-!G=WOT;-qd(lEYMpnd z$6Q7YehoK~>_1LQC5+!=wte7LN1rLq;G^zWayjis9Q;0i3z0Fq@*svDT_uBV{RXei zSz1LfpMX3$S<8+*L+@p}?=;>s!86J@ox#0FT-@N(A#1!<`Smu#(HD}T3v`k~&c+r- z+-JNY+96Dv_6oG8l=uiAQg_?B!MEuot7aRwHJ&H8A+xB4lXCtv5Eh5$c9@*$GP6oe=~N?d45#k;*lc)_FC)%YOUv zL8AT6yVFL^l5M@Dm+`74b(ZxVU3In3t-N7B)@9wQv2@O&k-K$}OOfY)EAfKF3gtA3 zX+^U~*SbX5Fu$RYQqhoI(?)mf4ce988_SBi?I)y98lG~Fd1NSJ`+r2i(78@wE8aWj zf#U?R-4-}}viKrqSNki(R@xE zSz@vFujsZW7`#Fv>FwV6wmj>4{66M}?+cAXUS?}^8^?@`L;~{{#S@m>hBrzc&)rIC z69@pi}tEDJ^yP`&Wz%s*T=sS&nzB4L{FMY)LA8T0%4vNj%Qdf>w2kL{eWh zVv=P(@a~+;lVC!0CZ=5ys{v*0mUO%PY#G@v`=-3QiRCxwzR^u62TYCT-{E-D1Jlw`iL9HymYs>LR3f#Y8;dqaK*2sjVLr()mh5nXS8)(;+gN zdh0BNpB}0t?ga?)jJ!HgEh*)rUd7Q(OTcfz)4Q<3YBCTjKO)|)!$sL&&_GjcMIMQg zB)_P8IcVz3&ZUuCE!E{w;PPlg?}Z|d(N;#Af$d86grN4wk|u~!{>CoWclhd}{5i)e z!DeUwfR%#e4Z8F_f1OqfmV4w%ZjbHtXI^|st`;(|(i1PYU-D1{U+CmtR+qLbod+je zb=ghU9|{Rs*)+5H5Y{6;+rM#jYo8_AAt-#?b%DE4Y<;ih5U-t+aGQO}raSfyUae9< z3JmSj{hWNiEmLwG&Kfq#&UHrf&5pBhod zfC(Re@-wh%sd;eQJMjMf7Nz~P^wmme33vjrUJTWK&B8Oi0o>Y-wp*d0!pGMr$Twga z_*RX&nZ-H%)GxRv>8jPioM@q5$s*IfPele&s+Sv#-meUJ&dKxDCx4{cHD2t2UQ)9l zKWrvoBNxFG+)U!E~59SwfVWqFe@3bW|f=$wLG=?V;Czs8LaUZ(( zx}0-u^BuGfl^(iW%D%=}5K`c=VgQAng6xh%vnBM|*LW~2&$j$GX`;pEv*TwExC_GP zo$<~DTl%U9LJ4R#MYe_F7CD+fZ8XhT;(cTksMziv=sl8mLxpyZoV@<>a_}gr<83>J zMYL!6=R%dM2Zol)i=>y7D+q6gL2N$!8Fwwo2knSVPa0z0~@edc~Ib#z^ITE>DwN?+l+R zQca2FwpsE~H-Xfe7nGb-Xth6tJ~}r#()R+ttpfltZlgzJ|AaXHnN+ z)?#aZsd?9Pd7&XEq>#8$nXGAHM#>d0sE6zRjJ=YekL&;@5uW8ZeM)es?hTaiUWRmR zq03&0Ej+lB>FD$EXsSN7^&}Cao8kpCC02?6tuCcrOCd>kl>GeZwZ#@ej&AwJQy%vK zyYM#rsJTp@42>^cTYT4L70yJiZ?p9BiafjX!1=*vo(+!t z6{KalCDnwF3b;d?p}9C?S(9vcB{ZKx$(9^OJz~7pRLr{8~IZEMm689iw-Xep4Seej7twGx1c>h=RIwBP!lIyA%N@^x8+3= zej?Vju~_X~OjZciZ*d)83{!bl5EvJSYdzQFlAc}_;LeEQz_y~hgH4}Qb^GdYQdM~} zy_c1@!8_eo8!PzzXVPKgc@H(3YuciZ5(V?E2fNotr7_`mealcDWVNsD+3~5;@O36` z3Kkh6*~^^>;X{Av9#)x`W4~YZQ8$hgwOD%b<@|gATlxdc>Mx;MR4kiUrLlbrQF`#b zh|n}`_HC_?T8iaVFoVH?#XLj3k-b=$^V4DW{mzQC5j}3^I!x)?67odGx7n<^m>CtN z39#R%H#X$WN(GqpKe2%&?}8h~w5Q6v4Kkxka1n>2X!D!T44eiw7$6qh6e6V;|Dv&w z_^N?uwCz?#@v)Mi+th2aE1tJb^wMha&i3}?b7JBv7R|2a;RS|76z2!yR@f_UJd-=CTG-Fa|3ty$a@JC-g{~Jg%=;f^Wo}5V0>N}SNZijeDEzmujJ)` zrIn|$b>`f5k77*}IYA32_*9?QxlIluicy(#*q1K_KBJ%4X1F`EJtumc_;@+E=A~0B zIK#yt54yQ%j|jV}Vgd|$^Z{+4TB_kS3d8nLe~QG^M03F<>8%T^+sF-X+;X9t$?dTO zP=akwGul-jYPUxEX5-y@Rq3jFUxylmb$p@p_GKMksAZ*mfQm3CCjRYZp*F&Mg-C* zWosy&u^&qm`g?fMUNEC#OKa^-h%R)O)kEKg73`liGp+j~JAQ|zUVes48?g%(>Qi8L z#Y3I-%bZ8-#%CrqFQ*38o``4qDT^Z(y&06iX^rHe4q#y9o)%ERowJCvBu`7lE8od} zt+*{{i-tg29+|5H&zI>xA%pF%B`26duJjx?l_fh*#NGSe6f=J9osc~q&d^>ukDS(w zN$ukcYRyg_(YItAm1;;G4_Xp?H&W6nr-z_D$GA%tj1&@|owsUK@>p}XQgmh4xkEjd z5k{!{RBbZByv#q(lho^d)SH-Ij5kBz7PNM&(47FcT~kHXh$;S({kfEJo!tWv2~NY@ z?k63}wiz;05MR1`25S`7NVC}}Zs92f_sBf$3PUL)1v3a%XM!&jca=F$Lt|D8mNPah zhyonnq5!7i>%6}}4F!#oJF;gGk4fzxg3tfCcw4jbXxx}0QbL3MWgU~q{L1jj$USlB z>oVRl22oboj4nA{7 zBZs%Xt(_97FukFcf4`kuJpG|#AByihMVqVHMLZGJI_Lvk!7LxuKBz}y$&xxd>Md~| zlX%e+LT;xsl5pPb2qU;M9!L0H_z8+s( z>}m7>8x8p*ytswi8Tjv)LXoyzpNAI31|Zdg=3_({xIG&LinH~FsC~u=l2Vm!2*7@g z$lLP#Qu1zOxIrHb;=05g6Ijb*os*}IgE{6s+ghV4HpJj#Ul^#c&MYAW3DC^aZeg%^ zz7iqM!!`HmCtM~c*93Ek1f^w6#CR~KD`W-t4u3T%~lhAk<4eD z_{nDRa@FK1-TdVQf=V_N_eBFyewmU?Iz9?*n&THAZvB_0@T_#tGx}MAIX9F*5{-5) z%3*6Sh%^aF~-s4-F5yy?bxi|36;c4SVC-vN?RlJLf#Ryp2DCZ+NVqcU|Vny^; zlhp>Y)ki2xOgm2$o`9;vggik7(;vhiSHHv6rxe|v-Z3?bKetE%B^S%Q)DJcnw)Z<|e{Mw?rA(q4N7d~P>W9BroAdMG{J|+C<)R%iN z@~$J438Zk5Dv&78quMtnk-TT|{VnibDPfohC<}_9nzfjCmfPy`Fiu+;3?1+uhhBhzx9`%B>E{#3fLR77IAoT{9P*Fr38NWyS1pq5Yh7sHXeO zr?*=rw{Gs#rTI-lWbUY1hIekGsq&dx0oTQq16_cx=#0a2V)2_>Vj>0Su+U*Qlq0Cb zO*Q1{l0??~#JIAaL6r!3QvnO4gO4AqB|vfR*6Y3ToUg>}dSfgQ&Jj>0_Qbi)?b!4s_85S?E z=8e#yQIt-Qc9-z-M;zNJd+8hzvLvypE?EFfl;x+CVK6a$;8M4>Ow#jLl2*E;elyt1RMtxpJozBZ?;(T;kn}=3{nz^F|h*b=TQsv9q%Sjm$)8 zRM?>@z(AxIYbc0bwxwr?fKsFhF?tk*?p~pF)#>RMcBiEq9?|S`Y@{up1;)i<2FTc)NFe4swVcUJ7mL z^l9`J6~9MUCu&np9gtA@#QIv;GDMD1MdR+VklPEN#0q%E9d&b(z@hlQ3$6hN8$4c% z2f3wgI4iM2^w8n%G&5~gBB3nay2^y~e6GS+?W+QKZzL{RWaP{*?!J6?yimpbp zR5`(=$@|{<^?LnMt18EZxY#cuJ*pacCs+}3ub<>htC(tfiamE#DUWl#l*=U^x#9mjSI_Mdw z&8*+?8Ph#EsT;_FNeG%~^y1OeOg~$Qy)nIo^N}~%GxA;C6cP+8 z7+qD$jk5H^&g*u(4@V}iUGc_o!xk}H&8Em6z=sTNXA3+sf6(=q;Eh|q`{a+VsFd`D)65e!BNG?*Cm@UT&PHqPR#T?l5^iLhTke~33h$# z#3varvw{Ma540XmH(S%PTKTBJFsK}!U0+GxRXkOP!!EakaAdie8xq{B!d$Pg{y1E_ zrt;+Qw2m38E3aNPqijR=#8Md@2(6uK5J$6DesOt6%s>WxD!pb>bS+HY61L${E2|ZY z$5f&D;#zKkclwr~1<%SrL*C~6=zPkbH zPEc-rib)OHiZQDY5t~fuU2tA)a7k8{qp}%7|JH-afgz(OBaPECTD}b4Fl*;??8_fI zxOF74bgLHPb|jU)ATiT)5>VKrxRGm)y}BsKJH+Tc>pQCD-3b^`l5lR}D=!;`InXgJ zG3PwGfp@d4L93`}=^7cXgu^U4W~qc4e|abhm)28i<6pFtn$puZr=H%w_v{$W5LGbt z-4j>k4qBp6eiOlG8beZp#tr8qQ`gEb%bwt!6@O?5SB0;ND*tkFc!OY$8$VNmUFNHD zAhWB8EE3JV7$TBa4kg%RIbS&RH2lGfD*CQVz4BcL^JW*a@qQegj1=9DnN`c%*bBHq z(x_&>Yc>LTDuv-R}*9lxB?=)-NsPfy6NxWllVZv zcR3$r;lCa8%Yrd`#O#`*WbQIbLYlyInuDpWXU0AlBq8#AyJtw%v`g^nQyz9_s;NgJ zTw*lFG!a6`+1r$j{@Qsb$r5$__Y(Hc#_SAklZ4X`v_1+c+PR|#t2TT;WkCdAXT;9q z{#eRqLb|=+wGNyu^Kuljv#fxkDF;=ehp#G;hHX0aW!URq3BbLs%|eVTZ)RiVtikcx zTYVfHv8K{WTWfMETqKp_=3P8_aGN7tUPluJ7288}H}#8xr%DQj#JemPhKkjQg*m%r zHc)MUkI+!E%4@GQ4j2Xzq7j^wp~1Ft%!UTTHDiX8QwqAf3_7OPwhiv`DtqSAAF^8d zHjdSW&Q@f?*fH^HpGm+j!gK1t2?x+}B2~an+rRCtb%-#GRPJ|#amkt8X3AU6wGCE0 zz|pjc%*^A2*LWU?PD!zo^9gwmt6RGeA6G4m-g~Z zJ3DuRbhBOkN9$dw?`q)%Y^lJm2siakBg<0=SRjyxXcQ3KDaB|#vnc4VvCMt{DH?YB z*m+!pFM5c>u-iJ&rMrg?G&%Xooj&^!qdh}sYUT?qWGDYed2>UADV#GJ9|K_~i=p}s z&r4$$50WWj>&IU$GgR$P6$kg|kUyCf+r#$M3Ul*WXI7;b?$28vZ=cp%f2mod5L+-$ zt@z+zUE99dL;tiW*89zKBI9*5OID|6_*GBJbiy=F`V&z>d#ZD_!!g!6M6yfu=Xx~- zaX#pq^_VCZ4mvTbDz3Nra%AVR$igwoYt34Y)%EXJNMho_Q(wB#MQ*~QIone(-r9X$^2F_G1+Lz zOIMiC;+J<)`np!Kv=+Q-q=QE6y!!d`iv;z}1NbDY4tqE0$nhG)U~yii60QVH(kTae z)X(0~zty=#w3#Yia$I(8D?DNky(h`Y+@9+e_H6N(rfww4z(?+IzCH`& z8|=&>T26<07bEj{a)6FCpz!qp1=RKQ-8MfOl{Rskp-E5Hw}=<+j++jlgmkoV=a@*? z{ae+gy;M+V$EkQ-q+II>U3-}7{r-^>wqNpJ?aZ)w$V5d?M9OSwlUd7F5l|H$kQA7d z5z$;3uORvt=WPV5~7ky@>A_RJ~+XupeePlP+XQ6ypJ(^9dkBxZj7Q{e+R`I~GM1gyii1+=< zE;&w#Nf1~EUjws@39ezvq<(fF?$U3t;hqRJ(SS;NWFYkG>0L=wUxxJc8=oqXNYmD$lfmK|a4$G0h*G@JHvTjYosH;q!yH!|)|_#D*<}=<*NIg2ZsgWiY(3(6)aFM5apz0Z2C<*8*CkWo}@R~6bE%Q`D@ZM zk4vgUE7CWk#Brl=Q_DP4#=D$$ei;E>0w%gbt_fY1>}3<>)ClhjJ+iwRe>_}0#=Du# z&F$-8;QRbVLOh=$k++)%msH`U?w&D*; z#ML|+iB`BoMu`LOx;>wG2l^-t&n~t-*8SMAcO>T$4*xU%X^XB^sR^oG^_%Dft;bHP zOeeDEJ`pkMbkD7?H)YYue+~3eBigAzL|u=K+jjl7RfBHcjfruf8&8Im(i=PMdo$4VBaN{~ zCx$O;{g%(dPR;=lv`PjiAM^)v5nIAxrq!CQeK|m^L_Bt=jbXZ9JZV0)ZafB>|Le0Tnp2|aO7<&ZP?bwJYNtJ;Yl~A zhg7f@_n0|tcqt!YdP(x*j!_QTNbu&dZ6k1_<0fc=k8~X&6xEZSbW#ywaK4lA85LV#4Gp)Fd!u4x@pj0@tVyO z1#v8s$#0rk`G_V(`+lN9-ZMxego?GIkYu^CEmAfLW_B=qVa!R=!6p8TEE94C=e9&0bE zfjv|Q2Xf<}4d{*Irvl6u?%f9mfwxWbZaiIXTeO;q&r` zcluf`%iJdKT~T`lEyZZiRM9(E>YY`lUe4H|>?Awuy4Mqt$nlKbomYFR)c!EIFUhlY z?92=+&z{0;z3ut~=vl9x^WpL5Ernv6z*?N3ExRnTBx7Oi)AK%flNNV8N9t^SW*3cd zxjcTTa-iAx2PNcPVR~8g9I@s53j=POMt$ESh&IF?FoDz1RU9qGm zp$n&v<4b;3IIZ%!#qn%U3yHkX!LP7TYK}4g-Dc=IdhW*)n;zWqIIG?i{-^uRD4Vs_ zv5TL2ZPt~wP!@8BnVC{eVg;B2Rw>#(kI&;iO0s$azbyH=Zeh@Ri4X}X5E}Whb-kEF zY`pG}G49)3vh?Ua3a75Nb?W?2H^%B0_>3XZ66@z>gV}gTflqkg@+rD7j5tMEpDUou zTimC+u_ijzRDZlPU@_kCn0Zlc){J5Flk*V8zDirubIKOZcia*o>R$L*T3AOUWGU*` zS~SM-jwiP1T=+D%4yg#_VdA6-=EFQDACbF7is=h!Ew+AG45q_0S4?mXKe=yB+Y$lC zVT0Dv@eE(CJ!BS6Y80tG1XTk6`lbFk?M5p|@+m$mz4*iod3y;{b$6;eUn!hP7B|vs zTv%V49&XwF5b2its?Ni&9$H#psV^0nF-bNCzPSll-+XT^tL0I+ceyvA<;FAcMNSY# z^x|XGB>M`~xvbGnA7kab=r}TOCQ-eMmpO)g1ew@SEo${(5zbOEDmG`xw%uq^w==M$ zupaI(Pxw_G%zaqAYdt8~9x3#Rg^m<^wx7SvSS!QJLMIKZHIv`YLriIRKss&MLB zoj#Q(qHXA016Idq?415?S~owlbHDKoF(a2{WZWHCzV?Q4;wQCB0!qxsu_y7SH3Kx9 z%fxTDE^1*t1;er3u^H+Fn6T`$gpBweKRz#&mEA4@nE=@Ja`! z33SHVQvu@5=dRTqK|7+UjY}_Y(Awtg<&M!i+FgnZlp2-O9GVzNrw=7MRVwLg35FI4 z`A0dQFQfHATl@DsucjSpc%^TLeB-l3@6!-c+ryps@a2GWl7~q&u;%&(=viXdyA;NwV{~1%hKhtqM`!aioa>yi1T! zbUI@7IUYAxi?V*GmTiU36q^yz&?Q55yy8N~j7duAm4egIL^kq~JUiP}kKhHyY@O4V z5n{0t;nE1${e4O5J!!PHTveEE)2*_V=*uO26jgIDRT`Yf{>Y|z^Ply!GJS;0Tn@toX^)G2?ujLI z&WSDrh4-Lh-{RM`E*F%IfXWM1xYWgJ-R2==>-g`*7i_f<|_?jeE4`p(!hQs2$WAvbwyoXvGeZYo?jE8?mKq0LE zMDJdSOt=2WCpZY);xj|&N!HoigNBKQltg#EYfVZc6H>$Zl9jM8d1GhZl8zFNtmcz@ zSEL(!L8@htqArNCPBct<)@1q_Q%veX=ofi1$5%($lujN>Hhrn`B=GmtEI69v4?IeO zoYI|(yKUMpmy{D(w!8Y;b3}?B7j#MD8S>UGDwsoQ?zr1F=f;TXb*aMO zOGjh#F`U;fLJf~Ico1)2FP5aUw(`+%X0D@<7{TPFy96YhdihkQqOLFE_;bj2CdKCQ z_Cke;rE4Qk7#MD)h%{XAh6cZUO2Wg?iW&i8dWSc2C>Ry|ecy zZ7%*5UccNRz7Bk>@^;6(?B^rYJNG`1nmu%8zvfDsY}A==Y42QF>bVmucjSO#FgY7} zkE1dZ>LbhAtr||-k699&LKuMxZ7Ei5(I zA>&Kpps^8dTKzAgmZ}EKvh0$8XMiqN_&Zyq~yxfZVyZZ4kyrNLpkro)Q0JKYz4;Ybc;t>`ZIOlr-N-K*ysIzfaF zjp6b{yPe}R1)vHwmQcv4FL%R)v%ht;y z@M%87JZNboXvN^zyC;8fkRDEhB)Jjsg->{Ayc+g3u0;UN&=nECcJ#Ad&mm6iPvZ(7 zU+TFc*&CQd_Yi(+kVY4x&DCAl-|J6mYX!tBu1zkD%9|RvuwvZl)KAfV2Ue**i!#=&9_-$``#W5vVgy9+HoaGyPHd9raF)M?IZxp4+*pSrzcIDSYW z3B*%)V;A@RFdj{}ulWm>5-}|#sywtW*hpNs6X;=}@_OAmwe z{UdE9L!;E3gq7RvPfc_4FL4J7PGm5IGxJpa6Pc(z`nj#KFIB{MCnNo`D`=W%yW0oD z4GyPcGM?*RL@!XK^QoA(RKnetvG?A=e0gwgQr zUD_z%=MNT1MMX_qqjn#kP|1TDHocP%IvBy7pf3p#2r^P=TvAV8znW;bVWE7!;sNZXS^rcii$-?UzKgWay^?W zLw=O`R9Q1trVxAZRtnAei2Ae72N|+>l(Gl04$$T~NSyN1b@y;@?Bn6L1NB!4nlTUG z3t3N{C)9r!S*p8Y@TYlQSo17yJ~Jpf52r`x25ushr)le6ZrBvmJLXuT;825rZv0*| zu3KFB&CND&ms7AKUt$?i5Z<=~-GhBBRav{x>c*Bw@`k3B{Z^vD)WY!;)3GQhUcBuC zA-=*xBBG3)Peo4;DEK{@V8_EvObib!RJGBjJ`&zHSH+`EC~}BilZrQPw_<8M4j&Ph zAC+~Dl}fY1+qv6g&v=UD8xvxOTclWOYrDNYoaLJGqRCu`f6u*en-??asFJ=hZuf;h6*Sc<_w@_`7s>N)~BDg zB7eL?2zs)(;D=(`a3iSoIV`Vxnl|Y$bJlQM-UvxzHt39+v2 zLx0PH4tTd^ALob%T21fxHl;^QhCMCZI<4I}Pmiu_b4LxUvv zOBwwiNA5-3?`e2oTjrIT+R2Bs?5?I}Bk_(?@yJ+mXsw)^J zEf<9~DvxE<*ZwWYw;HwQJ4ngi%JW9O)=H0*Tpyz)#2{KrKc2Wduq}3Dmg16wV?KXd zgC7Z-;S6U=9qsN+Em6g;oG|gH;6e9C+HXWj*^87uU+d4!^*^k0ZURRv(Y{{3I#^*& ze0EhyHFX2OM_jR)Z|SNlP{vyF5MJItEt)6;~5Z=7;-LC zF}sq*0H2FiaWPhay7W$47|1i=gYp8wF&d1C6GpcLW_mC|TJ`$({sHF;$@cg&8en)7 zDbJDIX>-YGtlEL#LI5VyIX7e-w)V;f!h2w1^k13`7dwu@Wh@U$%HZbu2+bMWE4W^Y7`O2$Z|9|&TDVGzKQL&A zEs{$3(-L73H9ra7^+`cYFYZjnO4xt1RqspJ$Y~e=2g?s|>y}-kAusB&`oKabr>2okW^e zj;--9L}CVskPRMvZ6=$uxC3`v1x+sDUNCP~eB(Ce++u%aF%IsmEE1+}dm?xKsmZ8O z9qulQmXRsWF`pAAwM2lv$V2VqVd`5F-Y>$L_K<^Q%MGEgW#ItCcIR8MZ z%gR8ut|wVy#2dpwV*~X?c5|$x)c#DWR)T#@zc|-k`?7zs(Ajr{d&Fp9J>(2j#p@w;fWAj@=H3U-MFn5i{}PXIF<4AlJf zE5&GPK(G70d}3eeljzzqfyug*zLhhK%vzJ~YpEjYiMzWAAJ?U5TQq~1IgyAjTXFb= z|9*`!Bh(u`Y;%nzD4FVGBoM;z8_lgoTL~yaSu#VZI;dPGK5ZHBb*1}<_^Pep+zk)_G_-4 zTs`H?=@PWInu3Rf9xt3SER{6TMT^T%cw%C4!uy*Psw|Vrq@bkYOlMDkvC<|vQYuEi zc(@4yk3E&wvvZkRt(VIpP@D*)MozY~?^D#(I*6ND(qYhIcjZw{XZ$h85c8DSo~iZP zKJ$zf+=j*s(!H2-K&f~iCoLmggp~VudqKbluL&h$m6jQ`0bZ#cK_Ug?BGi2NnYC*x zxJHNJh$(nyF%#SC9tS(Kf~6Gj%K<=v&Ei@cd|@yU{|76NGl0mfV7XMX)&um!{5d|y zNp~C~5CqOg>3;;9FXTAFZg>#@Qb10^R^cYs4of41nd>H2xIaubDNMnprsge&r-EI< zh7~RMgsrg7F|)hg zN>p8UQd^Cl|9Grq_tyh`HY1vL%}1XhmIr~%vh&Icu#uRHsP@DxQ6JQ_Z)QUQAK9Bv z+CmI7q7cULQ_WGL{2;A^+qPAt^6?P(%je?Pq4S7!$Fi?SBH{N{c{fQIs~YZ7#T|_3 z5n~HSWB-Af!1_}|DA|sHt<}^9->NvFs zxA{}ARSN4|uT1VQIA``dlimp%iWuCI2tr4??m?_6JQ^W_3D=9FHKR_#VfLCW_fAlB zKd&Tz5`4mE%;`B*p2&FXRW`iX015)!$20X z>YLb-52~01@SB0`cFf%M!y@m3*V6b1*ZPoOKO{u~kp-{UdYnZ!@*Sp7bFQ5>nwSll zok%nj)ee?$Gml7SbI&S$r@zDEk;q*_4uKn1!=yS(-h7{NJSGlDzSG4fb{1~=`9$t+ zsy5ZGVlQ7yqDr&NeEt>0k3$l3dn!gV{pVY6exPO$^~Xg}bK18WqUjU)v+pf z6{ois%>}Z1nq1BoDm9GNR^eZEXGITsOsy2Td#j|eXOj)kl?czOkGe?GP)0Q^`IsZ2 z?cLrfb9S1p1j*JwuI1zx0TNF}f_RF}!ah=l@kh%DsEdH2G3+M2b-0iSuCIzsV|Ar} zOstifJOm2hk|iUH2vYs)z`MRU9KLk%v5XuZVywypg!NgwQyWPE$R+v zQzH_baliy-yY-)JAnnNNNq4SJvwdLG(+BuI{{#X{sXv=_W-tc?e~KMEIjBu^VAp%S zwnD>bFSM?4-n_iv>=S9*i(pmBogBL9QsJEW)-6?gn_N!ObFnE@%(o4Oz zuzj^kyvdQ$reY*&_xq8l?5QD@`GL%b6&rcsv>w^znUPundF3F&o03@l%2wuE`c~gQ zv;)s&Ym7&ERl<=)>vDAkC74%e`2HMOpXxmaim40E+^=gfdf}LpnXX6pK84fNVj7XO zXU#=Mk>Z~#&xB9+@%ObEy{@S?Gt7I$H)6#fFidBm1-;e_FQ#Lr3DurLlrYIE=vIPE z1y~qpEB<8beAr%1NI!{gkn>Pbcm<9r(BFqgl`HRejVg%i8U9Cx;P+<|m}Uh)Dn)k3cFu-Un87nPZ&Ycn7Y)KfRPQMKz6Xr z>76T5MtLa!7g5;Cbdl2>Luu$j6nM0!X;G& zkft8~^f-`<+b+be;T+2yq_XW_OucP~JKYEk+z|PEzfcf^Mepka5Tv6L-W&WN|?j zhtNqFmg&D#W9^XsN1tZ|?P=`3M0J$4-#yp3#1R7#J(Hl*NYt4Mz1FWYs}TN*;B{9G zmCg=N2oDbj=aOYkpM-}X>2pXc4U+k8b5x>0mPu=u5l77>o`CY6cqT^mAr47hnGRJT zV9S~A4a{}e3n)=zv#U`0iLnJ$*rk4gK%0A&_1f_OCT%9ISHl2v?L3yc>7B1({mq2Z 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 diff --git a/Source/PabloDraw.Mac/Info.plist b/Source/PabloDraw/Info.plist similarity index 100% rename from Source/PabloDraw.Mac/Info.plist rename to Source/PabloDraw/Info.plist diff --git a/Source/PabloDraw.Mac/Startup.cs b/Source/PabloDraw/MacStyles.cs similarity index 93% rename from Source/PabloDraw.Mac/Startup.cs rename to Source/PabloDraw/MacStyles.cs index 5f49729..17983f8 100644 --- a/Source/PabloDraw.Mac/Startup.cs +++ b/Source/PabloDraw/MacStyles.cs @@ -1,3 +1,4 @@ +#if MAC using Eto; using Eto.Drawing; using Eto.Mac; @@ -26,18 +27,8 @@ namespace PabloDraw { - public static class Startup + public static class MacStyles { - static void Main(string[] args) - { - AddStyles(); - - var app = new Pablo.Interface.PabloApplication(new Eto.Mac.Platform()); - - //ApplicationHandler.Instance.AppDelegate = new AppDelegate(); - app.Run(); - } - enum NSActivityOptions : ulong { IdleDisplaySleepDisabled = (1 << 40), @@ -63,8 +54,10 @@ enum NSActivityOptions : ulong static NSObject activityToken; static NSString ActivityReason { get { return new NSString("networking"); } } - static void AddStyles() + public static void Apply() { + Style.Add(null, h => h.AppDelegate = new AppDelegate()); + Style.Add
(null, ctl => ctl.ClientChanged += (sender, e) => { if (NSProcessInfo.ProcessInfo.RespondsToSelector(Selector.FromHandle(selBeginActivity))) @@ -129,3 +122,5 @@ static void AddStyles() } } + +#endif \ No newline at end of file diff --git a/Source/PabloDraw.Mac/PabloDraw-Document.icns b/Source/PabloDraw/PabloDraw-Document.icns similarity index 100% rename from Source/PabloDraw.Mac/PabloDraw-Document.icns rename to Source/PabloDraw/PabloDraw-Document.icns diff --git a/Source/PabloDraw/PabloDraw-Document.ico b/Source/PabloDraw/PabloDraw-Document.ico new file mode 100644 index 0000000000000000000000000000000000000000..50f410f8c827e04e08591ff7b9b62f9cb19d5463 GIT binary patch literal 85182 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
}l4Oxc5b4zk#9$tuZFZaiNg|<^_U*wu}cIxc6BX zKO?-wJrR3_TH?J(?yVHZ{Z3{C$(UW7qw;2Q8qz1UNKkO>~ z|FT;L<2m@VE`6^wr5;E;Ou?&ULE=D_0TnF}^NCG42U^i?Xvv;b1p~_7BNaUmIU;+| z6bvZF32nFsT6@NV&OQd{=D!*}xkqNda2tFO#rqyPFk}6 zNYa8Q^gtyykk=@*;#i?IV?sN3J#_NY#~a)ivq!)h^x>XpLn7@kI?e@CH+o`zdLZ;R zMZ%nWhPZ6az%&Nrx|Fe1hPv-p3XwLtB5aWRX zk@P=v0F7XK^q>ZG4`3aN4AdOn%kO>hrMB{h9e7pgYgPY?|JM_y%nzQS1@c&7X@q-| z&cW*rTr0&MG|7}4h?pSvr#I$^Qas=uX`DA`%e6`!Id}ZJ7x&ZRUa7rG4RX{c1H87CzWxOVj~Ng-f)o=t zZj^FFG9Y@>j-5K8_IX%Noo&hbVoTPRTC)F0p$Ci!A}+A+MA?t3951$FOlZs8umj^j z7Y}{Bj@6JytN{??oG_`z7cDVlYiBpAj$v2T#XfJJf?ym|dQGXFDU{=bs@H)?O9 z|1;=+?&CL_dpLf;9B?3Wz`l$D8jJxwnFsdZSU|}@2G@D1`@N$o3em}F6*@U`zgGu6 znl3uBzS}_&EY|Q=Ywe9-UZ=ZpN72jMsBB*{9NYK&c7JXE8Pq^9HI6Pzz@H+o^pX#QE#RJrP^5 zwj?-c$sV-FdceFu?2o6+3m6w(V?SzZ?v>e|aiBBz$?fK001Y1#Y5#1om-d9{b(qDy z)t96Oa7td&$TH z_mXPIe7l_;9V8B=<)^UHzJqpAg9}gcqkoJcZ`*J?dp1=m|cWBNv3Q~`-=mQXS zVAg@8UJ)@Dteg*2K8xH>$^jK~1A-mpT)@@Km#ICM6gouTUJ~{X&XFC@V++=r6%43y zAhbX*AaX=SOn8lY(3%Xib6SSZE-TQDdnWhvHs(IsW*8b`i*b=o(A?mGCCLFWFtMd&PBjdu*Nf|B`X9*p9+H z9$P0*W9|zs%m}@>fA|-VzQN!A_BYA?{`bG*fBxrxp4;|azrg)xsWlFat-|bhjjiRL zq`dZC6DE2=d0mR@Q}m8Yy`!R^ob@2Fcai8J3gWs6!Q#EUccotOJM5VheFCCRB<2al ze2Ew{iSIAYgE$`-B|C?D_O*%HQVaggMh@7A)`I;8(&vg^L@7sPA1yg(&3Mqxf%_{t z>!2I=%kIf@(a&!Uh6dTNU(XSmaqjHj^n)SyOJPwg4k_aaPd6-uWIB$ z;cxnyu~_)}2K8B-k2|+-OKWMw+U%OsM>vmVg|77D8-dp77R)|J+MA)al64Q`oCB?g zZ13>(p0a81StG;-Th1TFAMqH=^VZ$XfX1AP{r+NK>NmJY@f+Nix-0jkew}+2cX6WT z(mIlr4&0z+Vi-$h%yY` zzW>QReD?4GzT_VK-}1ct@WT)I`RAXdYjz^XDeuO+p%1Mut=|SW^k)t$?7cWw4B&lX z1~8`?5aU8yhXIUl1EQTVAj*kj6DJsP?fW0`$U0n)-rgp7*LyX3dC{mb8oaJFxHo-I zp5LDC26%^j^dKK^laKD?L)csE_3$Q5_~GIwA3kv?N-Yw)^jCi0ANjq%{q|dli_acD zl=MQZE&PzzL^S;%^&5%aGo=o&7qNvf6%NEWLFiIj>Qg5&DEJh|)sM&iL4YO3h1z2# z_gvRb^noGoy&y$uH^laxp%t(dw-X54nT`zfNAUj8qXYH1Y^Ju zYQTUvFZ7LZmo%Uk=Ys?T8e&W+ast|Z#(-P&x9E=->&8Va7BN`qYjIut_kaJlq{~m7 zApQ`3cn983gt{nYz; zuEqy`78n;|hnZ39dEW*4pFXr@PQQxx;8MnY<+COI@5}m+GwZ*Wj9mtt16al}z+C2l z)47-Tc;)~jlY@BQHSS5oJg}e805b5dFz)UCZX9g`@1vLCjrfE0ytl@ec=YHIe){Pr z{Qd8Ld#10Sb#CrI`U^&LzH$`r{WdCt_wGy&z{oUz-sjH`Bgn%D@-Un%3?~c2$igsk zFq9k&B?lh}4yX?id#j%Hr=R;ZYmSxru{WcyFu{Tk=hmpJ&tyU7K`^1TVL{f<{h7)) z2qtuMA~?Up`5=z*#9k%M#ky3nCQYnM;v9h#2N(-lk&$-XJ6r6d{f46s-dVp2{XL8& z|BvT9t!AVP7E`wkxp$^*PAv4F;eV@?82GXNyN?gmETwO*`P8DV|mZV zF@y@hd4b812#rICR?vXz}ap!T6`zj6xQyp7P++kp8k?|H*{ zUNPU>l5>C3KKNo@komt9|Ed3-xqp5)`oAZ868m$n?V-LF7|%WTh5wgu>~2K=trh+c zf8zR=<^XlWyjdGAgA3O*SkwPT90TYu2VB4$K$Ds=nHn%QE0XtD<$X-DBQa=G6b9x; zV^Hx14B>rwhiy&9NcNeHp^c~A_{$e+fA4KKFJSzpaE!|dl{gqn4#x1lfTKB&Jz8d9 z6!l;v^+#f-am)z?17jH%#xO37kvJd=)PhmW6Gl-FMp6$(a-M4hXnDx-l3YYe% z7yHx;Ysy317q>s>^ZU{I()!TeWsUD0-UF|DfT^@E*&D3;3G2ptq`mFSJcVPw!92#1 zLAIF8d3r65)s``4uVx>=1N}eQzHx6L;d{ydQ@E#ZP#yP}XAWS;9#He@LKxN*K!^9{ z)#iPf=Wz|;9Ihjp)lka)=}Wjjc`^5=E`%o6m(8j#!0h^b?oF77**j?4bFrkpuqj^~ z!OR0EGL}rp<$cX3l@9z_8CDnZU zN7!;4WX~Mf0mFIk%<;^JXL9Vnkhz~89&eHRc>lSE z8n`x8!+w7aEDzPf^w0Vjk~JGv$*{Q>m-fKX~un2l8D6Sdx<(T*4q zw+>?xTrn}p6VuXsId>a~MLbt4m`9rMKGSvuiSVSR_ttH^zo_uN)c^JRf=SqT`Vb<| z9OOMF4)Y##N8xsv_bI=45H{!b!Tii_tUg%}{bSpqd!z=-xUYcrfvs4$ZwnSQkOS(1 z;9%Y^a=`Uwf`MrMou)iiRApf@`&K6B$I!S3uEaqECQ=V3FeXf(7AQFwM-Il3gR$gb zEIAlMJ9D@ ztl6>eGdl#!^P@P9i--BvR5(;;!;`&VAv;RYdEVnS0QA42|C4Kf@;|(SjJsEm_|YXq z-ad!G8>irT^%&M&I)t_7_whcJdtgikR*?Z6GO$EqpqvbpDL9bypoDvs7c*Xv18Tu{ zfBRYO^O$&gKi9Nxpv7TIVJxPwk8v^?m_#j@v`N9iMD{jK5PHCvFrIqwGzX_Xxuf>y zzbJ3K$6R_KV}M{_kT5bZi2ff;|G!WFkD&j@(*KiK>z|q8gZUgYEobgz$lTm=YYLod za^TIiAL08dk#wXEf0pO`W#4NE{TCLte>;jE+(zan*O7SlG9t)802y$1l?(_iSR^>uy9EoW1q-MJ^Qi^9?%!7XG~WFBb4)Kyz%(*E zjo)QzAvvHPOp){;iYzENn8cVMIG9KdCNM4t4#o>T;C_vPdn?uc{1@qsOF70K#Bs9P?(ObpWj9Pr?-%L?;2u1yolgiXW(`H1lC38CWJWu$Wq~_&_gdDJkb(+uv zaxj&-f#6^Y``RW`4Qz>HopP z{}Kbdha&wyES!B_?DLtxd9P_4_h@lkyp-30KF^Q&<|H^XhWgeOA&S?2+Oc|ACWR?| zFRlNO{V$CHmWFwu`pbJLe)u6W@83W?H6Z-XdHCHt1=nlG;Bfg6tS;<_>DfInJhc-m znHTCD7Yx*3>0yNyEMacAm|CDsEzqVGEFuRFfBa7EQ@HiUIn3OWgqfQ+HgYhX984z% z)5yUz>cLdz22&UprU(ug7ba5=1P7CN9wzcyDCK>BU-pL>Zw#UThj1J^g#I5A%=>Dw z<~5T05sqX1V>0U_GdcF1&-`b3b~uc9ZmikwE7p7j)R!P`e>Jj?@5Taed!_$X*MCVl zU_XO}*#6ahY^Da}Jh+7s&rF$dP= zcQ+}D$J(+qc+}(~WY=aS9^8i9lMU?iZ|wc{6W6|Y$aw%-%@~ei&YP7}1M(lHiV*zo=7B;y8asya(oT+`E+Xr24s0FfUGIFHZ)%YYPyuXDd=T zpOUnZ=e1Os~1ffdXNL_E+rwvD+VIbcjsa&YInzo>l*4}bb0v^eKDry}h!2U{L< zph-QLNd{&xCd}YiL2xjg@lWD_=VI!nNQ51%Rr~W_q&H5CbY@?NHHNddXH=Ly#9McLtm@V{xdCn{{pvjmp zlVgRM94pLZ{F}ktU^;We>C6!q6elnb{HaOD@FKj~yDAsM*w-^6gx7w!113f}V|tt$ z<|KMUJC%L@+*8PuecpCkQn}V=6GG}sk-*r$iLrmCi-pqvjj>*afv%V{JX*_nL*A2sd^F{ecIg=A)nt=_Ozw3{4l2^2C37&Rj2ti~%w|lO#afi$ zK$Ci)Nj*?eHr{3Ktg$Jc;$ISa1y za4Jh@KX)D?c9kK8+E;jTFS;+Dru6?W_5h^+rFnp6Q{KmhLpxDJ4JiHU9Ul9&rd zGY$lQd zy#39WSg>sq_d3tU{OT;slR20xbD%{nm_sd?qvU{kFzYD}oR|mwCp;FgmuC#MU&MlG ztT)Yx_rjuNf9O*CS96}%wj>Gbnezs4pV`7@?)fbb_el{1L2=sMZn#Q@ci%`){y}_GGIjp%&r{5YKeh;5(7dD z^vQt83sy2Fh;gDGwIKP{xh9?dHQd8&VeKYzkb?y(9L!^GFqgT(T;_;Ra8SAtvr7~l z%#!us!FS)NeGH$no^*!uiNa1R?H>RC-tAx7$G32rc1qRm-oz={)IJElF=l5O##8&J zM6Hv0JLggRm!<}>?ic~{{0-c{Ar+p~elc&HxUU*w?m*kuQR(|2-wMy8>S_;Kp3Qi43g0aU7P61#6fSuD)~t#+)B8 z6gdI4z<}cei32fL!2ECxW5D<91yc7>#rf$)tS>HNeQ_bR;4uf8n9rCnPngWXT*d?~ z=7@8c8_Z!`5FE^A4v@?_Wpy7nzIcGisR3LM;m@_z+z*eMJ28oS?y>GXfn)CptT|3# z9yXr2`1lR(+%v&VVX@qkhu5iO)axH@9o&wbL-oI@{Ynj>|D_lpG$3qeC3ZX#8t^Id83)q8_z3YF z4@8iGzb`d1B*>`xy`Rk%I;pp4$Th#sqz8fj+fh{}-RA zd;0P4hwreMH3e1QjQT6R-C}AAP`RZdNfBqq2AKXOf{cG?e10G~x-G^skPX=trfW>v{ zz}3SrVNRgXf_+kMXhba#<3s~q|FKPs0b%D3NWBG%>k6@Whk^rbGO&nxu#k0*g@Oa- z1`DVKf`j=g9L%L2Xi*Cef1-X(B9Zs-nU)@mshp3WDswP}dN7%KFqwKVd7}>|2@@Pp z4<=F%CX#~*)Po6}qY)g8CkHmv=%zf%P9KC8Z=ini2yV?%%<(UB$fj zU9rT$lDYzNkcY+81MS*ea*%^X)C0l6!pf&OC`-jW=7@oZx2t{XZ+`gz(^*@X&f3B> z&b3TS4`QvIdv8+@rjmmxcM2j1;N22>VcAjiPVD$)Po7+;L%S%s(l;}zWJJa zGBf8FabH~fxpA;7PUikCSqQ2vLfmfVeTV9hSXUt1 zH-_yfgL<+ zIaXM}m{52{{bPvaczP!1lxMQGFq5@L!NH6SYJ$Xqf`e()gK5-*smu?iGCvR;OkrFQ znlPDhL2%$vli#HCu$TI5$X;BF{CGH&aBmmJeZ{q3j?9BQkj_3X;X`pP3!gsi=U@Ao zzuSQ()r1Y>L$LdYuTet=Ha~iZTr!YO1`^0X6d4F61Af#24>I8LF&X&i9M;~U4lpOM zWKLi%X~7X`d|)c(ix?A37!yAKtNPmaA=e1#?%RqLWI%`YMIFJxt`aO~OjyRgL&3pP z<_1d`6PCyvEG7rq)PhCSf?%<7BPKKF<2-oPx*DQmK?N|UuVP4;^V4rVeg%pe0Z z7!#%oV_cZ7! z;G*=s@MVWz^Y^n}=kNQ`$j=y5GGD4E1C`7Liobn`oNw+UHjN`;Lj0r{TF=)!e?l|X{_LW0-ZyE20z6C4xkORg9 z9ma&^j0u8+Wy}o(2TNrRmM}M1%-moxInX8t7rwZ!_94vSobqhe7G{%!S>#|A^+1y` zL6ce_IG9O2m`Mg^FfPpCysVOgY1D&hG6z$s2ivclR{I#l8*{1gPR#kdDmmA?y#(=l zDv`ywpTRy(;XC0&;mc?F__to;dm1&sC?OOLKYfGRAHG7_cb}txI*>&MlE^?D83_OU zHUeb^+{wVYk1tXO&O^b#X)WlnB1O~Juz!2$JP7UO~@ z^*~d}0X0FvLZE_$lmJYp9taM+I7io%#|5r2bg#%kAag!3-cQ|Mi-Kbf&kAFcm8Q4q)^2k628Q4e$V#q)k83=fIQ_=zVPp-h_9vQex2AC7r zDC2>w1r}t${Mr#*`(FLIxX*w39{Pu>vFachI8Z?jwn`l6kpW%C1c?L21Rcf%9qNG& zW5RMWu#8$DalqW*;SZ10KJ^t>&tPsr9OkmeRExERIjlGTf&=QoESUpMi2-sT>%k1h zg&8sjP3=#L;~Z}Ub$=u4yW$?RG3?(LJ`=tZK2-Yid7t@Sp#gWq->V9C5d^q4f| z5q#+g^jTxpKUjrTWMCD04OUVMRx&2&F(&9TCg?IItRM#~1P9cD<%|h}1M9uzP5Eft zVsGL+_E^kit!*yrjDi6z>VcN52Xhz~gdWV6^+0eii?KnIaY2*g1;K%Wg#grXomo>J zVx8Is&h=za_lr;N!*oYerSFCBo-6J@%?RJGE&Shn>IaC~w;c^Xe~ay8p!|m~QA7rE z9z8%R8Hkq|2<7}hz-Kq1VBjiTJ|P3l3+)*X)^fhkMvM`e8;WtFm_KgH;{eBzhFp_i zz#6jwwLqU*pwF1FiZNl8k^`X!f`eUxgJN=^(1OS_`OF-&F5T?Z(*9` zE8#QYyQlrB&d>Zi4dU-<=*-40)`oYJfo)`hv4d5jBlsRwfz7qplk zXg$q=hz$}8yssMb#HPl8vNMNJaC8rPKEBuEFKYbi_+Gq+zHh7x=tcVCz~8>ZPBKva z(_gTK3>19-IkLz=^0%ML4BS;P@cAwHkO2>l4c0RrI5QqN%JD#Gfi3fbRL&(f<&nX@ zlGVp|!1&m9azF;yYoOqu3I>uMkOOMLD%K8HHk4r{wO}PT^N(L5pA2NGGVnDS`0_&pFfWuCcyJA_WMG}h z38)43a&9QJ;D`VIyV?j`{q`$_b3Q2S>T!f!IfhWKTMFgc)6k1Y5W@9GAr}rI`20Zx zvu+T4_5gy;?nBU-y=s4+>KiY7_6ZiV$5xwl1#Q-s1P6;$Igs^WKI6iCnS*&U2Xo1R zRyOb1%D6C>7JFcu>Ysk@|G)j|JqX_joff`&mJgfy8vm};AJAi&CTbtv#a=S7_I4`{DDGnAgE-WAi3&_9%>cM>O!8o6KFpn`|9`#^8Z2@g1>$XjK zEcUQd`u@C6z8Oc4vnKr|T$V@?pnoWPGcftQpM zsKf(mK_qL+FXKb_e<^E>qNXf3Si<_!VrqdfZN>%d5``WtVq9264i+joV16K2SV#^Q z@p*B69F}q%ah$y(>O694E0n$$zR_r^pMUH9{QJf<>GLd7V{qti-(wFM*iId&kaZwm zW*~)QgM@GIBbs?(I2j107Wh#Mygy@3AjJb&3&_BifB&mGU;W?uo(9ezEoV((8RwIi zvA!fYSjwIQ!NC&7g~il@#exII1#R|YFJkY2WQFn2rY$B9OZnPznlAr6g*}?j`#5{! ziqiMu+4#47_ecF3KPOf&AjX8@^_40NJVM3K-!K+@4Z%Pb<3TFpfnXr!n|p|0P9PWv z_<}ishzAelc)+}%o_z){+au}hLFll?sKeTl;9xl!SjHNoFu}o6#s$H_62=9=!D8yc z67Em7R5l&{tjpI|a$Sc3f6saDvbVJ#<;MYEa>oAmp`v$kG4M7=ooKJhiQ2xEGn~c z?$h75XM*tku+__y*Zw~(=KmTC^nc^r;Jdn7sQBpmV+Q_41{e=ElYs&P;v-SDQx$a-ZNp>|5}dgACq_IUOtL zV_|x1~!PCfbk%lS`bVv2#~d4D{G4{%VR%lqN`X_ zSjl_pt=uj+$c3KZpk@SAu}wv0h!p_u||S{b&04AN_4r26_t}xU0|skrVEq4hROekbxp#$|e6_W1sP_JzgZ=E7_14kYZ79Jp}`Ym=B1t zVI3K${_7)bWlm5`2J)nw;0xx3kK=(fK45MbLM^!V^Y_2@)nAy`KYH{vjCOB^A?K0} zxIck`;D8M1?*Summ*(@f}RQ<@p~(X!<4*whunjy`wVxf$zs^PYS3yDzW% zVD7mTacDd0Z$5jSl8W!ex&F6a_e$R@pLslu9oxm|*;f15WI0aAn z-dK6wU!>EZalaP zN65f_GO$aG56OVY3CbGdfl>=NXZRiGi>L*c|N5`lTkm<95_=h$vCeG9egiYsna%cB z!koRx7W))t$!BYt4cS=BXM36>eeKNOTfe^w?!3;u>2rTx>p|RyDf}pVHR$&Q`aP9? z&pvk;g%^)u3-^7!$lAhFW4ssM_ewTo2E@38b3{X7lOBh?oZ~-021H(1N2_5@AmV{y zeDF1LSx3yG7NjvAR5CuiNRKam`T;SQ*|TzVJFJe>(ze0s@HSWE<|&0!uV5rkxaj5((k$Sd&%XKD8F_V z<(E#vD>p@TZbzKU7b@N>ef?|CJYF$Ba7Hj7Y?hl1>OQ|Gi37M`u{ffp1S?xBgt;D-|yBB-%56XYtie!xQBW&S^3}&lDOAd(wz(N;GUO`=l8>r zdtN%SR_u6oFC5P_!144RIGtjzEzSAlF07-u(AJ;W1y`Co&6DO$^F6s60rYjysRo47 zB2Vu_41FF?pC_F^gmmV2*_V!^;L1sq((e`Yd+lxRxyZejdoI&d_5HtePWO5I`aHi& z|BJDKh+k+ua|Ddzg0YYBK#UQUS|IX*YBEsHygE9Wcyb>r zPwrpge)BZkxv!xc_cL<6M!R|pu2+u2mA+s9zwLboR8?2@K8YGlOrj>5m`sc$n#7nG zjU};D)L3Kh6_g?f2!a#=0qISefPhL7P!Yw3g6(1NVnxLQYOK*fj3zTqe)IjmeR&Tb z_^>3-teN%CU2Ai>@1A?^Df^zX%ePPOCGCOpsoiisNjk9$F60N7<3c;&N}g~l+<`f? zA#f*olID`UN%Kg4ycfv*K`?C%!f104$^MQxxfk)L_9N-^0VEeOrrp`2SW(Pz{=x}t zV85>?ro)6F52bC?--@)A$@8@Fe|uWiM|8(BmMQ%G$@qbY+p`V(xi*w_fyfFrldA9m z$AaZt3y3Z$m3**-YlEbFHx*m6IPyUZZ4RTz2NC3haM~S)k`IE(2SMb60P=x9eUtoX zi|kA662UF-As=`Xzru^WFqga_m{y*|H1Z@bcocKaB`Lof;6Z-yAU}A}#?+HM z;dzRfxTp5Oi}obm}Qh+8{@AJP_Zs@LLxVNW;dxaa^vNMWS;q)7I2G}FYMIfR904QOI+$lvg{Zylf zUle)s0wQjlM>uhe1ji>bYuM)-*ys6I z&m*VkD9ob#A$8W&U)>h^|4V)NBFf5oi*0#{rX3m&>;|jE3O*2-fy@g9O@m_z%5Z1O=C$Ae`Y4>IVRx|Dp7LOxhRtb)b#Q%)jYK>~f17ZSHZa0}wd3$Yv% z7LXTW$P0pLB@{(|h$25kksqSS50T`DC?T!~qsSA{TocBSFBV)nfml);DV~%-N+K<$ z{i$G^rInmQ2K#z>X%SYkzjHXYue)*%8`QaWiF{m@pBvf0-;SBtTZSf{zyE+C(>qHQ-ykagl9 z%%cOV_q)_p>ij>uuY1w_CT*c^lS)3Q-@7AvJ6j=s?{@6G|C2H|2rm>oypL_<1F=ER z6Td|Af%v7Z<$fWDbA#v*R+1O8$P3FkCM+W_WRe#$I6nxM%~JA08ZnL1h;1eqhpD$p z6iOlXc`E%boXe~` zS4mfpMcm^o@XPg&Gs5f${|&@XI-Oq3NMHsii`^)zuEur0rrp=c99o$ z{QVwOzx|AD!#)Ra;5hNdA3|G%E!wfpmr z{?B%l{epZyg`_HN+^}C~bg&$!j13|AYbj4Vfdl`zkA38YJ>-Sm$VwwK?6N=*ek?<~88U8Kz8^eW&T; zhNh3@ImtumYo7K0P@(>dAF9xmmFwv>(AJtsfwiuAyGjCYxqhiK!N25EPtQy9gOXh9 zfdb{WUMJn)#)i3z{(Y1kOSed<^ zUURvw%wGM1(nsm*%Kd^z*Gdh%A6+Xid~~V2u(CGtyBDDKdObaZ$FH@DqZCN1I7)#^ zwex3zs$Umq-)8~6wXa#g>et%0S>P(gWr3?-S1CR#Q2n|}@mYbVU010dD_H%yv}*b4 zKJB`oYWiBwd+lBI`Inyey6WS9UHzw9;CcJ2disK@1%7V+DXsc^-KSkw=lAN@Py2qV z->?2XR==+PJy*X*)$%_+UU+LK;CND?ea-QvRQp=T_*A8WoMft0p!wtDVU-GSysT1S zj;B=$%uDS7P8pB23aE_NS_M?bbFBg?bDma#noE9K1u&3ntrsenk6x&}POC+f*J({C z>M6DI1!kxY~-Rwm~U(noSbb1;GW zb}Qa#M=~M3q^Hln|GtCkC(XJ{)>S1W)If4i(kSb$e_x57o-@lJWlkoQeK5KYdbn9) z(xPBk(Z6%<0orsPSPR!fq$BHT6S9%^0h=)+kNzIS05R~fL$mQptX)}8N*;z!f8&cu zA@3roME=};wi#y8-^^v}GT7v&(HDWfNE?$ddL#W3H_>N3pR|R(t19{{?OIAK9onoP zUPT)y+N&0AhV#DFFqmhD`rmbedD0I9=@D7YndU8 z^~N}#8H@#=>4%QX{Lo>AKRRRwqEk*Nx@?GmK|W(XY){0HT`7!HnhEp5)o?tu33HC+ zqHmasrXD%+t{2nV6}d3Kp)Ys;qO7~aRLokD089FGk7f+Aev5q3eIeu0$GPIm*xC3r z))60*n#Vb!*+M6LkTe_3l3ma|%^e>v^TMYq8S8UR5ZZ5?k8WES&t^vwhV5GllOx%1 zIJJ>>M;l?t{*ZUcJ6}W{m`}uOy*j`&#*aACaf~HGd?I4icAh^QUxwJBWso&K2((1g zKnpYuGRIrN7HAY|iAM9MqfwMK8pYb;?S=MeyvPafrnut$40klo^2Vn*{%Ery4Bu{H zY$n!Y#Qt=pKirD)VMVNdHBbF1J2#d+`Geucuw6VK=E>noyz_1$vluVa3Lkk*MN^N- zc*}hv-gKXU*F7c>cg+W$^uzI_?^P&mv^NsRMZSE1RszVclp|B-%>=K_-BF)KA1lNS;fEX)}l ze5}!8jtQF19*2grMxp+!5vb=l0v$pfu!AzJJ9mD3Zkk?@fe%-*Kh_4KLmp#esS+8( zIRmzZ^hG$l9?iyn_uO?5o{3qJh97U=LSRlBdIioxTMsidcN~wm?S`ZNj3KCN{XJf> z8H`u#hM?f&5hbmpe_qO^O-i$baGj{Z9yBisc1HHG#XkB#;fK7P{+JK>R6Db4@A3pR+VWr&phw>%S<1< zoje;&)92u$l|E>*HW&t*7huGW6wEld3Qnr!s9%BG_{49TW!G;vWmwtG8`q(s3#FIv z0n6UNVi4+1{SLKE`=B<@wWsw(ZS#I`Ube6@t>&5MJ=^6kMZ*MpytQ~1-c99rwR|qx ztPVoYP0`BSVRv8^%!zfO9+&iM`W{&RoGp8I;`;S#RcJ(nC+bb@huTwmqt=vOB%Vzw z>am)(g4NSM@AaYcr_ms01{%iMp;4j(-eF(pXL#bPRRJ)}jV4ZDGHtk5qx&2sPFjwx z^0VxQV>}#i?T4$6QS^otcx5WvTgohDpUgT4ne@gy#$VF)jQrNZ(-id_hAH3ptInhF zn%fv0ICETQ`frxZMFWnv4Hwv;(ZZQ{hvV%>OWo0KWdOe05JR7|)CxYLovoC$dL8(i z%5gymu3o+J7@aQ!K1h=`i-TmGY~!%P;k*Z`>XZ zjAv4O@jR|vE`5x?_OM_b`ai0}3P-Uyn8H^VH@Ai@f7#n|Be1V?un|V z_#X9aham6ZZk_1|GbZxuzEki8m%kNo-L9D|7)HP+fOe*SN78m$fddb5q zJ`i=L_CXzvRj+W&eZ`V>uo{H1alSg!N91Rt{@jUp-Dfi1@H4?1fm6{S)ErHtZ17p4 z3wosc)89T0*2LP7G7Aq0?|d-K7%th#7?l`;u3>K2cl;fDdQE*riiLg~mA4@CG=k8IVHotTE?(3McuJR3W-e^2?q|Ws6%)8zusP8cz^}Se+ zd8~)ODc%mTK=bIC=&;CxSc2iO+n9p)xvr72lf1jxnR0EGguz@VbP9Dr_=YT8IA8oi z=u4-`3Xj$1_afhZ9nKxEnDs+g&QhKEk4*~1Yc8Yl+MKbd?>Qc?drv|GUlY6+IvuSS zI59qgAEvF2M`!yfQhsleYC@hT)qjrwk5(P-`@d>CMfj?uF*EQN94+166_m%Fvb-1W;bnPZP}d;q=* zcZ0tFOxR{7;B3+97eXU~Tu^JQ0cwpSjW=LDSeHr0a8HfZng6uJAdXWNs!||Ha zNWAGf7VmqTqHWkr4B$H5me@#Ab|Lq5%NW-_o^dq-@l}L7KH_?_Rgfc!PM>-r9Xxs% z>6;l7Ve@*V=dV-Jp5ZeJvF>Nol(uONYL7FlsKeNvN!Sg3YMMd7~cZ z4H<9i*$>0(jwA67_ZqDOtkH*YJ}imrrj)giAvpHN#aP9gE z$5P>c`3~fJkTL3f@j0A5Q>4^I^S(B7rlPLJ0Mz4nTaWWbeY>G(>^v5&d@Nub;R>^q z`4#2w%J%2_X43LR#y1GV*9&~`Nw_QYgPkyq^Rbk-nBPHZ$tB#pc>`r-wAVkn8y|E3 z*fN59UeafbQ{F0U7Tkz+Qq!@7u`2b+*B{QAjApJA@xJqT?t{j{gBbV!{O3RM+i$<& z-o1Oc^W$y&!1ags@aSip_ zjKOHad7~Bku@~FcEGa}OyOiI16Mf9N&l;S)2!_NO>&6%cJvc`glf<@M*WtHkBf2s+ zMQ6q$_?EHZzhV4|j&YvIJhn$ya^<(c%`4%?coH$Hbrr;z64At%|ACn2x(;h%n6>of z+~sSA_kE_KxsMszGDdYj%37u;vHe+g8G~l8<(~WaZrIR|YRaK}B{ulrf@}=jwp{U{ z)0KDOt*husyu=<$L(!e}=*oI@VLb#d?L{3q^uKNGXN52L&9)1j$rz5V_?~MdQ^t=~ z+F!;`&R^d7jH6DQV6WoCus*Q^6B*lf#NKrnx|4B9Rav-2UqfAoV8Iws9%#szX8zJZmdV~6L4O1wJiPb)0_ZqDKK{p0lJbl={V_eF zQHKYy@7e{-K-X|b3?z@56EoAFco`%7lsFc$elYA{H36$=j~7iFZ4dhKSu>W5#1@pe z;}UOtHu*}|ar411j2pg4i5V{SkoeFNCw?&T_g+*?@a<=hp<|#ej2PQ*B=P-c65B0; znEYQ&9WL!}C~HvqK9*(D?`tt_O9SYi=ydT2EEp$G;-yN=WQmnrT0=|>@hcxhOsN5k zUnMbal~~uTNB*TET~+==zeya){)|;Og|P(P8AmKUZ>9JoD(hz{KkJcfkraU}`dCOT zQ1P#n*pKFn`6w|zCB|d=Ro%Gi+pk^1(7bdEVf+;(PA73wB{ruE@i259yGqX~aW<9s znz4+lDKRxAmL}VGM-BKmaRuv@SeP@2r7JPe#s#`b+dtaBupd68f9>iYuOgYY;Gy&d znRE3NY^5L0?Pr|2-EiV}q3gKMxj|x$jbIE3i7PdfF=Ujua>V?sDVAI>#(a>NU`CAp zBe9<({+Gl84A_#b>lKi>z$7IcZmX9ddTS0urm5i_X@5C*t@2#A9II%{x{!Vi0mM&q zC8oCEXj>K^RN`zMy?0k<{_*rdl$co(D{Cb2iliPA4`~s76?Glnsx?Y%BPGTe>tW1# zNKCUqj9*aGA@Qez+4dGue#*F0QR+v3r9RC^e@8o8+T_zlKZd@%zVz92VVnqw6(g~N zYKjYT`0kC0crV0rmzWL`(?jBUh)=DqLy6Hsd|f3ji^S%USS+lE#ADiBa#q(PI9OVY z*zN1^;fP+3wY{bmtV51%N-Q?f2PKWZ$x%`VVp+OgKLdNlxtPuP*fn9AJJOe2@aZQ? z%o>SPLM-}2w|~%CmP?#(zvnkDSn^6d0b)k?OJ+Jz`augn3EXb;_@# z4!oyN+|IJJGsGNV9a5wY#NF{DHm@7~W(A-90R1g=9hVt5@eE_JpZWO?ipqaP5zF|1 z-$qS`U}Fn5`e5op1P6N%`$Mp=C5~=Q$KQq;ie5us)84wyyg&4#G5u(de?`F?760I9 zVn_wh7g#VwQ~7QD+2g^(e<--FBZ${Hob^z!d|8j-oSViF!}ajBlE+@5#_D;Z{8m#R z)*+&o^K@*c9kTeor_rA+miRZp#6lBn)UrPjD_aV7h-)XoB^*OMLcyaPOd?oK}?>N34^X#4nkp#x(IDj*0KVtq41!!ouTw6wH#C z?d$QCiL$Q~Z`w>8F}R-=lc?D96xGJ(9kM^XZ!&M&Hvg z`kRK)r*uAjk0a@OynwpL1X2q1k1Oa~nq7PxUfHRTewKI0yEN~8(P!puNK$<|eh_BU z7JeiBY*gZV$!}vF{b{l}cdwvtT_*iy(#4mKYuYsW&n>0zTn7E-R)~Kb&l~6$mwoOy z>=#GllZtYyB<~kp-kS1L*CV+R``WU(4wS@)Ndl?Ak)#k1h1| z*j9EE%jv6|w7&qhi=xoeej4Oi=9B!NEVr)usO#d*v+9jLol2U}msl6cJxN27v@fKs zX=FqLqjEhlk1~*RxtI{~Tp)J1JbQ~pFwatOo)sGmWK=IkxkFO}<6Kg-X06}kLJ&ffAm9pxyH-?hqHD%V=|(bQ8@Z%sRB z+C|e&mF-rbZbwbKYT8-d?qa84qO&x+yrVYb~v|EyUl19=#OPlm*yieCe~Ncam?73j%izIGezB{ z$qvr(`?6qvWG!YNT!TrJH?*~zz_PS1lxLsi9lFx!b#A3E_4(Rr94wYb!gM9$F=T|o zD9s<8Q+?2$dat$_^UyBKADz}vMnj!;e--h%_h-W9*g9gmt;DykW=fk#Ub@~<({Fk` zJ|Ftlz;0z@Bj#cv+rz?2Z$6aBZT*b}W-TYkHsd@6u+i=sRmcIozNq4}9%MJs;(fjol{T z4YzSH;hKEep#tQdJb>I&2a!u#n35Ym;O^Z!mE=J?x3;u>=}nsvlY?2rx)NK9zIa-H zNEyXGWc6MZZ9^RKnJeE*+2(6DvJ}5jQI{VwS)ALZTP&hTa-ngq|Ua5$k3^m6rGmXL)4i*0L8SKko(U-ib%XW|8tUw2t?1Phy9Vml+Pa%n-qWOc(m9BB zN@BOrWU&)kWX?s`b@MS%l?qe#pYV0{K3|fv0zc5UKtsMOlNH^h#x9|e<>1PDnl#f> zBdEim4xjoY!)UiE_s?89Po2G`Vn5L&!2zG7dr}5HAC?8_=s0sy6<&C$YwN=J^((9B z&-1B^uF%WVCWShQTGR{W?cZ4?O%Lj$6k7t(2~n@L@8r=c_lGPE#+xDLiq8F=ID34N zHW!1|Mq~P#1jsw34ak%2T1_4TbJ|mhE<&4H&Yt{8ug)@fGghMZeX+r+V@4e`^$23O z~>i$27bwKB(zQpuSLTj@T(gw!LG$!*7bBFaA8< zS4hsMdi} zZ#9ZKFzx3SQU{{wJZFzo^qud_GermLI!!oFyg$qcAC2wLF>N8bQa|-^paY^duCCPY zY4m(gJ2x`vN8KOwe=J8Mvw@F2|FIkSi1uu+&KizJZsYMqkPSvtw$yw~U+DAwlb0o+ zYrG#?hB{+VLNHFBqHa%32dIne6*>pTA+9hArhX(j5?8NW!S!p8Y@w_cg;nV7_>I(_ zXpCUmgout-bZnxxGo}8yF2^s?*S+a50-t)DVQ8E;J{;9YdA~{4B6Lp-#%I)#>Qm3Y z>)2uH%C6$4yLa*6!2=9o?4i&3eYcKuLF@TWxb|~ZS{TncN$0|%EX0P@kGJgZc>FhyWOgHwM$a9|eNIS4i(HC{%JpTO> zf6QWRhYv^fMuR?`R0+fa@*u9<)Z>i9O})f$>Q+j)uhu@ii2K|tD+WfHv{z<1b`dk= zd5&x4chJ_~8a>&EQz%mlWDMB`eLE@ZHQyb%2qD&)9b+s{W*NpE&POV7iL{S>H!f3` zK%K}c+A~nb7(zVa=RIbxqAr3uZqd;@r;FWR#agkSk0X+Zwc~N+loIDzbOR2=RIGkX zpd5NI<*wCIVm$Tg#dQnej z#8}-1abB28nVwhWT{NB;0fJ8!#4<=6Y-`3nt}fRurHp7i zWke#&9?dus!IZ6NAA5;^)St10C62Vjk{7x4&1!K=b59+@aPL`C_bO}S27SL(#q*xT zM|OylGbhhA(BIkmnfD)>vIsxCJ+Pa~EFqluI#-D0SB_Nb z9pZ`G7fGx>i2)fzoX!AZt@%^-6-XU>7;U~|&K)ME9&z=KQP(?v9wZN4>ut?@o_3Zt zdvCBo;i!_C#pBGDtfuupciqng?do#B=a*mjq$!}=7$qurgaex2idq8soPqY2dX%l0F?@GqBz01*s`$BoPN@mqA`Z<^<_i?wzfQUKxe6Bf~ zxQxg9b4{>tXD&9J*pHIyS7{ISV-@P3ACGVIqcNWHi|;vqNt;#6R=FJFY#nj_(girt zPUJ%e+Hy`Gr1(25*t{CI=^IfKg)-*)d+F|IyDkJHcBWtu=SSMwR;h=y-B#N9%f2=- zF9)yEwqI=F#V_Gt(TOMSe-B?MQue#=COhM+>;R0RZT`2e3NE^#rXIa!Oeql?Frgyu z@fF*9*;{hou$lW!%{||oRK+%3?9z)aoU8nO7;S7DL|fxs_DzSZ08FIaHtiisB!A(r zt}{(>_WU_qE-g`LP^cSyD=0gVz2mZ^%HMrxQ>N@0xgMXlI;HaWsBJlljkVZUH(Th4 z-Ydh<+06oyH*KPlr_qi&O_f)<$6J)QhP*x#J!tzbw$hrtt9}1jS}>{jP15 zX~!l8DEmFJjcv}o-r%%g{B4ABNjr88OyF#%otcl`smQ~nO(zew! z#XpmvPs%w+O{|70_NKCD6PsMI@04dgnms|;D>ZZ)jc1n-=H?ZA=4Xl4fiuvLHY8t|4ns$qNhN|;YDqh^QQYS&rjAH+?4hkq zFRtkgX}cKkj5b=MIBpq6yTYFO;kITYOBxU8n!Jd%Jg&5}GT}Syh=Hzsm@?*3Kkn^@ z(GT|i!>7k>6dB`?cpuEAotNY--+&F}FAP+6HtjUW z(T-#^ZAj))x2ZWU{&ZWh7wN-&;SkDdwT~4C3!p#hJ7s)Oj}eAe^oI~kYKd>{!8Nw_ z`daWHS92dyRCZfC8zn}#*g_0o-0yvtAK7hYY{`|f8%o}q_gG@o?rzIho_xgND(|2r~< zRW#$6NZx~8X6T$>H1FX0DPm@NBC?6QckTZka{c)aT;{J)p z$9Nu9A%y#p_@ldE5gUv)lZWaow*FRv4OCw{nm~N1+Ivk$2cF*@*-Q1L^{=eS-x|=hun*<@MhRZ{f_}~) zC(!mgjk=CCAsDn{3GHVh&}4*RVfFR9Tsy^tlo@f2_c!MW9HSj@?BZG4c+<~SO(z)} zz0I0n+O93edt-W6+4DuDFDVpX#xGq>QJelZ(HpaL`Z|tU8;egey)isD9!-WADEoE2 zuB}Xto;t3~BbJGw$~^0{e35dUy?d*or--5*q|7rhjMdgK(n|638kpe2J$EY;*^i_Z z%U@#s%E za7}(NedpOL^K!v~y-J!f3I2-Q^YieTXk#@7U)$4Hg0ipmdw0;TpYtPqMKZQ+q}=tm zvQ9|K%~t$LY!gBiyZ>1FAc)-XZ|;-P+G;e~&zgpBlf&R$umSh)|AN!Een5NLx`*z1 zWZOGEGe(hf{Qmpziu|yR&vbmierm;ex^K`NSe@L7Nn8(Vj`19S1}=}*Tt0RVrhR$8 zcrO^ZSfbtZaVmexs!S;(I$T~cPOhbm?7%gN*j#c(dG;6D;TO`@s`$t2%5^czIBjVJ zzBC!8db?j|lYqiqaJ^PU4Bv|JUB>n?l&J(CEl|?m{G}Y + + + Windows + Mac + Linux + + - net47 WinExe PabloDraw.ico - DESKTOP PabloDraw PabloDraw - AnyCPU - True - - - - - + + + net5.0 + bin/$(Configuration)/generic + + + + net5.0-windows + win-x64 + True + + WINDOWS + true + + + net5.0 + linux-x64 + LINUX + + + net5.0 + osx-x64 + MAC + + + + $(DefineConstants);DESKTOP + + + + True + True + True + + + + + + + - - + - - - - + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/PabloDraw.Mac/PabloDraw.icns b/Source/PabloDraw/PabloDraw.icns similarity index 100% rename from Source/PabloDraw.Mac/PabloDraw.icns rename to Source/PabloDraw/PabloDraw.icns diff --git a/Source/PabloDraw/PabloDraw.sln b/Source/PabloDraw/PabloDraw.sln deleted file mode 100644 index bcf06c5..0000000 --- a/Source/PabloDraw/PabloDraw.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PabloDraw", "PabloDraw.csproj", "{9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Release|Any CPU = Release|Any CPU - Debug|Any CPU = Debug|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(MonoDevelopProperties) = preSolution - StartupItem = PabloDraw.csproj - EndGlobalSection -EndGlobal diff --git a/Source/PabloDraw/Program.cs b/Source/PabloDraw/Program.cs index a842d48..4a3273f 100644 --- a/Source/PabloDraw/Program.cs +++ b/Source/PabloDraw/Program.cs @@ -2,6 +2,10 @@ using Pablo; using Pablo.Network; using Eto; +using System.Text; +using Eto.Forms; +using Eto.Drawing; +using System.IO; namespace PabloDraw { @@ -10,91 +14,162 @@ public static class Program public static void Run() { - var command = new CommandLine(Environment.CommandLine); - - var platform = command.GetValue("platform", "p"); - //#if DEBUG - // use winforms by default on windows - if (platform == null && EtoEnvironment.Platform.IsWindows) - platform = "win"; - //#endif - if (!string.IsNullOrEmpty(platform)) + try { - try + AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionReporter; + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + + var command = new CommandLine(Environment.CommandLine); + + var platform = command.GetValue("platform", "p"); + +#if SPECIFY_PLATFORM + //#if DEBUG + // use winforms by default on windows + if (platform == null && EtoEnvironment.Platform.IsWindows) + platform = "win"; + //#endif + if (!string.IsNullOrEmpty(platform)) { - switch (platform.ToLowerInvariant()) + try + { + switch (platform.ToLowerInvariant()) + { + case "direct2d": + case "d2d": + Platform.Initialize(Platforms.Direct2D); + break; + case "gtk": + case "gtk2": + Platform.Initialize(Platforms.Gtk2); + break; + case "gtk3": + Platform.Initialize(Platforms.Gtk); + break; + case "winforms": + case "win": + Platform.Initialize(Platforms.WinForms); + break; + case "wpf": + Platform.Initialize(Platforms.Wpf); + break; + default: + throw new ArgumentOutOfRangeException("platform", platform, "Platform is not recognized. Must be one of (gtk|winforms|wpf)"); + } + } + catch (Exception ex) { - case "direct2d": - case "d2d": - Platform.Initialize(Platforms.Direct2D); - break; - case "gtk": - case "gtk2": - Platform.Initialize(Platforms.Gtk2); - break; - case "gtk3": - Platform.Initialize(Platforms.Gtk); - break; - case "winforms": - case "win": - Platform.Initialize(Platforms.WinForms); - break; - case "wpf": - Platform.Initialize(Platforms.Wpf); - break; - default: - throw new ArgumentOutOfRangeException("platform", platform, "Platform is not recognized. Must be one of (gtk|winforms|wpf)"); + Console.WriteLine("Error initializing platform: {0}", ex); } } - catch (Exception ex) +#elif WINDOWS + Platform.Initialize(new Eto.WinForms.Platform()); +#elif LINUX + Platform.Initialize(new Eto.GtkSharp.Platform()); +#elif MAC + Platform.Initialize(new Eto.Mac.Platform()); + MacStyles.Apply(); +#endif + + if (Platform.Detect.IsWinForms) { - Console.WriteLine("Error initializing platform: {0}", ex); + //Eto.WinForms.Forms.ApplicationHandler.BubbleMouseEvents = false; + } + if (EtoEnvironment.Platform.IsMono) + { + // enforce case insensitivity + Environment.SetEnvironmentVariable("MONO_IOMAP", "case"); } - } - if (Platform.Detect.IsWinForms) - { - //Eto.WinForms.Forms.ApplicationHandler.BubbleMouseEvents = false; - } - if (EtoEnvironment.Platform.IsLinux) - { - // enforce case insensitivity - Environment.SetEnvironmentVariable("MONO_IOMAP", "case"); - } + var app = new Pablo.Interface.PabloApplication(); - var app = new Pablo.Interface.PabloApplication(); + string fileName = command.GetValue("file", "f") ?? command.GenericCommand; + bool? editMode = null; - string fileName = command.GetValue("file", "f") ?? command.GenericCommand; + // if (string.IsNullOrEmpty(fileName)) + // { + // var activationArguments = AppDomain.CurrentDomain.SetupInformation.ActivationArguments; + // if (activationArguments != null) + // { + // var args = activationArguments.ActivationData; + // if (args != null && args.Length > 0) + // { + // if (!args[0].EndsWith(".application", StringComparison.InvariantCultureIgnoreCase)) + // fileName = args[0]; + // } + // } + // } + if (string.IsNullOrEmpty(fileName)) + { + fileName = command.GetValue("edit", "e"); + editMode = true; + } - if (string.IsNullOrEmpty(fileName)) - { - var activationArguments = AppDomain.CurrentDomain.SetupInformation.ActivationArguments; - if (activationArguments != null) + if (!string.IsNullOrEmpty(fileName)) { - var args = activationArguments.ActivationData; - if (args != null && args.Length > 0) + app.Initialized += delegate { - if (!args[0].EndsWith(".application", StringComparison.InvariantCultureIgnoreCase)) - fileName = args[0]; - } + //ClickOnceUpdate.CheckForUpdate (); + app.Main.LoadFile(fileName, true, editMode: editMode); + }; } + /* + else { + app.Initialized += delegate + { + ClickOnceUpdate.CheckForUpdate (); + }; + }*/ + app.Run(); } - if (!string.IsNullOrEmpty(fileName)) + catch (FileNotFoundException ex) { - app.Initialized += delegate - { - //ClickOnceUpdate.CheckForUpdate (); - app.Main.LoadFile(fileName, true); - }; + Console.WriteLine($"FileNotFound: {ex.FileName}"); + MessageBox.Show($"{ex.ToString()}"); + throw; } - /* - else { - app.Initialized += delegate - { - ClickOnceUpdate.CheckForUpdate (); - }; - }*/ - app.Run(); + } + + private static void UnhandledExceptionReporter(object sender, System.UnhandledExceptionEventArgs e) + { + if (Application.Instance == null) + ShowErrorDialog(e.ExceptionObject); + else + Application.Instance.Invoke(() => ShowErrorDialog(e.ExceptionObject)); + } + + static void ShowErrorDialog(object exceptionObject) + { + var dlg = new Dialog(); + dlg.Resizable = true; + dlg.Title = "Error"; + + var textArea = new TextArea { ReadOnly = true, Size = new Size(400, 300), Wrap = false }; + textArea.Text = Convert.ToString(exceptionObject); + + var quitButton = new Button { Text = "Quit" }; + quitButton.Click += (sender, e) => dlg.Close(); + + var copyButton = new Button { Text = "Copy to clipboard" }; + copyButton.Click += (sender, e) => new Clipboard().Text = textArea.Text; + + var reportButton = new Button { Text = "Report Issue" }; + reportButton.Click += (sender, e) => Application.Instance.Open("https://github.com/cwensley/pablodraw/issues/new/choose"); + + var label = new Label { Text = "PabloDraw encountered an error and will now close.\nPlease report this by copying the error below and pasting into an issue on GitHub.", TextAlignment = TextAlignment.Center }; + + var layout = new DynamicLayout { Padding = 10, Spacing = new Size(5, 5) }; + + layout.AddSeparateRow(label); + layout.Add(textArea, yscale: true); + + dlg.Content = layout; + + dlg.PositiveButtons.Add(quitButton); + dlg.PositiveButtons.Add(reportButton); + dlg.PositiveButtons.Add(copyButton); + + dlg.ShowModal(); } } diff --git a/Source/PabloDraw/Startup.cs b/Source/PabloDraw/Startup.cs index 5c75a7d..753f94b 100644 --- a/Source/PabloDraw/Startup.cs +++ b/Source/PabloDraw/Startup.cs @@ -7,7 +7,7 @@ public static class Startup [STAThread] static void Main() { - EmbedReferences.Init(); + // EmbedReferences.Init(); Program.Run(); } } diff --git a/Source/PabloDraw/app.config b/Source/PabloDraw/app.config deleted file mode 100644 index ea2e0ce..0000000 --- a/Source/PabloDraw/app.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - From 36215a3abeb1f5f746614ba9ef007aedb5d04598 Mon Sep 17 00:00:00 2001 From: Curtis Wensley Date: Sat, 30 Jan 2021 11:34:06 -0800 Subject: [PATCH 2/8] Fix RIP animation on Windows --- Source/Pablo/BGI/BGICanvas.cs | 2 +- .../Pablo/Formats/Animated/AnimatedDocument.cs | 2 +- Source/Pablo/Formats/Rip/RipHandler.cs | 18 +++++++++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Source/Pablo/BGI/BGICanvas.cs b/Source/Pablo/BGI/BGICanvas.cs index 5eb7e1f..2e7f8bd 100644 --- a/Source/Pablo/BGI/BGICanvas.cs +++ b/Source/Pablo/BGI/BGICanvas.cs @@ -2310,7 +2310,7 @@ public void UpdateRegion(IList rects, Graphics graphics = null) return; var platform = Platform.Instance; - if (platform.IsWpf || platform.IsIos || platform.IsMac) + if (platform.IsWpf || platform.IsIos || platform.IsMac || platform.IsWinForms) { Application.Instance.AsyncInvoke(delegate { diff --git a/Source/Pablo/Formats/Animated/AnimatedDocument.cs b/Source/Pablo/Formats/Animated/AnimatedDocument.cs index 1314634..3307778 100644 --- a/Source/Pablo/Formats/Animated/AnimatedDocument.cs +++ b/Source/Pablo/Formats/Animated/AnimatedDocument.cs @@ -215,7 +215,7 @@ public void Stop() if (loadingThread.IsAlive) { //Console.WriteLine ("Aborting thread.."); - loadingThread.Abort(); + // loadingThread.Abort(); } //threadKilledEvent.WaitOne (); //threadKilledEvent.Set (); diff --git a/Source/Pablo/Formats/Rip/RipHandler.cs b/Source/Pablo/Formats/Rip/RipHandler.cs index 88c1f0c..d3391df 100644 --- a/Source/Pablo/Formats/Rip/RipHandler.cs +++ b/Source/Pablo/Formats/Rip/RipHandler.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using Eto; using System.Linq; +using System.IO; namespace Pablo.Formats.Rip { @@ -129,8 +130,7 @@ public RipHandler(RipDocument doc) : base(doc) protected override void OnZoomChanged(EventArgs e) { base.OnZoomChanged(e); - if (BGI != null) - BGI.Scale = new SizeF(1 / this.ZoomRatio.Width, 1 / this.ZoomRatio.Height); + EnsureBGIScale(); } public RipDocument RipDocument @@ -245,7 +245,7 @@ private void actionDos_CheckedChanged(object sender, EventArgs e) var action = (CheckCommand)sender; RipDocument.Info.DosAspect = action.Checked; OnSizeChanged(EventArgs.Empty); - BGI.Scale = new SizeF(1 / this.ZoomRatio.Width, 1 / this.ZoomRatio.Height); + EnsureBGIScale(); } public override void OnMouseDown(MouseEventArgs e) @@ -298,6 +298,18 @@ public override void OnKeyDown(KeyEventArgs e) base.OnKeyDown(e); } + public override void PreLoad(Stream stream, Format format) + { + base.PreLoad(stream, format); + EnsureBGIScale(); + } + + void EnsureBGIScale() + { + if (BGI != null) + BGI.Scale = new SizeF(1 / ZoomRatio.Width, 1 / ZoomRatio.Height); + } + public override void Loaded() { base.Loaded(); From a0d5ce0329a3f0d3fad88b1c00a9f3e003d9b68c Mon Sep 17 00:00:00 2001 From: Curtis Wensley Date: Sat, 30 Jan 2021 11:38:18 -0800 Subject: [PATCH 3/8] Updates for latest Eto to remove obsolete warnings --- Source/Pablo.Interface/Actions/OpenFile.cs | 10 +++++----- Source/Pablo.Interface/Dialogs/About.cs | 10 +++++----- Source/Pablo.Interface/Dialogs/SauceInfoDialog.cs | 4 ++-- Source/Pablo/Actions/SaveAs.cs | 4 ++-- .../Pablo/Formats/Character/Controls/BrushPad.cs | 2 +- .../Formats/Character/Controls/CharacterPad.cs | 4 ++-- .../Character/Controls/CharacterSelectPad.cs | 2 +- .../Character/Controls/CharacterSetEditor.cs | 10 +++++----- .../Pablo/Formats/Character/Controls/FlagsPad.cs | 8 ++++---- .../Formats/Character/Controls/PositionPad.cs | 4 ++-- Source/Pablo/Formats/Character/Controls/SizePad.cs | 4 ++-- Source/Pablo/Formats/Rip/Controls/ColourEditor.cs | 2 +- Source/Pablo/Formats/Rip/Controls/FontStylePad.cs | 6 +++--- Source/Pablo/Formats/Rip/Tools/Bezier.cs | 6 +++--- Source/Pablo/Formats/Rip/Tools/PixelBrush.cs | 12 ++++++------ Source/Pablo/Sauce/Types/BaseFileType/Admin.cs | 2 +- Source/Pablo/Sauce/Types/BaseText/Admin.cs | 2 +- Source/Pablo/Sauce/Types/Binary/Admin.cs | 2 +- Source/Pablo/Sauce/Types/Character/Admin.cs | 14 +++++++------- 19 files changed, 54 insertions(+), 54 deletions(-) diff --git a/Source/Pablo.Interface/Actions/OpenFile.cs b/Source/Pablo.Interface/Actions/OpenFile.cs index 42c63f3..682ba04 100644 --- a/Source/Pablo.Interface/Actions/OpenFile.cs +++ b/Source/Pablo.Interface/Actions/OpenFile.cs @@ -21,9 +21,9 @@ public OpenFile(Main main) { this.main = main; base.ID = ActionID; - this.MenuText = "&Open"; - this.ToolBarText = "Open"; - this.ToolTip = "Open a file"; + this.MenuText = "&Open"; + this.ToolBarText = "Open"; + this.ToolTip = "Open a file"; this.Image = ImageCache.IconFromResource("Pablo.Interface.Icons.open.ico"); this.Shortcut = PabloCommand.CommonModifier | Keys.O; this.Enabled = main.Client == null || main.Client.CurrentUser.Level >= Pablo.Network.UserLevel.Operator; @@ -41,10 +41,10 @@ protected override void OnExecuted(EventArgs e) { var extensions = from ex in format.Extensions select "." + ex; allFormats.AddRange (extensions); - ofd.Filters.Add(new FileDialogFilter{ Name = format.Name, Extensions = extensions.ToArray () }); + ofd.Filters.Add(new FileFilter{ Name = format.Name, Extensions = extensions.ToArray () }); } } - ofd.Filters.Insert(0, new FileDialogFilter{ Name = "All Formats", Extensions = allFormats.ToArray() }); + ofd.Filters.Insert(0, new FileFilter{ Name = "All Formats", Extensions = allFormats.ToArray() }); var dr = ofd.ShowDialog(main); if (dr == DialogResult.Ok) diff --git a/Source/Pablo.Interface/Dialogs/About.cs b/Source/Pablo.Interface/Dialogs/About.cs index 0e53879..bef9645 100644 --- a/Source/Pablo.Interface/Dialogs/About.cs +++ b/Source/Pablo.Interface/Dialogs/About.cs @@ -28,7 +28,7 @@ public About() layout.BeginHorizontal(); layout.BeginVertical(new Padding(15, 20)); layout.Add(new ImageView - { + { Image = ImageCache.IconFromResource("Pablo.Interface.Icons.PabloDraw.ico"), Size = new Size(128, 128) }, yscale: true); @@ -37,14 +37,14 @@ public About() { Text = "PabloDraw", Font = Fonts.Sans(16, FontStyle.Bold), - HorizontalAlign = HorizontalAlign.Center + TextAlignment = TextAlignment.Center }); var version = Assembly.GetEntryAssembly().GetName().Version; layout.Add(new Label { Text = string.Format("Version {0}", version), - HorizontalAlign = HorizontalAlign.Center + TextAlignment = TextAlignment.Center }); if (!Platform.IsMac) @@ -74,8 +74,8 @@ public About() Content = new Label { Text = CopyRightText, - HorizontalAlign = HorizontalAlign.Center, - VerticalAlign = VerticalAlign.Middle + TextAlignment = TextAlignment.Center, + VerticalAlignment = VerticalAlignment.Center }, BackgroundColor = Colors.White diff --git a/Source/Pablo.Interface/Dialogs/SauceInfoDialog.cs b/Source/Pablo.Interface/Dialogs/SauceInfoDialog.cs index 57f2945..ac339d4 100644 --- a/Source/Pablo.Interface/Dialogs/SauceInfoDialog.cs +++ b/Source/Pablo.Interface/Dialogs/SauceInfoDialog.cs @@ -186,7 +186,7 @@ class MyLabel : Label { public MyLabel() { - VerticalAlign = VerticalAlign.Middle; + VerticalAlignment = VerticalAlignment.Center; } } @@ -373,7 +373,7 @@ Control SaveButton() static T LabelControl(TableLayout layout, T control, string label, int y) where T: Control { - layout.Add(new Label{ Text = label, VerticalAlign = VerticalAlign.Middle }, 0, y); + layout.Add(new Label{ Text = label, VerticalAlignment = VerticalAlignment.Center }, 0, y); layout.Add(control, 1, y); return control; } diff --git a/Source/Pablo/Actions/SaveAs.cs b/Source/Pablo/Actions/SaveAs.cs index a5d69ec..f4b9641 100644 --- a/Source/Pablo/Actions/SaveAs.cs +++ b/Source/Pablo/Actions/SaveAs.cs @@ -33,9 +33,9 @@ public static void Activate(Handler handler, bool setCurrent = false) foreach (Format format in formats) { allFormats.AddRange(format.Extensions); - ofd.Filters.Add(new FileDialogFilter{ Name = format.Name, Extensions = format.Extensions }); + ofd.Filters.Add(new FileFilter{ Name = format.Name, Extensions = format.Extensions }); } - ofd.Filters.Insert(0, new FileDialogFilter{ Name = "Auto Detect", Extensions = allFormats.ToArray() }); + ofd.Filters.Insert(0, new FileFilter{ Name = "Auto Detect", Extensions = allFormats.ToArray() }); if (!handler.Generator.IsMac || setCurrent) { if (!string.IsNullOrEmpty(handler.Document.FileName) && handler.Document.HasSavePermission) diff --git a/Source/Pablo/Formats/Character/Controls/BrushPad.cs b/Source/Pablo/Formats/Character/Controls/BrushPad.cs index 59677de..fce6c55 100644 --- a/Source/Pablo/Formats/Character/Controls/BrushPad.cs +++ b/Source/Pablo/Formats/Character/Controls/BrushPad.cs @@ -33,7 +33,7 @@ public BrushPad(Tools.Brush tool) var layout = new DynamicLayout { Padding = Padding.Empty, Spacing = Size.Empty }; - layout.Add(new Label { Text = "Brush", HorizontalAlign = HorizontalAlign.Center, Font = new Font(SystemFont.Default, 7) }); + layout.Add(new Label { Text = "Brush", TextAlignment = TextAlignment.Center, Font = new Font(SystemFont.Default, 7) }); layout.AddCentered(GradientPreview(), Padding.Empty, Size.Empty); diff --git a/Source/Pablo/Formats/Character/Controls/CharacterPad.cs b/Source/Pablo/Formats/Character/Controls/CharacterPad.cs index 7ec032e..0e4840d 100644 --- a/Source/Pablo/Formats/Character/Controls/CharacterPad.cs +++ b/Source/Pablo/Formats/Character/Controls/CharacterPad.cs @@ -75,8 +75,8 @@ void CreateControls () var character = new FontTextBox (handler, new Size(1, 1)); var label = new Label{ };//Size = new Size (width - character.Size.Width, charHeight)}; - label.HorizontalAlign = HorizontalAlign.Right; - label.VerticalAlign = VerticalAlign.Middle; + label.TextAlignment = TextAlignment.Right; + label.VerticalAlignment = VerticalAlignment.Center; label.Text = string.Format ("F{0}", i + 1); layout.Add (label); //layout.Add (label, 0, i * charHeight); diff --git a/Source/Pablo/Formats/Character/Controls/CharacterSelectPad.cs b/Source/Pablo/Formats/Character/Controls/CharacterSelectPad.cs index 05be657..0424658 100644 --- a/Source/Pablo/Formats/Character/Controls/CharacterSelectPad.cs +++ b/Source/Pablo/Formats/Character/Controls/CharacterSelectPad.cs @@ -37,7 +37,7 @@ public CharacterSelectPad(ICharacterSelectSource tool) var layout = new DynamicLayout { Padding = Padding.Empty, Spacing = Size.Empty }; - layout.Add(new Label { Text = "Char", HorizontalAlign = HorizontalAlign.Center, Font = new Font(SystemFont.Default, 7) }); + layout.Add(new Label { Text = "Char", TextAlignment = TextAlignment.Center, Font = new Font(SystemFont.Default, 7) }); layout.AddCentered(GradientPreview(), Padding.Empty, Size.Empty); diff --git a/Source/Pablo/Formats/Character/Controls/CharacterSetEditor.cs b/Source/Pablo/Formats/Character/Controls/CharacterSetEditor.cs index 82022ce..33c94fa 100644 --- a/Source/Pablo/Formats/Character/Controls/CharacterSetEditor.cs +++ b/Source/Pablo/Formats/Character/Controls/CharacterSetEditor.cs @@ -19,17 +19,17 @@ public CharacterSetEditor(CharacterHandler handler) this.CharacterHandler = handler; this.Title = "Character Set Editor"; - var layout = new DynamicLayout - { - Padding = 6, - Spacing = new Size(6, 6) + var layout = new DynamicLayout + { + Padding = 6, + Spacing = new Size(6, 6) }; selected = CharacterHandler.CharacterSet; layout.AddCentered(CharacterSelection(), xscale: true, yscale: true); - layout.Add(new Label { Text = "Click a character above, then select the character below to change it", Size = new Size(100, 32), HorizontalAlign = HorizontalAlign.Center }); + layout.Add(new Label { Text = "Click a character above, then select the character below to change it", Size = new Size(100, 32), TextAlignment = TextAlignment.Center }); layout.Add(Characters()); diff --git a/Source/Pablo/Formats/Character/Controls/FlagsPad.cs b/Source/Pablo/Formats/Character/Controls/FlagsPad.cs index 696bf23..f22f503 100644 --- a/Source/Pablo/Formats/Character/Controls/FlagsPad.cs +++ b/Source/Pablo/Formats/Character/Controls/FlagsPad.cs @@ -44,8 +44,8 @@ Control InsertLabel() { insertLabel = new Label { - HorizontalAlign = HorizontalAlign.Right, - VerticalAlign = VerticalAlign.Middle + TextAlignment = TextAlignment.Right, + VerticalAlignment = VerticalAlignment.Center }; return insertLabel; } @@ -55,8 +55,8 @@ Control FontLabel() fontLabel = new Label { Wrap = WrapMode.None, - HorizontalAlign = HorizontalAlign.Left, - VerticalAlign = VerticalAlign.Middle + TextAlignment = TextAlignment.Left, + VerticalAlignment = VerticalAlignment.Center }; #if DESKTOP fontLabel.MouseDown += delegate diff --git a/Source/Pablo/Formats/Character/Controls/PositionPad.cs b/Source/Pablo/Formats/Character/Controls/PositionPad.cs index 582460d..3135ecd 100644 --- a/Source/Pablo/Formats/Character/Controls/PositionPad.cs +++ b/Source/Pablo/Formats/Character/Controls/PositionPad.cs @@ -22,8 +22,8 @@ public PositionPad (CharacterHandler handler) }).MakeWeak(e => Handler.CursorPositionChanged -= e); label = new Label{ - HorizontalAlign = HorizontalAlign.Right, - VerticalAlign = VerticalAlign.Middle + TextAlignment = TextAlignment.Right, + VerticalAlignment = VerticalAlignment.Center }; var layout = new DynamicLayout { Padding = new Padding(0, 5, 5, 5) }; diff --git a/Source/Pablo/Formats/Character/Controls/SizePad.cs b/Source/Pablo/Formats/Character/Controls/SizePad.cs index 0d0dae6..a59a438 100644 --- a/Source/Pablo/Formats/Character/Controls/SizePad.cs +++ b/Source/Pablo/Formats/Character/Controls/SizePad.cs @@ -14,7 +14,7 @@ public SizePad (Tools.SizeTool tool) var layout = new DynamicLayout { Padding = Padding.Empty }; layout.BeginVertical (Padding.Empty, Size.Empty); - layout.Add (new Label{ Text = "Size", HorizontalAlign = HorizontalAlign.Center, Font = new Font (SystemFont.Default, 7)}); + layout.Add (new Label{ Text = "Size", TextAlignment = TextAlignment.Center, Font = new Font (SystemFont.Default, 7)}); layout.Add (BrushSize ()); layout.EndVertical (); Content = layout; @@ -23,7 +23,7 @@ public SizePad (Tools.SizeTool tool) Control BrushSize() { - var control = new NumericUpDown{ + var control = new NumericStepper{ Font = new Font (SystemFont.Default, 8), MinValue = 1, MaxValue = 9, diff --git a/Source/Pablo/Formats/Rip/Controls/ColourEditor.cs b/Source/Pablo/Formats/Rip/Controls/ColourEditor.cs index ea51bb6..075a051 100644 --- a/Source/Pablo/Formats/Rip/Controls/ColourEditor.cs +++ b/Source/Pablo/Formats/Rip/Controls/ColourEditor.cs @@ -166,7 +166,7 @@ Slider CreateSlider () var slider = new Slider{ MinValue = 0, MaxValue = 3, - Orientation = SliderOrientation.Vertical, + Orientation = Orientation.Vertical, TickFrequency = 1 }; slider.ValueChanged += HandleSliderValueChanged; diff --git a/Source/Pablo/Formats/Rip/Controls/FontStylePad.cs b/Source/Pablo/Formats/Rip/Controls/FontStylePad.cs index 5c97fda..0ce2a09 100644 --- a/Source/Pablo/Formats/Rip/Controls/FontStylePad.cs +++ b/Source/Pablo/Formats/Rip/Controls/FontStylePad.cs @@ -14,7 +14,7 @@ public class FontStylePad : Panel ImageButton vertical; ImageButton horizontal; BGICanvas canvas; - NumericUpDown fontSize; + NumericStepper fontSize; public FontStylePad(RipHandler handler) { @@ -22,7 +22,7 @@ public FontStylePad(RipHandler handler) var layout = new DynamicLayout { Padding = Padding.Empty }; layout.BeginVertical(Padding.Empty, Size.Empty); - layout.Add(new Label { Text = "Font Size", HorizontalAlign = HorizontalAlign.Center, Font = new Font(SystemFont.Default, 7) }); + layout.Add(new Label { Text = "Font Size", TextAlignment = TextAlignment.Center, Font = new Font(SystemFont.Default, 7) }); layout.Add(FontSize()); layout.EndVertical(); @@ -152,7 +152,7 @@ Control FillStyleButton() Control FontSize() { - var control = fontSize = new NumericUpDown + var control = fontSize = new NumericStepper { MinValue = 1, MaxValue = 10, diff --git a/Source/Pablo/Formats/Rip/Tools/Bezier.cs b/Source/Pablo/Formats/Rip/Tools/Bezier.cs index 4927edb..383fba7 100644 --- a/Source/Pablo/Formats/Rip/Tools/Bezier.cs +++ b/Source/Pablo/Formats/Rip/Tools/Bezier.cs @@ -24,7 +24,7 @@ public override Keys Accelerator { } public override Eto.Drawing.Image Image { - get { + get { return ImageCache.BitmapFromResource("Pablo.Formats.Rip.Icons.Bezier.png"); } } @@ -195,8 +195,8 @@ public override Control GeneratePad () layout.Add (new Controls.LineStylePad (Handler, true)); var font = new Font (SystemFont.Default, 7); - layout.Add (new Label{ Text = "Segments", Font = font, HorizontalAlign = HorizontalAlign.Center }); - var segmentBox = new NumericUpDown{ + layout.Add (new Label{ Text = "Segments", Font = font, TextAlignment = TextAlignment.Center }); + var segmentBox = new NumericStepper{ Font = new Font (SystemFont.Default, 8), Value = segments, MinValue = 1, diff --git a/Source/Pablo/Formats/Rip/Tools/PixelBrush.cs b/Source/Pablo/Formats/Rip/Tools/PixelBrush.cs index ec54b9a..2868d00 100644 --- a/Source/Pablo/Formats/Rip/Tools/PixelBrush.cs +++ b/Source/Pablo/Formats/Rip/Tools/PixelBrush.cs @@ -37,7 +37,7 @@ bool EnableForegroundBackground (Keys modifiers, bool useForeground) return (modifiers == Keys.Alt) ^ useForeground; } - public override Eto.Drawing.Image Image { + public override Eto.Drawing.Image Image { get { return ImageCache.BitmapFromResource("Pablo.Formats.Rip.Icons.Brush.png"); } } @@ -131,7 +131,7 @@ public override Control GeneratePad () layout.BeginVertical (Padding.Empty); layout.BeginHorizontal (); - var b = new ImageButton{ + var b = new ImageButton{ Image = ImageCache.BitmapFromResource("Pablo.Formats.Rip.Icons.Brush-Multi.png"), Toggle = true, Pressed = enableMulti @@ -149,8 +149,8 @@ public override Control GeneratePad () var updownfont = new Font (SystemFont.Default, 8); layout.BeginVertical(Padding.Empty, Size.Empty); - layout.Add(new Label { Text = "Width", Font = font, HorizontalAlign = HorizontalAlign.Center }); - var widthBox = new NumericUpDown{ + layout.Add(new Label { Text = "Width", Font = font, TextAlignment = TextAlignment.Center }); + var widthBox = new NumericStepper{ Font = updownfont, Value = width, MinValue = 1, @@ -163,8 +163,8 @@ public override Control GeneratePad () layout.Add (widthBox); layout.EndBeginVertical(Padding.Empty, Size.Empty); - layout.Add (new Label{ Text = "Density", Font = font, HorizontalAlign = HorizontalAlign.Center}); - var pointsBox = new NumericUpDown{ + layout.Add (new Label{ Text = "Density", Font = font, TextAlignment = TextAlignment.Center}); + var pointsBox = new NumericStepper{ Font = updownfont, Value = points, MinValue = 1, diff --git a/Source/Pablo/Sauce/Types/BaseFileType/Admin.cs b/Source/Pablo/Sauce/Types/BaseFileType/Admin.cs index 2b24c1d..a450408 100644 --- a/Source/Pablo/Sauce/Types/BaseFileType/Admin.cs +++ b/Source/Pablo/Sauce/Types/BaseFileType/Admin.cs @@ -76,7 +76,7 @@ protected virtual void CreateControls() if (DataType.HasFileType && fileTypes.Count > 1) { Layout.BeginHorizontal(); - Layout.Add(new Label { Text = "File Type", VerticalAlign = VerticalAlign.Middle }); + Layout.Add(new Label { Text = "File Type", VerticalAlignment = VerticalAlignment.Center }); Layout.AddAutoSized(FileTypeComboBox()); Layout.EndHorizontal(); } diff --git a/Source/Pablo/Sauce/Types/BaseText/Admin.cs b/Source/Pablo/Sauce/Types/BaseText/Admin.cs index a232060..4aaf4ac 100644 --- a/Source/Pablo/Sauce/Types/BaseText/Admin.cs +++ b/Source/Pablo/Sauce/Types/BaseText/Admin.cs @@ -18,7 +18,7 @@ protected override void CreateControls() base.CreateControls(); if (DataType.HasFontName) { - Layout.AddRow(new Label { Text = "Font Name", VerticalAlign = VerticalAlign.Middle }, FontName()); + Layout.AddRow(new Label { Text = "Font Name", VerticalAlignment = VerticalAlignment.Center }, FontName()); } } diff --git a/Source/Pablo/Sauce/Types/Binary/Admin.cs b/Source/Pablo/Sauce/Types/Binary/Admin.cs index e0b0c25..08ccdc2 100644 --- a/Source/Pablo/Sauce/Types/Binary/Admin.cs +++ b/Source/Pablo/Sauce/Types/Binary/Admin.cs @@ -15,7 +15,7 @@ protected override void CreateControls() { base.CreateControls(); Layout.BeginHorizontal (); - Layout.Add (new Label{ Text = "Binary Width", VerticalAlign = VerticalAlign.Middle }); + Layout.Add (new Label{ Text = "Binary Width", VerticalAlignment = VerticalAlignment.Center }); Layout.Add (WidthControl ()); Layout.EndHorizontal (); } diff --git a/Source/Pablo/Sauce/Types/Character/Admin.cs b/Source/Pablo/Sauce/Types/Character/Admin.cs index 30d3154..b6fc418 100644 --- a/Source/Pablo/Sauce/Types/Character/Admin.cs +++ b/Source/Pablo/Sauce/Types/Character/Admin.cs @@ -17,11 +17,11 @@ protected override void CreateControls() if (DataType.HasDimensions) { Layout.BeginHorizontal(); - Layout.Add(new Label { Text = "Width", VerticalAlign = VerticalAlign.Middle }); + Layout.Add(new Label { Text = "Width", VerticalAlignment = VerticalAlignment.Center }); Layout.BeginVertical(Eto.Drawing.Padding.Empty); Layout.BeginHorizontal(); Layout.Add(WidthControl(), xscale: true); - Layout.Add(new Label { Text = "Height", VerticalAlign = VerticalAlign.Middle }); + Layout.Add(new Label { Text = "Height", VerticalAlignment = VerticalAlignment.Center }); Layout.Add(HeightControl(), xscale: true); Layout.EndHorizontal(); Layout.EndVertical(); @@ -29,13 +29,13 @@ protected override void CreateControls() } if (DataType.HasNumberOfColors) { - Layout.AddRow(new Label { Text = "Number of Colors", VerticalAlign = VerticalAlign.Middle }, NumberOfColors()); + Layout.AddRow(new Label { Text = "Number of Colors", VerticalAlignment = VerticalAlignment.Center }, NumberOfColors()); } } Control WidthControl() { - var control = new NumericUpDown + var control = new NumericStepper { MinValue = 0, MaxValue = ushort.MaxValue, @@ -51,7 +51,7 @@ Control WidthControl() Control HeightControl() { - var control = new NumericUpDown + var control = new NumericStepper { //Text = DataType.Height > 0 ? DataType.Height.ToString() : string.Empty MinValue = 0, @@ -67,7 +67,7 @@ Control HeightControl() Control NumberOfColors() { - var control = new NumericUpDown + var control = new NumericStepper { MinValue = 0, MaxValue = ushort.MaxValue, @@ -91,7 +91,7 @@ protected override void OnFileTypeChanged(EventArgs e) if (!DataType.HasNumberOfColors) { DataType.NumberOfColors = 0; - } + } RecreateLayout(); } } From 2f7dcb14265470f0da557e7b0ad3de4c0a82fa72 Mon Sep 17 00:00:00 2001 From: Curtis Wensley Date: Sat, 30 Jan 2021 11:38:43 -0800 Subject: [PATCH 4/8] Mac: Fix crash in viewer mode due to Eto bug --- .../Pablo/Formats/Character/CharacterHandler.cs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Source/Pablo/Formats/Character/CharacterHandler.cs b/Source/Pablo/Formats/Character/CharacterHandler.cs index a7c790f..a22a800 100644 --- a/Source/Pablo/Formats/Character/CharacterHandler.cs +++ b/Source/Pablo/Formats/Character/CharacterHandler.cs @@ -571,6 +571,9 @@ void AddMoveAction(GenerateCommandArgs args, string id, string name, string tool GenerateCommandArgs args; + // bug in Eto: + static Command s_DisabledCommand = new Command { Enabled = false }; + public override void GenerateCommands(GenerateCommandArgs args) { base.GenerateCommands(args); @@ -582,13 +585,13 @@ public override void GenerateCommands(GenerateCommandArgs args) if (Generator.IsMac && control != null) { - control.MapPlatformCommand("cut", null); - control.MapPlatformCommand("copy", null); - control.MapPlatformCommand("paste", null); - control.MapPlatformCommand("selectAll", null); - control.MapPlatformCommand("delete", null); - control.MapPlatformCommand("undo", null); - control.MapPlatformCommand("redo", null); + control.MapPlatformCommand("cut", s_DisabledCommand); + control.MapPlatformCommand("copy", s_DisabledCommand); + control.MapPlatformCommand("paste", s_DisabledCommand); + control.MapPlatformCommand("selectAll", s_DisabledCommand); + control.MapPlatformCommand("delete", s_DisabledCommand); + control.MapPlatformCommand("undo", s_DisabledCommand); + control.MapPlatformCommand("redo", s_DisabledCommand); } var edit = args.Menu.Items.GetSubmenu("&Edit", 200); From b858bac3dcde1c22a9a4addd56508ec961471fe8 Mon Sep 17 00:00:00 2001 From: Curtis Wensley Date: Sat, 30 Jan 2021 11:44:50 -0800 Subject: [PATCH 5/8] Prompt to save file before loading readme - Always set file modified flag, even for new documents --- Source/Pablo.Interface/Actions/Readme.cs | 7 +- Source/Pablo.Interface/Main.cs | 1554 +++++++++-------- Source/Pablo/Document.cs | 4 + .../Formats/Character/CharacterDocument.cs | 27 +- 4 files changed, 813 insertions(+), 779 deletions(-) diff --git a/Source/Pablo.Interface/Actions/Readme.cs b/Source/Pablo.Interface/Actions/Readme.cs index 0f16acc..709fabe 100644 --- a/Source/Pablo.Interface/Actions/Readme.cs +++ b/Source/Pablo.Interface/Actions/Readme.cs @@ -1,6 +1,6 @@ using System; -using System.IO; -using System.Reflection; +using System.IO; +using System.Reflection; using Eto.Forms; namespace Pablo.Interface.Actions @@ -20,6 +20,9 @@ public Readme(Main main) protected override void OnExecuted(EventArgs e) { base.OnExecuted(e); + if (!main.PromptSave()) + return; + using (var stream = typeof(Readme).Assembly.GetManifestResourceStream("Pablo.Interface.README.ans")) { main.LoadFile("README.ans", stream, hasSavePermissions: false, setFileList: false, editMode: false); diff --git a/Source/Pablo.Interface/Main.cs b/Source/Pablo.Interface/Main.cs index 0859eec..6fecec3 100644 --- a/Source/Pablo.Interface/Main.cs +++ b/Source/Pablo.Interface/Main.cs @@ -15,868 +15,894 @@ namespace Pablo.Interface { - public class Main : Form, IClientDelegate, IClientSource - { - const string TITLE = "PabloDraw"; + public class Main : Form, IClientDelegate, IClientSource + { + const string TITLE = "PabloDraw"; Handler handler; - readonly FileList fileList; - readonly Settings settings = new Settings(); - Server server; - Client client; - Format currentFormat; - EtoFileInfo currentFile; - readonly Splitter splitter; - readonly PadPanel padpanel; - bool shouldReload = true; - bool lastEditMode; - GenerateCommandArgs args; - - #region Events - - public event EventHandler ServerChanged; - - protected virtual void OnServerChanged(EventArgs e) - { - if (ServerChanged != null) - ServerChanged(this, e); - } - - public event EventHandler ClientChanged; - - protected virtual void OnClientChanged(EventArgs e) - { - if (ClientChanged != null) - ClientChanged(this, e); - - if (handler != null) - handler.Client = Client; - - GeneratePads(); - GenerateActions(); - } - - public event EventHandler DocumentChanged; - - protected virtual void OnDocumentChanged(EventArgs e) - { - if (DocumentChanged != null) - DocumentChanged(this, e); - } - - #endregion - - #region Properties - - public IEnumerable Commands - { - get - { - yield return new Actions.EditFile(this); - yield return new Actions.NewFile(this); - yield return new Actions.EditSauce(this); - - if (handler != null) - foreach (var command in handler.Commands) - yield return command; - } - } - - public IEnumerable ServerCommands - { - get - { - if (handler != null) - foreach (var command in handler.ServerCommands) - yield return command; - } - } - - public new Control Content - { - get { return padpanel.Content; } - } - - public ChatPanel ChatPanel - { - get; - private set; - } - - public string SettingsFile - { - get - { - var dir = EtoEnvironment.GetFolderPath(EtoSpecialFolder.ApplicationSettings); - dir = Path.Combine(dir, "PabloDraw"); - if (!Directory.Exists(dir)) - Directory.CreateDirectory(dir); - return Path.Combine(dir, "PabloDraw.config"); - } - } - - public Document Document - { - get { return handler != null ? handler.Document : null; } - } + readonly FileList fileList; + readonly Settings settings = new Settings(); + Server server; + Client client; + Format currentFormat; + EtoFileInfo currentFile; + readonly Splitter splitter; + readonly PadPanel padpanel; + bool shouldReload = true; + bool lastEditMode; + GenerateCommandArgs args; - public Handler ViewHandler - { - get { return handler; } - } + #region Events - public FileList FileList - { - get { return fileList; } - } + public event EventHandler ServerChanged; - public Settings Settings - { - get { return settings; } - } + protected virtual void OnServerChanged(EventArgs e) + { + if (ServerChanged != null) + ServerChanged(this, e); + } - public Server Server - { - get { return server; } - set - { - if (server != value) - { - server = value; - OnServerChanged(EventArgs.Empty); - } - } - } - - public Client Client - { - get { return client; } - set - { - if (client != value) - { - client = value; - if (client != null) - { - client.CurrentUserChanged += delegate - { - GenerateActions(); - GeneratePads(); - }; - client.Disconnected += delegate(object sender, DisconnectedArgs e) - { - Client = null; - if (!string.IsNullOrEmpty(e.Reason)) - MessageBox.Show(this, e.Reason, "Disconnected from server"); - }; - } - OnClientChanged(EventArgs.Empty); - } - } - } + public event EventHandler ClientChanged; - public event EventHandler EditModeChanged; + protected virtual void OnClientChanged(EventArgs e) + { + if (ClientChanged != null) + ClientChanged(this, e); - protected virtual void OnEditModeChanged(EventArgs e) - { - if (EditModeChanged != null) - EditModeChanged(this, e); + if (handler != null) + handler.Client = Client; - SetDocument(Document); + GeneratePads(); + GenerateActions(); + } - SetupEditMode(false, true); - } + public event EventHandler DocumentChanged; - void SetupEditMode(bool reload, bool focus) - { - if (lastEditMode != EditMode) - { - if (lastEditMode) - Settings.EditFileSplit = splitter.Position; - else - Settings.FileSplit = splitter.Position; + protected virtual void OnDocumentChanged(EventArgs e) + { + if (DocumentChanged != null) + DocumentChanged(this, e); + } - if (EditMode) - { - splitter.Position = Settings.EditFileSplit; - if (reload) - ReloadFile(false, true, false); - } - else - { - splitter.Position = Settings.FileSplit; - if (reload) - ReloadFile(false, false, false); - } - lastEditMode = EditMode; - } + #endregion - if (focus) - { - if (EditMode) - Content.Focus(); - else - FileList.Focus(); - } - } + #region Properties - public bool EditMode - { - get { return Document != null && Document.EditMode; } - set - { - var doc = Document; - if (doc != null && value != doc.EditMode) - { - var stream = loadingStream; - if (stream != null) - { - doc.EditMode = value; - - var fileName = doc.FileName; - SetDocument(null); - stream.Seek(0, SeekOrigin.Begin); - LoadFile(fileName, stream, doc.LoadedFormat, value, false, doc.HasSavePermission); - stream.Dispose(); - loadingStream = null; - } - else - doc.EditMode = value; - OnEditModeChanged(EventArgs.Empty); - } - } - } - - public bool EnableBackups - { - get { return settings.EnableBackups; } - set { settings.EnableBackups = value; } - } - - #endregion - - public void WriteXml() - { - try - { - if (EditMode) - Settings.EditFileSplit = splitter.Position; - else - Settings.FileSplit = splitter.Position; - - - var doc = new XmlDocument(); - var head = doc.CreateElement("pablo"); - - Settings.WriteXml(head); - - - var elem = doc.CreateElement("main"); - if (FileList.CurrentDirectory != null) - { - var dir = FileList.CurrentDirectory; - while (dir is VirtualDirectoryInfo) - { - var file = ((VirtualDirectoryInfo)dir).FileInfo; - if (file == null) - break; - dir = file.Directory; - } - elem.SetAttribute("path", dir.FullName); - } - head.AppendChild(elem); - - head.WriteChildXml("main-window", new WindowStateSaver(this)); + public IEnumerable Commands + { + get + { + yield return new Actions.EditFile(this); + yield return new Actions.NewFile(this); + yield return new Actions.EditSauce(this); + + if (handler != null) + foreach (var command in handler.Commands) + yield return command; + } + } + + public IEnumerable ServerCommands + { + get + { + if (handler != null) + foreach (var command in handler.ServerCommands) + yield return command; + } + } + + public new Control Content + { + get { return padpanel.Content; } + } + + public ChatPanel ChatPanel + { + get; + private set; + } + + public string SettingsFile + { + get + { + var dir = EtoEnvironment.GetFolderPath(EtoSpecialFolder.ApplicationSettings); + dir = Path.Combine(dir, "PabloDraw"); + if (!Directory.Exists(dir)) + Directory.CreateDirectory(dir); + return Path.Combine(dir, "PabloDraw.config"); + } + } + + public Document Document + { + get { return handler != null ? handler.Document : null; } + } + + public Handler ViewHandler + { + get { return handler; } + } + + public FileList FileList + { + get { return fileList; } + } + + public Settings Settings + { + get { return settings; } + } + + public Server Server + { + get { return server; } + set + { + if (server != value) + { + server = value; + OnServerChanged(EventArgs.Empty); + } + } + } + + public Client Client + { + get { return client; } + set + { + if (client != value) + { + client = value; + if (client != null) + { + client.CurrentUserChanged += delegate + { + GenerateActions(); + GeneratePads(); + }; + client.Disconnected += delegate (object sender, DisconnectedArgs e) + { + Client = null; + if (!string.IsNullOrEmpty(e.Reason)) + MessageBox.Show(this, e.Reason, "Disconnected from server"); + }; + } + OnClientChanged(EventArgs.Empty); + } + } + } + + public event EventHandler EditModeChanged; + + protected virtual void OnEditModeChanged(EventArgs e) + { + if (EditModeChanged != null) + EditModeChanged(this, e); + + SetDocument(Document); + + SetupEditMode(false, true); + } + + void SetupEditMode(bool reload, bool focus) + { + if (lastEditMode != EditMode) + { + if (lastEditMode) + Settings.EditFileSplit = splitter.Position; + else + Settings.FileSplit = splitter.Position; + + if (EditMode) + { + splitter.Position = Settings.EditFileSplit; + if (reload) + ReloadFile(false, true, false); + } + else + { + splitter.Position = Settings.FileSplit; + if (reload) + ReloadFile(false, false, false); + } + lastEditMode = EditMode; + } + + if (focus) + { + if (EditMode) + Content.Focus(); + else + FileList.Focus(); + } + } + + public bool EditMode + { + get { return Document != null && Document.EditMode; } + set + { + var doc = Document; + if (doc != null && value != doc.EditMode) + { + var stream = loadingStream; + if (stream != null) + { + doc.EditMode = value; + + var fileName = doc.FileName; + SetDocument(null); + stream.Seek(0, SeekOrigin.Begin); + LoadFile(fileName, stream, doc.LoadedFormat, value, false, doc.HasSavePermission); + stream.Dispose(); + loadingStream = null; + } + else + doc.EditMode = value; + OnEditModeChanged(EventArgs.Empty); + } + } + } + + public bool EnableBackups + { + get { return settings.EnableBackups; } + set { settings.EnableBackups = value; } + } + + #endregion + + public void WriteXml() + { + try + { + if (EditMode) + Settings.EditFileSplit = splitter.Position; + else + Settings.FileSplit = splitter.Position; - doc.AppendChild(head); - doc.Save(SettingsFile); - } - catch (Exception ex) - { - Console.WriteLine("Error! {0}", ex); - } + var doc = new XmlDocument(); + var head = doc.CreateElement("pablo"); - } + Settings.WriteXml(head); - class WindowStateSaver : IXmlReadable - { - public Window Window { get; private set; } - public bool LoadMinimized { get; set; } + var elem = doc.CreateElement("main"); + if (FileList.CurrentDirectory != null) + { + var dir = FileList.CurrentDirectory; + while (dir is VirtualDirectoryInfo) + { + var file = ((VirtualDirectoryInfo)dir).FileInfo; + if (file == null) + break; + dir = file.Directory; + } + elem.SetAttribute("path", dir.FullName); + } + head.AppendChild(elem); - public bool LoadPosition { get; set; } + head.WriteChildXml("main-window", new WindowStateSaver(this)); - public WindowStateSaver(Window window) - { - this.Window = window; - LoadPosition = true; - } - #region IXmlReadable implementation + doc.AppendChild(head); + doc.Save(SettingsFile); + } + catch (Exception ex) + { + Console.WriteLine("Error! {0}", ex); + } - public void ReadXml(XmlElement element) - { - var startx = element.GetIntAttribute("startx"); - var starty = element.GetIntAttribute("starty"); - var width = element.GetIntAttribute("width"); - var height = element.GetIntAttribute("height"); + } - if (width != null && height != null && width > 0 && height > 0) - { - Window.Size = new Size(width.Value, height.Value); - } + class WindowStateSaver : IXmlReadable + { + public Window Window { get; private set; } - var state = element.GetEnumAttribute("state") ?? WindowState.Normal; + public bool LoadMinimized { get; set; } - if (startx != null && starty != null && (LoadPosition || state != WindowState.Normal)) - { - Window.Location = new Point(startx.Value, starty.Value); - } + public bool LoadPosition { get; set; } - if (state == WindowState.Maximized) - Window.Maximize(); - else if (LoadMinimized && state == WindowState.Minimized) - Window.Minimize(); - } + public WindowStateSaver(Window window) + { + this.Window = window; + LoadPosition = true; + } - public void WriteXml(XmlElement element) - { - var restoreBounds = Window.RestoreBounds; - element.SetAttribute("width", restoreBounds.Width); - element.SetAttribute("height", restoreBounds.Height); - if (LoadPosition || Window.WindowState != WindowState.Normal) - { - element.SetAttribute("startx", restoreBounds.X); - element.SetAttribute("starty", restoreBounds.Y); + #region IXmlReadable implementation - } - element.SetAttribute("state", Window.WindowState); - } + public void ReadXml(XmlElement element) + { + var startx = element.GetIntAttribute("startx"); + var starty = element.GetIntAttribute("starty"); + var width = element.GetIntAttribute("width"); + var height = element.GetIntAttribute("height"); + + if (width != null && height != null && width > 0 && height > 0) + { + Window.Size = new Size(width.Value, height.Value); + } + + var state = element.GetEnumAttribute("state") ?? WindowState.Normal; + + if (startx != null && starty != null && (LoadPosition || state != WindowState.Normal)) + { + Window.Location = new Point(startx.Value, starty.Value); + } + + if (state == WindowState.Maximized) + Window.Maximize(); + else if (LoadMinimized && state == WindowState.Minimized) + Window.Minimize(); + } + + public void WriteXml(XmlElement element) + { + var restoreBounds = Window.RestoreBounds; + element.SetAttribute("width", restoreBounds.Width); + element.SetAttribute("height", restoreBounds.Height); + if (LoadPosition || Window.WindowState != WindowState.Normal) + { + element.SetAttribute("startx", restoreBounds.X); + element.SetAttribute("starty", restoreBounds.Y); + + } + element.SetAttribute("state", Window.WindowState); + } + + #endregion + } + + public void ReadXml() + { + if (File.Exists(SettingsFile)) + { + var doc = new XmlDocument(); + doc.Load(SettingsFile); + var head = (XmlElement)doc.SelectSingleNode("pablo"); - #endregion - } + Settings.ReadXml(head); - public void ReadXml() - { - if (File.Exists(SettingsFile)) - { - var doc = new XmlDocument(); - doc.Load(SettingsFile); - var head = (XmlElement)doc.SelectSingleNode("pablo"); + var elem = (XmlElement)head.SelectSingleNode("main"); + if (elem != null) + { + var dir = elem.GetAttribute("path"); + if (Directory.Exists(dir)) + FileList.Initialize(dir); + } - Settings.ReadXml(head); + head.ReadChildXml("main-window", new WindowStateSaver(this)); + } + } - var elem = (XmlElement)head.SelectSingleNode("main"); - if (elem != null) - { - var dir = elem.GetAttribute("path"); - if (Directory.Exists(dir)) - FileList.Initialize(dir); - } + public Main() + { + Title = TITLE; + Size = new Size(950, 650); + this.Style = "main"; - head.ReadChildXml("main-window", new WindowStateSaver(this)); - } - } + this.Icon = ImageCache.IconFromResource("Pablo.Interface.Icons.PabloDraw.ico"); - public Main() - { - Title = TITLE; - Size = new Size(950, 650); - this.Style = "main"; - - this.Icon = ImageCache.IconFromResource("Pablo.Interface.Icons.PabloDraw.ico"); + padpanel = new PadPanel(); - padpanel = new PadPanel(); + splitter = new Splitter(); - splitter = new Splitter(); + fileList = new FileList(this); + fileList.Activated += delegate + { + if (fileList.SelectedFile != null) + { + currentFormat = null; - fileList = new FileList(this); - fileList.Activated += delegate - { - if (fileList.SelectedFile != null) - { - currentFormat = null; - ReloadFile(!fileList.SelectedFile.ReadOnly, true, true); - } - }; - fileList.SelectedIndexChanged += delegate - { - if (!this.EditMode) - { - if (fileList.SelectedFile != null) - { - currentFormat = null; - ReloadFile(!fileList.SelectedFile.ReadOnly, false, false); - } - } - }; - string initialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - fileList.Initialize(initialDirectory); - - - padpanel.Content = new Panel { BackgroundColor = Colors.Black }; - splitter.Panel1 = fileList; - splitter.Panel2 = padpanel; - - base.Content = splitter; - - GenerateActions(); - ReadXml(); - - splitter.Position = Settings.FileSplit; - fileList.Focus(); - } - - protected override void OnKeyDown(KeyEventArgs e) - { - if (args != null) - { - var cmd = args.KeyboardCommands.FirstOrDefault(r => r.Shortcut == e.KeyData && r.Enabled); - if (cmd != null) - { - cmd.Execute(); - e.Handled = true; - } - } - base.OnKeyDown(e); - } - - IEnumerable AllItems(MenuItem item) - { - yield return item; - var submenu = item as ISubmenu; - if (submenu != null) - { - foreach (var child in submenu.Items.SelectMany(r => AllItems(r))) - { - yield return child; - } - } - } - - public void GenerateActions() - { - bool canEdit = (handler != null && handler.CanEdit); - - if (args != null) - { - var disposableMenuItems = args.Menu.Items.SelectMany(r => AllItems(r)).Select(r => r.Command).OfType().ToList(); - disposableMenuItems.AddRange(args.KeyboardCommands.OfType()); - foreach (var item in disposableMenuItems) - item.Dispose(); - var disposableToolbarItems = args.ToolBar.Items.Select(r => r.Command).OfType().Where(r => !disposableMenuItems.Contains(r)); - foreach (var item in disposableToolbarItems) - item.Dispose(); - } - - args = new GenerateCommandArgs { EditMode = EditMode, Area = "main" }; - - //GC.Collect (); + } + }; + fileList.SelectedIndexChanged += delegate + { + if (!this.EditMode) + { + if (fileList.SelectedFile != null) + { + currentFormat = null; + ReloadFile(!fileList.SelectedFile.ReadOnly, false, false); + } + } + }; + string initialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); + fileList.Initialize(initialDirectory); + + + padpanel.Content = new Panel { BackgroundColor = Colors.Black }; + splitter.Panel1 = fileList; + splitter.Panel2 = padpanel; + + base.Content = splitter; + + GenerateActions(); + ReadXml(); + + splitter.Position = Settings.FileSplit; + fileList.Focus(); + } + + protected override void OnKeyDown(KeyEventArgs e) + { + if (args != null) + { + var cmd = args.KeyboardCommands.FirstOrDefault(r => r.Shortcut == e.KeyData && r.Enabled); + if (cmd != null) + { + cmd.Execute(); + e.Handled = true; + } + } + base.OnKeyDown(e); + } + + IEnumerable AllItems(MenuItem item) + { + yield return item; + var submenu = item as ISubmenu; + if (submenu != null) + { + foreach (var child in submenu.Items.SelectMany(r => AllItems(r))) + { + yield return child; + } + } + } + + public void GenerateActions() + { + bool canEdit = (handler != null && handler.CanEdit); + + if (args != null) + { + var disposableMenuItems = args.Menu.Items.SelectMany(r => AllItems(r)).Select(r => r.Command).OfType().ToList(); + disposableMenuItems.AddRange(args.KeyboardCommands.OfType()); + foreach (var item in disposableMenuItems) + item.Dispose(); + var disposableToolbarItems = args.ToolBar.Items.Select(r => r.Command).OfType().Where(r => !disposableMenuItems.Contains(r)); + foreach (var item in disposableToolbarItems) + item.Dispose(); + } + + args = new GenerateCommandArgs { EditMode = EditMode, Area = "main" }; + + if (Platform.IsMac && ToolBar != null) + { + // needed when running on big sur, but not needed until .NET 6 + args.ToolBar = ToolBar; + args.ToolBar.Items.Clear(); + } - args.KeyboardCommands.Add(new Actions.FocusChatView(this)); + //GC.Collect (); - var prevCommand = new Command { ID = "prev", MenuText = "Open &Previous", ToolTip = "Opens the previous file in the list", Shortcut = Keys.Alt | Keys.Up }; - prevCommand.Executed += (sender, e) => fileList.GoToPrevious();; - var nextCommand = new Command { ID = "next", MenuText = "Open &Next", ToolTip = "Opens the next file in the list", Shortcut = Keys.Alt | Keys.Down }; - nextCommand.Executed += (sender, e) => fileList.GoToNext();; + args.KeyboardCommands.Add(new Actions.FocusChatView(this)); - var aiFile = args.Menu.Items.GetSubmenu("&File", 100); - args.Menu.Items.GetSubmenu("&View", 300); - args.Menu.Items.GetSubmenu("Options", 500); - var aiNetwork = args.Menu.Items.GetSubmenu("&Network", 600); - var aiHelp = args.Menu.Items.GetSubmenu("&Help", 1000); + var prevCommand = new Command { ID = "prev", MenuText = "Open &Previous", ToolTip = "Opens the previous file in the list", Shortcut = Keys.Alt | Keys.Up }; + prevCommand.Executed += (sender, e) => fileList.GoToPrevious(); ; + var nextCommand = new Command { ID = "next", MenuText = "Open &Next", ToolTip = "Opens the next file in the list", Shortcut = Keys.Alt | Keys.Down }; + nextCommand.Executed += (sender, e) => fileList.GoToNext(); ; + var aiFile = args.Menu.Items.GetSubmenu("&File", 100); + args.Menu.Items.GetSubmenu("&View", 300); + args.Menu.Items.GetSubmenu("Options", 500); + var aiNetwork = args.Menu.Items.GetSubmenu("&Network", 600); + var aiHelp = args.Menu.Items.GetSubmenu("&Help", 1000); - args.Menu.AboutItem = new Actions.About(this); - if (Platform.IsMac) - { - var quitCommand = new Command { MenuText = "Quit", ToolTip = "Close the application", Shortcut = Keys.Q | Keys.Application }; - quitCommand.Executed += (sender, e) => ExitApplication(); - args.Menu.QuitItem = quitCommand; - } - else - { - args.Menu.QuitItem = new Actions.Exit(this); - } + args.Menu.AboutItem = new Actions.About(this); + if (Platform.IsMac) + { + var quitCommand = new Command { MenuText = "Quit", ToolTip = "Close the application", Shortcut = Keys.Q | Keys.Application }; + quitCommand.Executed += (sender, e) => ExitApplication(); + args.Menu.QuitItem = quitCommand; + } + else + { + args.Menu.QuitItem = new Actions.Exit(this); + } - aiFile.Items.Add(new Actions.NewFile(this), 100); - aiFile.Items.Add(new Actions.OpenFile(this), 100); - aiFile.Items.Add(new Actions.EnclosingFolder(this), 100); - if (!EditMode) - { - aiFile.Items.Add(nextCommand, 100); - aiFile.Items.Add(prevCommand, 100); - aiFile.Items.AddSeparator(300); - aiFile.Items.Add(new Actions.DeleteFile(this), 300); - aiFile.Items.Add(new Actions.RenameFile(this), 300); - aiFile.Items.Add(new Actions.MoveFile(this), 300); - } - aiFile.Items.AddSeparator(400); - aiFile.Items.Add(new Actions.EditSauce(this), 500); - - if (canEdit) - aiFile.Items.Add(new Actions.EditFile(this), 500); - - aiFile.Items.Add(new Actions.EnableBackups(this), 500); - - // network - //#if DEBUG - aiNetwork.Items.Add(new Actions.ServerStart(this), 500); - aiNetwork.Items.Add(new Actions.ClientConnect(this), 500); - aiNetwork.Items.Add(new Actions.ServerStop(this), 500); - //#endif - - // help - aiHelp.Items.Add(new Actions.Readme(this), 500); + aiFile.Items.Add(new Actions.NewFile(this), 100); + aiFile.Items.Add(new Actions.OpenFile(this), 100); + aiFile.Items.Add(new Actions.EnclosingFolder(this), 100); + if (!EditMode) + { + aiFile.Items.Add(nextCommand, 100); + aiFile.Items.Add(prevCommand, 100); + + aiFile.Items.AddSeparator(300); + aiFile.Items.Add(new Actions.DeleteFile(this), 300); + aiFile.Items.Add(new Actions.RenameFile(this), 300); + aiFile.Items.Add(new Actions.MoveFile(this), 300); + } + aiFile.Items.AddSeparator(400); + aiFile.Items.Add(new Actions.EditSauce(this), 500); + + if (canEdit) + aiFile.Items.Add(new Actions.EditFile(this), 500); + + aiFile.Items.Add(new Actions.EnableBackups(this), 500); + + // network + //#if DEBUG + aiNetwork.Items.Add(new Actions.ServerStart(this), 500); + aiNetwork.Items.Add(new Actions.ClientConnect(this), 500); + aiNetwork.Items.Add(new Actions.ServerStop(this), 500); + //#endif + + // help + aiHelp.Items.Add(new Actions.Readme(this), 500); aiHelp.Items.Add(new Actions.Homepage(), 500); - args.ToolBar.Items.Add(new Actions.NewFile(this), 100); - args.ToolBar.Items.Add(new Actions.OpenFile(this), 100); - args.ToolBar.Items.Add(new Actions.EditSauce(this), 100); + args.ToolBar.Items.Add(new Actions.NewFile(this), 100); + args.ToolBar.Items.Add(new Actions.OpenFile(this), 100); + args.ToolBar.Items.Add(new Actions.EditSauce(this), 100); - if (Platform.IsMac) - { - args.ToolBar.Items.AddSeparator(800, SeparatorToolItemType.FlexibleSpace); - args.ToolBar.Items.Add(new Actions.ViewFile(this), 900); - args.ToolBar.Items.Add(new Actions.EditFileRadio(this), 900); - } - else - { - args.ToolBar.Items.AddSeparator(200); - args.ToolBar.Items.Add(new Actions.EditFile(this), 200); - } + if (Platform.IsMac) + { + args.ToolBar.Items.AddSeparator(800, SeparatorToolItemType.FlexibleSpace); + args.ToolBar.Items.Add(new Actions.ViewFile(this), 900); + args.ToolBar.Items.Add(new Actions.EditFileRadio(this), 900); + } + else + { + args.ToolBar.Items.AddSeparator(200); + args.ToolBar.Items.Add(new Actions.EditFile(this), 200); + } - if (handler != null) - handler.GenerateCommands(args); + if (handler != null) + handler.GenerateCommands(args); - var oldmenu = Menu; - var oldtoolbar = ToolBar; + var oldmenu = Menu; + var oldtoolbar = ToolBar; - Menu = args.Menu; - ToolBar = args.ToolBar; + Menu = args.Menu; + ToolBar = args.ToolBar; - Application.Instance.AsyncInvoke(() => - { - /*if (oldtoolbar != null) +#if DEBUG + Application.Instance.AsyncInvoke(() => + { + /*if (oldtoolbar != null) oldtoolbar.Dispose(); if (oldmenu != null) oldmenu.Dispose();*/ -#if DEBUG - GC.Collect(); - GC.WaitForPendingFinalizers(); + GC.Collect(); + GC.WaitForPendingFinalizers(); + }); #endif - }); - } - - public void ExitApplication() - { - var ce = new CancelEventArgs(); - OnClosing(ce); - if (!ce.Cancel) - { - Application.Instance.Quit(); - } - } + } - public void SetDocument(Document document, bool setFocus = false) - { - InternalSetDocument(document, true, null, null); - if (setFocus) - padpanel.Content.Focus(); - SetupEditMode(false, false); - GenerateActions(); - } - - void InternalSetDocument(Document document, bool postLoad, Stream stream, Format format) - { - loadingStream = stream; - Document olddoc = null; - // unlink old document - if (handler != null) - { - olddoc = handler.Document; - handler.ActionsChanged -= handler_ActionsChanged; - - if (olddoc != null && olddoc != document) - { - olddoc.Saved -= Document_Saved; - olddoc.Loaded -= Document_Loaded; - olddoc.Dispose(); - } - padpanel.Content = new Panel { BackgroundColor = Colors.Black }; - handler.Dispose(); - - handler = null; - } + public void ExitApplication() + { + var ce = new CancelEventArgs(); + OnClosing(ce); + if (!ce.Cancel) + { + Application.Instance.Quit(); + } + } + + public void SetDocument(Document document, bool setFocus = false) + { + InternalSetDocument(document, true, null, null); + if (setFocus) + padpanel.Content.Focus(); + SetupEditMode(false, false); + GenerateActions(); + } + + void InternalSetDocument(Document document, bool postLoad, Stream stream, Format format) + { + loadingStream = stream; + Document olddoc = null; + // unlink old document + if (handler != null) + { + olddoc = handler.Document; + handler.ActionsChanged -= handler_ActionsChanged; + + if (olddoc != null && olddoc != document) + { + olddoc.Saved -= Document_Saved; + olddoc.Loaded -= Document_Loaded; + olddoc.Dispose(); + } + padpanel.Content = new Panel { BackgroundColor = Colors.Black }; + handler.Dispose(); + + handler = null; + } #if DEBUG - GC.Collect(); - GC.WaitForPendingFinalizers(); + GC.Collect(); + GC.WaitForPendingFinalizers(); #endif - // new document - if (document != null) - { - var docName = string.IsNullOrEmpty(document.FileName) ? "" : Path.GetFileName(document.FileName); - Title = string.Format("{0} - {1}", TITLE, docName); - - if (olddoc != document) - { - document.Saved += Document_Saved; - document.Loaded += Document_Loaded; - } - - handler = document.CreateHandler(); - handler.ClientDelegate = this; - handler.Client = Client; - handler.ActionsChanged += handler_ActionsChanged; - - handler.PreLoad(stream, format); - - // TODO: RIP needs this PreLoad, WPF/ansi animation needs post pre-load - var viewerControl = handler.ViewerControl; - padpanel.Content = viewerControl; - - if (Client != null) - Client.SetCommands(Commands); + // new document + if (document != null) + { + var docName = string.IsNullOrEmpty(document.FileName) ? "" : Path.GetFileName(document.FileName); + Title = string.Format("{0} - {1}", TITLE, docName); - if (Server != null) - Server.SetCommands(ServerCommands); + if (olddoc != document) + { + document.Saved += Document_Saved; + document.Loaded += Document_Loaded; + } - if (postLoad) - { - handler.Loaded(); - } + handler = document.CreateHandler(); + handler.ClientDelegate = this; + handler.Client = Client; + handler.ActionsChanged += handler_ActionsChanged; - } - else - { - Title = TITLE; - GenerateActions(); - } + handler.PreLoad(stream, format); - if (postLoad) - PostLoad(); + // TODO: RIP needs this PreLoad, WPF/ansi animation needs post pre-load + var viewerControl = handler.ViewerControl; + padpanel.Content = viewerControl; - OnDocumentChanged(EventArgs.Empty); - } + if (Client != null) + Client.SetCommands(Commands); - void GeneratePads() - { - var padArgs = new GeneratePadArgs(); + if (Server != null) + Server.SetCommands(ServerCommands); - if (handler != null) - { - handler.GeneratePads(padArgs); - } + if (postLoad) + { + handler.Loaded(); + } - if (Client != null) - { - if (ChatPanel == null) - ChatPanel = new ChatPanel(this); - padArgs.BottomPads.Insert(0, ChatPanel); - } - else - ChatPanel = null; + } + else + { + Title = TITLE; + GenerateActions(); + } - padpanel.SetPads(padArgs); - } + if (postLoad) + PostLoad(); - void PostLoad() - { - SetupEditMode(false, false); - GeneratePads(); - if (loadingStream != null) - GenerateActions(); // background loading + OnDocumentChanged(EventArgs.Empty); + } - if (handler != null) - handler.PostLoad(); - } + void GeneratePads() + { + var padArgs = new GeneratePadArgs(); - Stream loadingStream; + if (handler != null) + { + handler.GeneratePads(padArgs); + } - public bool LoadFile(string fileName, Stream stream, Format format = null, bool editMode = false, bool setFileList = true, bool hasSavePermissions = true) - { + if (Client != null) + { + if (ChatPanel == null) + ChatPanel = new ChatPanel(this); + padArgs.BottomPads.Insert(0, ChatPanel); + } + else + ChatPanel = null; + + padpanel.SetPads(padArgs); + } + + void PostLoad() + { + SetupEditMode(false, false); + GeneratePads(); + if (loadingStream != null) + GenerateActions(); // background loading + + if (handler != null) + handler.PostLoad(); + } + + Stream loadingStream; + + public bool LoadFile(string fileName, Stream stream, Format format = null, bool editMode = false, bool setFileList = true, bool hasSavePermissions = true) + { if (format == null) { - format = Settings.Infos.FindFormat(fileName, "character", "ansi"); - if (format == null) - return false; - } - if (Client != null) - { - var doc = format.Info.Create(Platform); - if (editMode && doc.Info.CanEdit) - { - doc.EditMode = editMode; - doc.FileName = fileName; - doc.Load(stream, format, null); - doc.HasSavePermission = hasSavePermissions; - Client.SetDocument(doc); - } - else - { - using (var ms = new MemoryStream((int)stream.Length)) - { - stream.CopyTo(ms); - ms.Seek(0, SeekOrigin.Begin); - Client.SetFile(fileName, ms, format, editMode); - } - } - return true; - } - InternalLoadFile(fileName, stream, format, editMode, setFileList, hasSavePermissions); - return true; - } - - void InternalLoadFile(string fileName, Stream stream, Format format, bool editMode, bool setFileList, bool hasSavePermission) - { - try - { - var doc = format.Info.Create(Platform); - if (doc.Info.CanEdit) - doc.EditMode = editMode; - doc.HasSavePermission = hasSavePermission; - doc.FileName = fileName; - InternalSetDocument(doc, false, stream, format); - - /** + format = Settings.Infos.FindFormat(fileName, "character", "ansi"); + if (format == null) + return false; + } + if (Client != null) + { + var doc = format.Info.Create(Platform); + if (editMode && doc.Info.CanEdit) + { + doc.EditMode = editMode; + doc.FileName = fileName; + doc.Load(stream, format, null); + doc.HasSavePermission = hasSavePermissions; + Client.SetDocument(doc); + } + else + { + using (var ms = new MemoryStream((int)stream.Length)) + { + stream.CopyTo(ms); + ms.Seek(0, SeekOrigin.Begin); + Client.SetFile(fileName, ms, format, editMode); + } + } + return true; + } + InternalLoadFile(fileName, stream, format, editMode, setFileList, hasSavePermissions); + return true; + } + + void InternalLoadFile(string fileName, Stream stream, Format format, bool editMode, bool setFileList, bool hasSavePermission) + { + try + { + var doc = format.Info.Create(Platform); + if (doc.Info.CanEdit) + doc.EditMode = editMode; + doc.HasSavePermission = hasSavePermission; + doc.FileName = fileName; + InternalSetDocument(doc, false, stream, format); + + /** var bufferedStream = new MemoryStream(); stream.WriteTo(bufferedStream); stream.Close (); /**/ - var bufferedStream = new BufferedStream(stream, 20 * 1024); - - //Console.WriteLine ("Loading file {0}, format: {1}", fileName, format.GetType ()); - currentFormat = format; - handler.Load(bufferedStream, format); - if (setFileList) - { - shouldReload = false; - FileList.Initialize(fileName); - shouldReload = true; - } - - PostLoad(); - } - catch (Exception e) - { - SetDocument(null); - MessageBox.Show(this, string.Format("Unable to load the selected file ({0})", e)); + var bufferedStream = new BufferedStream(stream, 20 * 1024); + + //Console.WriteLine ("Loading file {0}, format: {1}", fileName, format.GetType ()); + currentFormat = format; + handler.Load(bufferedStream, format); + if (setFileList) + { + shouldReload = false; + FileList.Initialize(fileName); + shouldReload = true; + } + + PostLoad(); + } + catch (Exception e) + { + SetDocument(null); + MessageBox.Show(this, string.Format("Unable to load the selected file ({0})", e)); #if DEBUG - Debug.Print("Error loading: {0}", e); + Debug.Print("Error loading: {0}", e); #endif - } - } + } + } - void handler_ActionsChanged(Object sender, EventArgs e) - { - GenerateActions(); - } + void handler_ActionsChanged(Object sender, EventArgs e) + { + GenerateActions(); + } - void Document_Loaded(object sender, EventArgs e) - { - if (loadingStream != null) - { - loadingStream.Dispose(); - loadingStream = null; - PabloApplication.Instance.Invoke(delegate - { - GenerateActions(); - }); - } - } + void Document_Loaded(object sender, EventArgs e) + { + if (loadingStream != null) + { + loadingStream.Dispose(); + loadingStream = null; + PabloApplication.Instance.Invoke(delegate + { + GenerateActions(); + }); + } + } + + void Document_Saved(object sender, EventArgs e) + { + var document = sender as Document; + if (document != null) + { + fileList.Initialize(document.FileName, true); + Title = string.Format("{0} - {1}", TITLE, Path.GetFileName(document.FileName)); + } + } - void Document_Saved(object sender, EventArgs e) - { - var document = sender as Document; - if (document != null) - { - fileList.Initialize(document.FileName, true); - Title = string.Format("{0} - {1}", TITLE, Path.GetFileName(document.FileName)); - } - } + public bool LoadFile(string fileName, bool hasSavePermissions, bool setFileList = true, bool? editMode = null) + { + if (FileModifiedDialog.Show(this) != DialogResult.Ok) + return true; - public bool LoadFile(string fileName, bool hasSavePermissions, bool setFileList = true, bool? editMode = null) - { - if (FileModifiedDialog.Show(this) != DialogResult.Ok) - return true; + currentFormat = null; + currentFile = null; - currentFormat = null; - currentFile = null; + if (File.Exists(fileName)) + { + using (var stream = File.OpenRead(fileName)) + { + return LoadFile(fileName, stream, null, editMode ?? EditMode, setFileList, hasSavePermissions); + } + } + return false; + } + + public void ReloadFile(bool hasSavePermissions, bool focus, bool checkModifications) + { + if (!shouldReload) + return; + + if (checkModifications && FileModifiedDialog.Show(this) != DialogResult.Ok) + return; + + EtoFileInfo file = fileList.SelectedFile; + if (file != null) + { + //Console.WriteLine ("Reloading file: {0}, format:{1}", file.Name, currentFormat != null ? currentFormat.GetType () : null); + if (file != currentFile) + currentFormat = null; + currentFile = file; + Format format = currentFormat ?? Settings.Infos.FindFormat(file.FullName, "character", "ansi"); + if (format != null) + { + try + { + var stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.Read); + LoadFile(file.FullName, stream, format, EditMode, false, hasSavePermissions); + if (focus) + padpanel.Content.Focus(); + } + catch (Exception ex) + { + SetDocument(null); + MessageBox.Show(this, string.Format("Error loading file '{0}'. {1}", file.FullName, ex.Message)); +#if DEBUG + Debug.Print("Error loading: {0}", ex); + throw; +#endif + } + } + } + } - if (File.Exists(fileName)) - { - using (var stream = File.OpenRead(fileName)) - { - return LoadFile(fileName, stream, null, editMode ?? EditMode, setFileList, hasSavePermissions); - } - } - return false; - } + #region IClientDelegate implementation - public void ReloadFile(bool hasSavePermissions, bool focus, bool checkModifications) - { - if (!shouldReload) - return; + DocumentInfoCollection IClientDelegate.DocumentInfos + { + get + { + return Settings.Infos; + } + } - if (checkModifications && FileModifiedDialog.Show(this) != DialogResult.Ok) - return; + void IClientDelegate.SetDocument(Document document) + { + SetDocument(document, false); + } - EtoFileInfo file = fileList.SelectedFile; - if (file != null) - { - //Console.WriteLine ("Reloading file: {0}, format:{1}", file.Name, currentFormat != null ? currentFormat.GetType () : null); - if (file != currentFile) - currentFormat = null; - currentFile = file; - Format format = currentFormat ?? Settings.Infos.FindFormat(file.FullName, "character", "ansi"); - if (format != null) - { - try - { - var stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.Read); - LoadFile(file.FullName, stream, format, EditMode, false, hasSavePermissions); - if (focus) - padpanel.Content.Focus(); - } - catch (Exception ex) - { - SetDocument(null); - MessageBox.Show(this, string.Format("Error loading file '{0}'. {1}", file.FullName, ex.Message)); -#if DEBUG - Debug.Print("Error loading: {0}", ex); - throw; -#endif - } - } - } - } + void IClientDelegate.LoadFile(string fileName, Stream stream, bool editMode, Format format) + { + InternalLoadFile(fileName, stream, format, editMode, false, false); + } - #region IClientDelegate implementation + #endregion - DocumentInfoCollection IClientDelegate.DocumentInfos + public bool PromptSave() { - get + if (Document?.IsModified == true) { - return Settings.Infos; + var result = MessageBox.Show(this, "The current file has been modifieded. Do you wish to save?", MessageBoxButtons.YesNoCancel, MessageBoxType.Warning); + if (result == DialogResult.Yes) + { + var saveFile = new Pablo.Actions.SaveFile(ViewHandler); + saveFile.Execute(); + } + if (result == DialogResult.Cancel) + { + return false; + } } - } - void IClientDelegate.SetDocument(Document document) - { - SetDocument(document, false); - } - - void IClientDelegate.LoadFile(string fileName, Stream stream, bool editMode, Format format) - { - InternalLoadFile(fileName, stream, format, editMode, false, false); + return true; } - - #endregion - } + } } diff --git a/Source/Pablo/Document.cs b/Source/Pablo/Document.cs index d440605..13b2b8d 100644 --- a/Source/Pablo/Document.cs +++ b/Source/Pablo/Document.cs @@ -31,14 +31,18 @@ public abstract class Document : IDisposable, INetworkReadWrite public bool HasSavePermission { get; set; } + public bool IsLoading { get; private set; } + protected void OnStartLoad(EventArgs e) { + IsLoading = true; if (StartLoad != null) StartLoad(this, e); } protected void OnLoaded(EventArgs e) { + IsLoading = false; if (Loaded != null) Loaded(this, e); } diff --git a/Source/Pablo/Formats/Character/CharacterDocument.cs b/Source/Pablo/Formats/Character/CharacterDocument.cs index 86b21c2..2c60825 100644 --- a/Source/Pablo/Formats/Character/CharacterDocument.cs +++ b/Source/Pablo/Formats/Character/CharacterDocument.cs @@ -105,7 +105,7 @@ public CharacterDocument(DocumentInfo info) : base(info) defaultSize = new Size(80, EditSize); defaultPalette = Palette.GetDosPalette(); Initialize(1, defaultSize); - + Info.Use9xChanged += Info_Use9xChanged; Info.SelectedFontChanged += Info_SelectedFontChanged; SetFont(true); @@ -160,6 +160,11 @@ void Initialize(int numPages, Size canvasSize) for (int i = 0; i < numPages; i++) { var page = new Page(this, canvasSize, defaultFont, defaultPalette); + page.Canvas.Update += delegate + { + if (!IsLoading) + IsModified = true; + }; pages[i] = page; } } @@ -167,7 +172,7 @@ void Initialize(int numPages, Size canvasSize) public bool ResizeCanvas { get { return resizeCanvas; } - + } public override Size Size @@ -183,7 +188,7 @@ public Page[] Pages protected override void LoadingAnimated(Stream stream, Format format, Handler handler) { base.LoadingAnimated(stream, format, handler); - + var canAnimate = true; var charFormat = format as CharacterFormat; if (charFormat != null) @@ -228,9 +233,8 @@ protected override void LoadStream(Stream stream, Format format, Handler handler resizeCanvas = true; var charFormat = (CharacterFormat)format; use9x = charFormat.Use9pxFont; - - - IsModified = false; + + if (Sauce != null) { var info = Sauce.TypeInfo as Sauce.Types.BaseText.DataTypeInfo; @@ -251,12 +255,9 @@ protected override void LoadStream(Stream stream, Format format, Handler handler SetFont(false, false); Pages[0].Palette = defaultPalette; Pages[0].Load(stream, charFormat, (CharacterHandler)handler, resizeCanvas); - + UpdateCanvasSize(Pages[0], Info.AutoResize); - Pages[0].Canvas.Update += delegate - { - IsModified = true; - }; + IsModified = false; } void UpdateCanvasSize(Page page, bool resizeNonEdit) @@ -356,12 +357,12 @@ public override bool Send(SendCommandArgs args) args.Message.WritePadBits(); using (var stream = new MemoryStream()) { - + var type = new Types.Pablo(Info); type.Save(stream, this); stream.Flush(); stream.Seek(0, SeekOrigin.Begin); - + args.Message.WriteStream(stream); } return true; From 358166f8c5da92d3526e2c382f0f66b9b78bc5ad Mon Sep 17 00:00:00 2001 From: Curtis Wensley Date: Sat, 30 Jan 2021 11:45:40 -0800 Subject: [PATCH 6/8] Fixes for attribute dialog and color editor - Save attribute dialog bounds properly - Set size of label in color editor properly --- .../Character/Controls/AttributeDialog.cs | 18 ++++++++++-------- .../Formats/Character/Controls/ColourEditor.cs | 4 ++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Source/Pablo/Formats/Character/Controls/AttributeDialog.cs b/Source/Pablo/Formats/Character/Controls/AttributeDialog.cs index da18f97..b7a41ca 100644 --- a/Source/Pablo/Formats/Character/Controls/AttributeDialog.cs +++ b/Source/Pablo/Formats/Character/Controls/AttributeDialog.cs @@ -1,4 +1,5 @@ using System; +using System.ComponentModel; using Eto.Drawing; using Eto.Forms; @@ -38,7 +39,7 @@ public AttributeDialog(CharacterHandler handler, Palette palette, Attribute attr #if DESKTOP this.Resizable = true; #endif - + TableLayout layout = new TableLayout(1, 2); colours = new ColourSelection(palette, attribute); @@ -52,15 +53,15 @@ public AttributeDialog(CharacterHandler handler, Palette palette, Attribute attr Content = layout; } - protected override void OnLoadComplete (EventArgs e) + protected override void OnLoadComplete(EventArgs e) { - base.OnLoadComplete (e); - colours.Focus (); + base.OnLoadComplete(e); + Application.Instance.AsyncInvoke(colours.Focus); } - - protected override void OnClosed (EventArgs e) + + protected override void OnClosing(CancelEventArgs e) { - base.OnClosed (e); + base.OnClosing(e); handler.CharacterDocument.Info.AttributeDialogBounds = this.RestoreBounds; handler.CharacterDocument.Info.AttributeDialogSize = this.ClientSize; } @@ -73,7 +74,8 @@ void colours_Selected(object sender, EventArgs e) private Control GenerateButtons() { - TableLayout layout = new TableLayout(1,1) { + TableLayout layout = new TableLayout(1, 1) + { Size = new Size(150, 28) }; layout.Spacing = new Size(5, 5); diff --git a/Source/Pablo/Formats/Character/Controls/ColourEditor.cs b/Source/Pablo/Formats/Character/Controls/ColourEditor.cs index a33bfe0..4e0a1dc 100644 --- a/Source/Pablo/Formats/Character/Controls/ColourEditor.cs +++ b/Source/Pablo/Formats/Character/Controls/ColourEditor.cs @@ -102,11 +102,11 @@ public ColourEditor(CharacterHandler handler) }; layout.Add(new Label { - Text = "Double click a colour to change it. Note that most formats only support up to 16 colours, except for Tundra and Ansi format", + Text = "Double click a colour to change it.\nNote that most formats only support up to 16 colours, except for Tundra and Ansi format.", Wrap = WrapMode.Word, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center, - Width = 1, Height = Platform.IsWinForms ? 46 : -1 + Width = 300 }); layout.BeginVertical(xscale: true, yscale: true); From d17a8b69d4ea58d4787c40cbe446ad033e43ec4f Mon Sep 17 00:00:00 2001 From: Curtis Wensley Date: Sat, 30 Jan 2021 11:47:56 -0800 Subject: [PATCH 7/8] Allow user to set both width and height of canvas - update server version --- .../Formats/Character/Actions/SetWidth.cs | 22 +-- .../Formats/Character/Controls/WidthDialog.cs | 131 ++++++++++-------- Source/Pablo/Network/Server.cs | 2 +- 3 files changed, 84 insertions(+), 71 deletions(-) diff --git a/Source/Pablo/Formats/Character/Actions/SetWidth.cs b/Source/Pablo/Formats/Character/Actions/SetWidth.cs index f4eace2..cac33dc 100644 --- a/Source/Pablo/Formats/Character/Actions/SetWidth.cs +++ b/Source/Pablo/Formats/Character/Actions/SetWidth.cs @@ -13,9 +13,9 @@ public class SetWidth : PabloCommand public SetWidth (CharacterHandler handler) : base(handler) { ID = ActionID; - MenuText = "Set Canvas &Width..."; - ToolBarText = "Set Width"; - ToolTip = "Sets the canvas width"; + MenuText = "Set Canvas &Size..."; + ToolBarText = "Set Size"; + ToolTip = "Sets the canvas size"; Image = ImageCache.IconFromResource("Pablo.Icons.setwidth.ico"); } @@ -30,18 +30,18 @@ protected override void Execute (CommandExecuteArgs args) CharacterHandler handler = base.Handler as CharacterHandler; var size = handler.CurrentPage.Canvas.Size; var dialog = new WidthDialog (); - dialog.Width = size.Width; + dialog.CanvasSize = size; var result = dialog.ShowModal (handler.Viewer as Control); if (result == DialogResult.Ok) { - DoResize (dialog.Width); + DoResize (dialog.CanvasSize); } } - void DoResize(int width) + void DoResize(Size canvasSize) { CharacterHandler handler = base.Handler as CharacterHandler; var size = handler.CurrentPage.Canvas.Size; - size.Width = width; + size = canvasSize; handler.CurrentPage.Canvas.ResizeCanvas (size, true, true); var pos = handler.CursorPosition; @@ -57,10 +57,10 @@ public override bool Send (SendCommandArgs args) CharacterHandler handler = base.Handler as CharacterHandler; var size = handler.CurrentPage.Canvas.Size; var dialog = new WidthDialog (); - dialog.Width = size.Width; + dialog.CanvasSize = size; var result = dialog.ShowModal(handler.Viewer as Control); if (result == DialogResult.Ok) { - args.Message.WriteVariableInt32 (dialog.Width); + args.Message.Write (dialog.CanvasSize); return true; } else @@ -70,8 +70,8 @@ public override bool Send (SendCommandArgs args) public override void Receive (ReceiveCommandArgs args) { base.Receive (args); - int width = args.Message.ReadVariableInt32 (); - DoResize (width); + var size = args.Message.ReadSize (); + DoResize (size); } } } diff --git a/Source/Pablo/Formats/Character/Controls/WidthDialog.cs b/Source/Pablo/Formats/Character/Controls/WidthDialog.cs index 325cb07..5d03868 100644 --- a/Source/Pablo/Formats/Character/Controls/WidthDialog.cs +++ b/Source/Pablo/Formats/Character/Controls/WidthDialog.cs @@ -6,94 +6,107 @@ namespace Pablo.Formats.Character.Controls { public class WidthDialog : Dialog { - int width; - TextBox widthControl; - - Control WidthControl () + NumericStepper widthControl; + NumericStepper heightControl; + + Control WidthControl() { - widthControl = new TextBox (); - widthControl.TextChanged += delegate { - int.TryParse (widthControl.Text, out width); - }; + widthControl = new NumericStepper { MinValue = 1, MaxValue = 5000 }; return widthControl; } - - Control OkButton () + + Control HeightControl() + { + heightControl = new NumericStepper { MinValue = 1, MaxValue = 10000 }; + return heightControl; + } + + Control OkButton() { - var control = new Button{ + var control = new Button + { Text = "Ok" }; - control.Click += delegate { - if (int.TryParse (widthControl.Text, out width)) { - if (width > 0 && width <= 5000) { - Result = DialogResult.Ok; - Close (); - } else { - MessageBox.Show(this, "Width must be a numeric value between 1 and 5000"); - } - } + control.Click += delegate + { + Result = DialogResult.Ok; + Close(); }; this.DefaultButton = control; return control; } - - Control CancelButton () + + Control CancelButton() { - var control = new Button{ + var control = new Button + { Text = "Cancel" }; - control.Click += delegate { + control.Click += delegate + { Result = DialogResult.Cancel; - Close (); + Close(); }; base.AbortButton = control; return control; } - - Control Buttons () + + Control Buttons() { - var layout = new TableLayout (3, 1); - layout.Padding = Padding.Empty; - - layout.SetColumnScale (0); - - layout.Add (CancelButton (), 1, 0); - layout.Add (OkButton (), 2, 0); + var layout = new TableLayout(3, 1); + layout.Spacing = new Size(5, 5); + + layout.SetColumnScale(0); + + layout.Add(CancelButton(), 1, 0); + layout.Add(OkButton(), 2, 0); return layout; } - - public int Width { - get { return width; } - set { - width = value; - widthControl.Text = width.ToString (); + + public Size CanvasSize + { + get { return new Size((int)widthControl.Value, (int)heightControl.Value); } + set + { + widthControl.Value = value.Width; + heightControl.Value = value.Height; } } - - Control WidthRow () + + Control WidthRow() { - var layout = new TableLayout (2, 2); + var layout = new DynamicLayout(); layout.Padding = new Padding(20, 10, 20, 0); - - layout.Add (new Label{ Text = "Canvas Width", VerticalAlign = VerticalAlign.Middle }, 0, 0); - layout.Add (WidthControl (), 1, 0, true, false); + + layout.BeginHorizontal(); + layout.AddSpace(); + layout.Add(new Label { Text = "Canvas Size", VerticalAlignment = VerticalAlignment.Center }); + layout.Add(WidthControl()); + layout.Add(HeightControl()); + layout.AddSpace(); + + layout.EndHorizontal(); + return layout; } - - public WidthDialog () + + public WidthDialog() { //this.ClientSize = new Size (350, 160); - - var toplayout = new TableLayout (1, 3); - toplayout.Padding = new Padding (10); - - toplayout.Add (new Label{ - Text = "Set the width of the canvas.\nNote that ANSI and ASCII are usually maximum 80 columns,\nand BIN (Binary) files are usually 160 characters.\nAnything larger that 500 wide may cause PabloDraw to become slow or unresponsive.", - VerticalAlign = VerticalAlign.Middle, - HorizontalAlign = HorizontalAlign.Center - }, 0, 0, true, true); - toplayout.Add (WidthRow (), 0, 1); - toplayout.Add (Buttons (), 0, 2); + + var toplayout = new DynamicLayout(); + toplayout.Padding = new Padding(10); + toplayout.Spacing = new Size(5, 5); + + toplayout.Add(new Label + { + Text = "Set the size of the canvas.\nNote that ANSI and ASCII are usually maximum 80 columns,\nand BIN (Binary) files are usually 160 characters.\nAnything larger that 500 wide may cause PabloDraw to become slow or unresponsive.", + Wrap = WrapMode.Word, + VerticalAlignment = VerticalAlignment.Center, + TextAlignment = TextAlignment.Center + }, yscale: true); + toplayout.Add(WidthRow()); + toplayout.Add(Buttons()); Content = toplayout; } diff --git a/Source/Pablo/Network/Server.cs b/Source/Pablo/Network/Server.cs index 4483b7a..53a444d 100644 --- a/Source/Pablo/Network/Server.cs +++ b/Source/Pablo/Network/Server.cs @@ -15,7 +15,7 @@ namespace Pablo.Network { public class Server : Network { - public const int VERSION = 7; + public const int VERSION = 8; bool mappedPort; NetServer server; static INatDevice natdevice; From 5df061108c53e1a8b4041466ec980c7ad7231732 Mon Sep 17 00:00:00 2001 From: Curtis Wensley Date: Sat, 30 Jan 2021 12:42:03 -0800 Subject: [PATCH 8/8] Enable GitHub Actions CI --- .github/workflows/build.yml | 117 ++++++++++++++++++++++++++++++ .vscode/tasks.json | 33 +++++++++ Source/PabloDraw/PabloDraw.csproj | 13 +++- 3 files changed, 160 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..610a6b3 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,117 @@ +name: Build + +on: + push: + branches: [ main ] + tags: [ '*' ] + pull_request: + branches: [ main ] + +env: + DotNetVersion: "5.0.x" + BuildConfiguration: "Release" + BuildParameters: "Source/PabloDraw/PabloDraw.csproj /clp:NoSummary /p:Configuration=Release /p:BuildVersion=${{ github.run_id }} /p:BuildBranch=${{ github.ref }}" + +jobs: + build-windows: + + runs-on: windows-latest + + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{ env.DotNetVersion }} + + - run: dotnet publish ${{ env.BuildParameters }} -f net5.0-windows -r win-x64 + + - uses: actions/upload-artifact@v2 + with: + name: pablodraw-windows + path: artifacts/bin/${{ env.BuildConfiguration }}/net5.0-windows/win-x64/publish/* + + build-linux: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{ env.DotNetVersion }} + + - run: dotnet publish ${{ env.BuildParameters }} -f net5.0 -r linux-x64 + + - uses: actions/upload-artifact@v2 + with: + name: pablodraw-linux + path: artifacts/bin/${{ env.BuildConfiguration }}/net5.0/linux-x64/publish/* + + build-mac: + + runs-on: macos-latest + + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{ env.DotNetVersion }} + + - uses: maxim-lobanov/setup-xamarin@v1 + with: + mono-version: latest + xamarin-mac-version: latest + xcode-version: latest + + # - name: Import code signing certificate + # if: github.event_name != 'pull_request' + # uses: apple-actions/import-codesign-certs@v1 + # with: + # p12-file-base64: ${{ secrets.DEVID_CERTIFICATE_P12 }} + # p12-password: ${{ secrets.DEVID_CERTIFICATE_P12_PASSWORD }} + + # - name: Enable code signing + # if: github.event_name != 'pull_request' + # run: echo "BuildParameters=${{ env.BuildParameters }} /p:EnableCodeSignBuild=True" >> $GITHUB_ENV + + # - name: Set notarization credentials + # if: startsWith(github.ref, 'refs/tags/') + # run: | + # xcrun altool --store-password-in-keychain-item "AC_PASSWORD" -u "${{ secrets.AC_USERNAME }}" -p "${{ secrets.AC_PASSWORD }}" + # echo "BuildParameters=${{ env.BuildParameters }} /p:EnableNotarizationBuild=True" >> $GITHUB_ENV + + - run: dotnet build ${{ env.BuildParameters }} -f net5.0 -r osx-x64 + + - uses: actions/upload-artifact@v2 + with: + name: pablodraw-mac + path: artifacts/bin/${{ env.BuildConfiguration }}/net5.0/osx-x64/PabloDraw.dmg + + update-release: + needs: [ build-windows, build-mac ] + runs-on: ubuntu-latest + if: (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) + steps: + - id: get_version + run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/} + + - id: get_release + uses: bruceadams/get-release@v1.2.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/download-artifact@v2 + with: + name: pablodraw + + # - uses: actions/upload-release-asset@v1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.get_release.outputs.upload_url }} + # asset_path: + # asset_name: + # asset_content_type: application/octet-stream diff --git a/.vscode/tasks.json b/.vscode/tasks.json index a7e7858..de10880 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -28,6 +28,7 @@ "args": [ "build", "${workspaceFolder}/Source/PabloDraw/PabloDraw.csproj", + // "/p:BuildTarget=Linux", "/p:Configuration=${config:var.BuildConfiguration}", "/p:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" @@ -37,6 +38,38 @@ "clear": true }, "problemMatcher": "$msCompile" + }, + { + "label": "publish-pablodraw", + "command": "dotnet", + "type": "shell", + "args": [ + "publish", + "${workspaceFolder}/Source/PabloDraw/PabloDraw.csproj", + // "/p:BuildTarget=Linux", + "/p:Configuration=Release", + "/p:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "group": "build", + "presentation": { + "clear": true + }, + "problemMatcher": "$msCompile" + }, + { + "label": "run-published", + "type": "shell", + "osx": { + "command": "${workspaceFolder}/artifacts/bin/Release/net5.0/osx-x64/PabloDraw.app/Contents/MacOS/PabloDraw", + }, + "windows": { + "command": "${workspaceFolder}/artifacts/bin/Release/net5.0-windows/win-x64/publish/PabloDraw.exe", + }, + "linux": { + "command": "${workspaceFolder}/artifacts/bin/Release/net5.0/linux-x64/publish/PabloDraw", + }, + "problemMatcher": [ ] } ] } \ No newline at end of file diff --git a/Source/PabloDraw/PabloDraw.csproj b/Source/PabloDraw/PabloDraw.csproj index fe223b9..bb47883 100644 --- a/Source/PabloDraw/PabloDraw.csproj +++ b/Source/PabloDraw/PabloDraw.csproj @@ -21,27 +21,34 @@ net5.0-windows win-x64 - True WINDOWS + True true + net5.0 linux-x64 LINUX + net5.0 osx-x64 MAC + + True + + + $(DefineConstants);DESKTOP - + True True True @@ -61,7 +68,7 @@ - +