소스 검색

Merge branch 'release/1.1.27'

Antony Male 4 년 전
부모
커밋
4c35fcc85d
35개의 변경된 파일215개의 추가작업 그리고 86개의 파일을 삭제
  1. 7 0
      CHANGELOG.md
  2. 1 2
      README.md
  3. 31 0
      Rakefile
  4. 15 4
      installer/common.iss
  5. BIN
      installer/x64/vc++/concrt140.dll
  6. BIN
      installer/x64/vc++/msvcp140.dll
  7. BIN
      installer/x64/vc++/vccorlib140.dll
  8. BIN
      installer/x64/vc++/vcruntime140.dll
  9. BIN
      installer/x86/vc++/concrt140.dll
  10. BIN
      installer/x86/vc++/msvcp140.dll
  11. BIN
      installer/x86/vc++/vccorlib140.dll
  12. BIN
      installer/x86/vc++/vcruntime140.dll
  13. 5 4
      server/version_check.php
  14. BIN
      src/SyncTrayzor/Icons/alert_tray.ico
  15. 9 9
      src/SyncTrayzor/Icons/alert_tray.svg
  16. BIN
      src/SyncTrayzor/Icons/default_tray.ico
  17. BIN
      src/SyncTrayzor/Icons/paused_tray.ico
  18. 9 9
      src/SyncTrayzor/Icons/paused_tray.svg
  19. BIN
      src/SyncTrayzor/Icons/stopped.ico
  20. 11 8
      src/SyncTrayzor/Icons/stopped.svg
  21. BIN
      src/SyncTrayzor/Icons/syncing_2.ico
  22. 11 8
      src/SyncTrayzor/Icons/syncing_2.svg
  23. BIN
      src/SyncTrayzor/Icons/syncing_3.ico
  24. 11 8
      src/SyncTrayzor/Icons/syncing_3.svg
  25. BIN
      src/SyncTrayzor/Icons/syncing_4.ico
  26. 11 8
      src/SyncTrayzor/Icons/syncing_4.svg
  27. 4 3
      src/SyncTrayzor/Pages/Settings/SettingsView.xaml
  28. 2 1
      src/SyncTrayzor/Pages/ViewerView.xaml
  29. 4 3
      src/SyncTrayzor/SyncTrayzor.csproj
  30. 2 0
      src/SyncTrayzor/Syncthing/ApiClient/EventConverter.cs
  31. 0 15
      src/SyncTrayzor/Syncthing/ApiClient/EventType.cs
  32. 2 2
      src/SyncTrayzor/Syncthing/ApiClient/ISyncthingApi.cs
  33. 2 2
      src/SyncTrayzor/Syncthing/ApiClient/SyncthingApiClient.cs
  34. 2 0
      src/SyncTrayzor/Syncthing/SyncthingProcessRunner.cs
  35. 76 0
      src/SyncTrayzor/app.manifest

+ 7 - 0
CHANGELOG.md

@@ -1,6 +1,13 @@
 Changelog
 =========
 
+v1.1.27
+-------
+
+ - Fix crashes on a small number of machines (#602, #603)
+ - Wrap text on Settings screen (#540)
+ - Improve appearance on high-DPI displays (#559)
+
 v1.1.26
 -------
 

+ 1 - 2
README.md

@@ -205,8 +205,7 @@ If you want to manually upgrade (e.g. to a beta version) you should download Syn
 Building from Source
 --------------------
 
-You'll need [Visual Studio 2017](https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx).
-Make sure you install "Blend for Visual Studio SDK for .NET".
+You'll need Visual Studio 2019.
 Clone/download the repository, open `src\SyncTrayzor.sln`, and compile.
 You'll also need to [download syncthing.exe](https://github.com/syncthing/syncthing/releases) and place it in the `bin\x86\Debug`, `bin\x64\Debug`, `bin\x86\Release`, or `bin\x64\Release` folder as appropriate.
 

+ 31 - 0
Rakefile

@@ -199,6 +199,11 @@ namespace :portable do
             cp_to_portable(portable_dir, file)
           end
         end
+        Dir.chdir(File.join(arch_config.installer_dir, 'vc++')) do
+          FileList['*.dll'].each do |file|
+            cp_to_portable(portable_dir, file)
+          end
+        end
         Dir.chdir(arch_config.installer_dir) do
           cp_to_portable(portable_dir, arch_config.syncthing_binaries[PORTABLE_SYNCTHING_VERSION], 'syncthing.exe')
         end
@@ -379,4 +384,30 @@ namespace :tx do
     response = tx_client.upload_source(source_resx)
     puts "Added: #{response['strings_added']}. Updated: #{response['strings_updated']}. Deleted: #{response['strings_delete']}."
   end
+end
+
+namespace :icons do
+  desc "Create a tray icon (pass 256x256 source)"
+  task :"tray-icon", [:source] do |t,args|
+    source = args[:source]
+    # See https://wiki.lazarus.freepascal.org/Windows_Icon
+    sizes = [
+      16, 32, # Normal 96 DPI
+      20, 40, # 120 DPI (125%)
+      24, 48, # 144 DPI (150%)
+      32, 64, # 192 DPI (200%)
+      36, 72, # 225%
+      40, 80, # 250%
+      44, 88, # 275%
+      48, 96, # 300%
+    ].uniq.sort
+    raise "Need a source image" unless source
+    Dir.chdir(File.join('src', 'SyncTrayzor', 'Icons')) do
+      sizes.each do |size|
+        sh 'magick', 'convert', source, '-resize', "#{size}x#{size}", source.pathmap("%n-#{size}%x")
+      end
+      sh 'magick', 'convert', *sizes.map{ |x| source.pathmap("%n-#{x}%x") }, source.pathmap('%n.ico')
+      rm sizes.map{ |x| source.pathmap("%n-#{x}%x") }
+    end    
+  end
 end

+ 15 - 4
installer/common.iss

@@ -25,7 +25,6 @@ AppUpdatesURL={#AppURL}
 DefaultDirName={commonpf}\{#AppName}
 DefaultGroupName={#AppName}
 AllowNoIcons=yes
-LicenseFile={#AppRoot}\LICENSE.txt
 OutputDir="."
 OutputBaseFilename={#AppName}Setup-{#Arch}
 SetupIconFile={#AppSrc}\Icons\default.ico
@@ -40,6 +39,9 @@ RestartApplications=no
 ; However if we close *just* SyncTrayzor, that will take care of shutting down CefSharp and syncthing
 CloseApplicationsFilter=SyncTrayzor.exe
 TouchDate=current
+WizardStyle=modern
+; We do access user areas, but only as a best-effort attempt to clean up after ourselves
+UsedUserAreasWarning=no
 #if "x64" == Arch
 ArchitecturesInstallIn64BitMode=x64
 ArchitecturesAllowed=x64
@@ -66,14 +68,22 @@ Name: "{userappdata}\{#AppDataFolder}"
 ; Near the beginning, as it's extracted first and this makes it cheaper
 Source: "..\{#DotNetInstallerExe}"; DestDir: {tmp}; Flags: dontcopy nocompression noencryption
 
-Source: "{#AppBin}\*"; DestDir: "{app}"; Excludes: "*.xml,*.vshost.*,*.config,*.log,FluentValidation.resources.dll,System.Windows.Interactivity.resources.dll,syncthing.exe,data,logs,cef_extensions.pak,d3dcompiler_47.dll,libEGL.dll,libGLESv2.dll,swiftshader/libEGL.dll,swiftshader/libGLESv2.dll"; Flags: ignoreversion recursesubdirs
+Source: "{#AppBin}\*"; DestDir: "{app}"; Excludes: "*.xml,*.vshost.*,*.config,*.log,*.pdb,FluentValidation.resources.dll,System.Windows.Interactivity.resources.dll,syncthing.exe,data,logs,cef_extensions.pak,d3dcompiler_47.dll,libEGL.dll,libGLESv2.dll,swiftshader/libEGL.dll,swiftshader/libGLESv2.dll"; Flags: ignoreversion recursesubdirs
 Source: "{#AppBin}\SyncTrayzor.exe.Installer.config"; DestDir: "{app}"; DestName: "SyncTrayzor.exe.config"; Flags: ignoreversion
 Source: "{#AppSrc}\Icons\default.ico"; DestDir: "{app}"; Flags: ignoreversion
 Source: "{#AppRoot}\*.md"; DestDir: "{app}"; Flags: ignoreversion
 Source: "{#AppRoot}\*.txt"; DestDir: "{app}"; Flags: ignoreversion
+Source: "vc++\*.dll"; DestDir: "{app}"; Flags: ignoreversion
 Source: "ucrt\*.dll"; DestDir: "{app}"; Flags: ignoreversion; OnlyBelowVersion: 10.0
 Source: "syncthing.exe"; DestDir: "{app}"; DestName: "syncthing.exe"; Flags: ignoreversion
 
+[InstallDelete]
+Type: files; Name: "{app}\msvcp120.dll"
+Type: files; Name: "{app}\msvcr120.dll"
+Type: files; Name: "{app}\vccorlib120.dll"
+Type: files; Name: "{app}\*.pdb"
+Type: files; Name: "{app}\System.Windows.Interactivity.dll"
+
 [Icons]
 Name: "{group}\{#AppName}"; Filename: "{app}\{#AppExeName}"
 Name: "{group}\{cm:UninstallProgram,{#AppName}}"; Filename: "{uninstallexe}"
@@ -179,8 +189,9 @@ begin
   URLLabel.Parent := WizardForm;
   URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
   URLLabel.Font.Color := clBlue;
-  URLLabel.Top := WizardForm.ClientHeight - URLLabel.Height - 15;
-  URLLabel.Left := ScaleX(10)
+  URLLabel.Top := WizardForm.ClientHeight - URLLabel.Height - 30;
+  URLLabel.Left := ScaleX(20)
+  URLLabel.Anchors := [akLeft, akBottom]
   URLLabel.OnClick := @URLLabelOnClick;
 end;
 

BIN
installer/x64/vc++/concrt140.dll


BIN
installer/x64/vc++/msvcp140.dll


BIN
installer/x64/vc++/vccorlib140.dll


BIN
installer/x64/vc++/vcruntime140.dll


BIN
installer/x86/vc++/concrt140.dll


BIN
installer/x86/vc++/msvcp140.dll


BIN
installer/x86/vc++/vccorlib140.dll


BIN
installer/x86/vc++/vcruntime140.dll


+ 5 - 4
server/version_check.php

@@ -65,7 +65,7 @@ function get_with_wildcard($src, $value, $default = null)
 }
 
 $versions = [
-   '1.1.26' => [
+   '1.1.27' => [
       'base_url' => 'https://github.com/canton7/SyncTrayzor/releases/download',
       'installed' => [
          'direct_download_url' => [
@@ -82,7 +82,7 @@ $versions = [
       'sha1sum_download_url' => "{base_url}/v{version}/sha1sum.txt.asc",
       'sha512sum_download_url' => "{base_url}/v{version}/sha512sum.txt.asc",
       'release_page_url' => 'https://github.com/canton7/SyncTrayzor/releases/tag/v{version}',
-      'release_notes' => "- Add touch support\n- Minor UI updates (#538, #540, #541, #543)\n- Uninstaller tries to remove autostart registry keys (#586)",
+      'release_notes' => "- Add touch support\n- Minor UI updates (#538, #540, #541, #543)\n- Wrap text on Settings screen (#540)\n- Improve appearance on high-DPI displays (#559)\n- Uninstaller tries to remove autostart registry keys (#586)",
    ],
    '1.1.21' => [
       'base_url' => 'https://synctrayzor.antonymale.co.uk/download',
@@ -106,8 +106,9 @@ $versions = [
 ];
 
 $upgrades = [
-   '1.1.25' => ['to' => 'latest', 'formatter' => '5', 'overrides' => ['release_notes' => "- Fix the problems in v1.1.25 (#594, #595, #596, #597)\n- Uninstaller tries to remove autostart registry keys (#586)"]],
-   '1.1.24' => ['to' => 'latest', 'formatter' => '5'],
+   '1.1.26' => ['to' => 'latest', 'formatter' => '5', 'overrides' => ['release_notes' => "- Fix crashes on a small number of machines (#602, #603)\n- Wrap text on Settings screen (#540)\n- Improve appearance on high-DPI displays (#559)"]],
+   '1.1.25' => ['to' => 'latest', 'formatter' => '5', 'overrides' => ['release_notes' => "- Fix the problems in v1.1.25 (#594, #595, #596, #597, #602, #603)\n- Wrap text on Settings screen (#540)\n- Improve appearance on high-DPI displays (#559)\n- Uninstaller tries to remove autostart registry keys (#586)"]],
+   '1.1.24' => ['to' => 'latest', 'formatter' => '5', 'overrides' => ['release_notes' => "- Add touch support\n- Wrap text on Settings screen (#540)\n- Improve appearance on high-DPI displays (#559)\n- Uninstaller tries to remove autostart registry keys (#586)"]],
    '1.1.23' => ['to' => 'latest', 'formatter' => '5'],
    '1.1.22' => ['to' => 'latest', 'formatter' => '5'],
    '1.1.21' => ['to' => 'latest', 'formatter' => '5'],

BIN
src/SyncTrayzor/Icons/alert_tray.ico


+ 9 - 9
src/SyncTrayzor/Icons/alert_tray.svg

@@ -11,14 +11,14 @@
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    id="svg3004"
    version="1.1"
-   inkscape:version="0.91 r13725"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
    width="128"
    height="128"
    xml:space="preserve"
    sodipodi:docname="alert_tray.svg"
-   inkscape:export-filename="C:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Icons\alert_tray_32.png"
-   inkscape:export-xdpi="22.5"
-   inkscape:export-ydpi="22.5"><metadata
+   inkscape:export-filename="C:\Users\Antony\Documents\Projects\SyncTrayzor\src\SyncTrayzor\Icons\alert_tray.png"
+   inkscape:export-xdpi="384"
+   inkscape:export-ydpi="384"><metadata
      id="metadata3010"><rdf:RDF><cc:Work
          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
@@ -55,8 +55,8 @@
      guidetolerance="10"
      inkscape:pageopacity="0"
      inkscape:pageshadow="2"
-     inkscape:window-width="1920"
-     inkscape:window-height="1059"
+     inkscape:window-width="2736"
+     inkscape:window-height="1699"
      id="namedview3006"
      showgrid="true"
      fit-margin-top="0"
@@ -64,10 +64,10 @@
      fit-margin-right="0"
      fit-margin-bottom="0"
      inkscape:zoom="1.4142136"
-     inkscape:cx="-82.450986"
+     inkscape:cx="-255.69214"
      inkscape:cy="17.123559"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
+     inkscape:window-x="-13"
+     inkscape:window-y="-13"
      inkscape:window-maximized="1"
      inkscape:current-layer="layer1"
      inkscape:snap-global="true"

BIN
src/SyncTrayzor/Icons/default_tray.ico


BIN
src/SyncTrayzor/Icons/paused_tray.ico


+ 9 - 9
src/SyncTrayzor/Icons/paused_tray.svg

@@ -11,14 +11,14 @@
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    id="svg3004"
    version="1.1"
-   inkscape:version="0.91 r13725"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
    width="128"
    height="128"
    xml:space="preserve"
    sodipodi:docname="paused_tray.svg"
-   inkscape:export-filename="C:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Icons\paused_tray_32.png"
-   inkscape:export-xdpi="22.5"
-   inkscape:export-ydpi="22.5"><metadata
+   inkscape:export-filename="C:\Users\Antony\Documents\Projects\SyncTrayzor\src\SyncTrayzor\Icons\paused_tray.png"
+   inkscape:export-xdpi="192"
+   inkscape:export-ydpi="192"><metadata
      id="metadata3010"><rdf:RDF><cc:Work
          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
@@ -55,8 +55,8 @@
      guidetolerance="10"
      inkscape:pageopacity="0"
      inkscape:pageshadow="2"
-     inkscape:window-width="1920"
-     inkscape:window-height="1059"
+     inkscape:window-width="2736"
+     inkscape:window-height="1699"
      id="namedview3006"
      showgrid="true"
      fit-margin-top="0"
@@ -64,10 +64,10 @@
      fit-margin-right="0"
      fit-margin-bottom="0"
      inkscape:zoom="0.14661356"
-     inkscape:cx="-2968.0294"
+     inkscape:cx="-4639.089"
      inkscape:cy="-775.0037"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
+     inkscape:window-x="-13"
+     inkscape:window-y="-13"
      inkscape:window-maximized="1"
      inkscape:current-layer="g3012"
      inkscape:snap-global="true"

BIN
src/SyncTrayzor/Icons/stopped.ico


+ 11 - 8
src/SyncTrayzor/Icons/stopped.svg

@@ -11,14 +11,17 @@
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    id="svg3004"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
    width="128"
    height="128"
    xml:space="preserve"
-   sodipodi:docname="icon_idle.svg"><metadata
+   sodipodi:docname="stopped.svg"
+   inkscape:export-filename="C:\Users\Antony\Documents\Projects\SyncTrayzor\src\SyncTrayzor\Icons\stopped.png"
+   inkscape:export-xdpi="192"
+   inkscape:export-ydpi="192"><metadata
      id="metadata3010"><rdf:RDF><cc:Work
          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
      id="defs3008"><clipPath
        clipPathUnits="userSpaceOnUse"
        id="clipPath3018"><path
@@ -52,8 +55,8 @@
      guidetolerance="10"
      inkscape:pageopacity="0"
      inkscape:pageshadow="2"
-     inkscape:window-width="1280"
-     inkscape:window-height="1000"
+     inkscape:window-width="2736"
+     inkscape:window-height="1699"
      id="namedview3006"
      showgrid="true"
      fit-margin-top="0"
@@ -61,10 +64,10 @@
      fit-margin-right="0"
      fit-margin-bottom="0"
      inkscape:zoom="3.3174861"
-     inkscape:cx="27.801193"
+     inkscape:cx="-46.049908"
      inkscape:cy="48.016219"
-     inkscape:window-x="1440"
-     inkscape:window-y="24"
+     inkscape:window-x="-13"
+     inkscape:window-y="-13"
      inkscape:window-maximized="1"
      inkscape:current-layer="g3012"
      inkscape:snap-global="true"

BIN
src/SyncTrayzor/Icons/syncing_2.ico


+ 11 - 8
src/SyncTrayzor/Icons/syncing_2.svg

@@ -11,14 +11,17 @@
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    id="svg3004"
    version="1.1"
-   inkscape:version="0.91 r13725"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
    width="128"
    height="128"
    xml:space="preserve"
-   sodipodi:docname="syncing_2.svg"><metadata
+   sodipodi:docname="syncing_2.svg"
+   inkscape:export-filename="C:\Users\Antony\Documents\Projects\SyncTrayzor\src\SyncTrayzor\Icons\syncing_2.png"
+   inkscape:export-xdpi="384"
+   inkscape:export-ydpi="384"><metadata
      id="metadata3010"><rdf:RDF><cc:Work
          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
      id="defs3008"><clipPath
        clipPathUnits="userSpaceOnUse"
        id="clipPath3018"><path
@@ -52,8 +55,8 @@
      guidetolerance="10"
      inkscape:pageopacity="0"
      inkscape:pageshadow="2"
-     inkscape:window-width="1600"
-     inkscape:window-height="848"
+     inkscape:window-width="2736"
+     inkscape:window-height="1699"
      id="namedview3006"
      showgrid="true"
      fit-margin-top="0"
@@ -61,10 +64,10 @@
      fit-margin-right="0"
      fit-margin-bottom="0"
      inkscape:zoom="5.3046875"
-     inkscape:cx="64"
+     inkscape:cx="17.814433"
      inkscape:cy="64"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
+     inkscape:window-x="-13"
+     inkscape:window-y="-13"
      inkscape:window-maximized="1"
      inkscape:current-layer="g3012"
      inkscape:snap-global="true"

BIN
src/SyncTrayzor/Icons/syncing_3.ico


+ 11 - 8
src/SyncTrayzor/Icons/syncing_3.svg

@@ -11,14 +11,17 @@
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    id="svg3004"
    version="1.1"
-   inkscape:version="0.91 r13725"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
    width="128"
    height="128"
    xml:space="preserve"
-   sodipodi:docname="syncing_3.svg"><metadata
+   sodipodi:docname="syncing_3.svg"
+   inkscape:export-filename="C:\Users\Antony\Documents\Projects\SyncTrayzor\src\SyncTrayzor\Icons\syncing_3.png"
+   inkscape:export-xdpi="384"
+   inkscape:export-ydpi="384"><metadata
      id="metadata3010"><rdf:RDF><cc:Work
          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
      id="defs3008"><clipPath
        clipPathUnits="userSpaceOnUse"
        id="clipPath3018"><path
@@ -52,8 +55,8 @@
      guidetolerance="10"
      inkscape:pageopacity="0"
      inkscape:pageshadow="2"
-     inkscape:window-width="1600"
-     inkscape:window-height="848"
+     inkscape:window-width="2736"
+     inkscape:window-height="1699"
      id="namedview3006"
      showgrid="true"
      fit-margin-top="0"
@@ -61,10 +64,10 @@
      fit-margin-right="0"
      fit-margin-bottom="0"
      inkscape:zoom="5.3046875"
-     inkscape:cx="64"
+     inkscape:cx="17.814433"
      inkscape:cy="64"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
+     inkscape:window-x="-13"
+     inkscape:window-y="-13"
      inkscape:window-maximized="1"
      inkscape:current-layer="g3012"
      inkscape:snap-global="true"

BIN
src/SyncTrayzor/Icons/syncing_4.ico


+ 11 - 8
src/SyncTrayzor/Icons/syncing_4.svg

@@ -11,14 +11,17 @@
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    id="svg3004"
    version="1.1"
-   inkscape:version="0.91 r13725"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
    width="128"
    height="128"
    xml:space="preserve"
-   sodipodi:docname="syncing_4.svg"><metadata
+   sodipodi:docname="syncing_4.svg"
+   inkscape:export-filename="C:\Users\Antony\Documents\Projects\SyncTrayzor\src\SyncTrayzor\Icons\syncing_4.png"
+   inkscape:export-xdpi="384"
+   inkscape:export-ydpi="384"><metadata
      id="metadata3010"><rdf:RDF><cc:Work
          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
      id="defs3008"><clipPath
        clipPathUnits="userSpaceOnUse"
        id="clipPath3018"><path
@@ -52,8 +55,8 @@
      guidetolerance="10"
      inkscape:pageopacity="0"
      inkscape:pageshadow="2"
-     inkscape:window-width="1600"
-     inkscape:window-height="848"
+     inkscape:window-width="2736"
+     inkscape:window-height="1699"
      id="namedview3006"
      showgrid="true"
      fit-margin-top="0"
@@ -61,10 +64,10 @@
      fit-margin-right="0"
      fit-margin-bottom="0"
      inkscape:zoom="5.3046875"
-     inkscape:cx="64"
+     inkscape:cx="17.814433"
      inkscape:cy="64"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
+     inkscape:window-x="-13"
+     inkscape:window-y="-13"
      inkscape:window-maximized="1"
      inkscape:current-layer="g3012"
      inkscape:snap-global="true"

+ 4 - 3
src/SyncTrayzor/Pages/Settings/SettingsView.xaml

@@ -12,7 +12,7 @@
         mc:Ignorable="d" 
         d:DataContext="{d:DesignInstance settings:SettingsViewModel}"
         Title="{l:Loc SettingsView_Title}"
-        MinWidth="430" MaxWidth="430"
+        MinWidth="430"
         MinHeight="400" 
         SizeToContent="WidthAndHeight"
         FlowDirection="{x:Static l:Localizer.FlowDirection}">
@@ -73,7 +73,8 @@
                                 </Grid>
                                 <CheckBox DockPanel.Dock="Top" IsChecked="{Binding ShowDeviceConnectivityBalloons.Value}" Content="{l:Loc SettingsView_ShowDeviceConnectivityBalloons}"/>
                                 <CheckBox DockPanel.Dock="Top" IsChecked="{Binding ShowDeviceOrFolderRejectedBalloons.Value}" Content="{l:Loc SettingsView_ShowDeviceOrFolderRejectedBalloons}"/>
-                                <TextBlock DockPanel.Dock="Top" Margin="0,5,0,0" Text="{l:Loc SettingsView_Alerts_SeeFolders}"/>
+                                <TextBlock DockPanel.Dock="Top" Margin="0,5,0,0" TextWrapping="Wrap"
+                                           Text="{l:Loc SettingsView_Alerts_SeeFolders}"/>
                                 <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,5,0,0">
                                     <Label Padding="0,0,5,0" Target="{Binding ElementName=IconAnimationModeSelect}" VerticalAlignment="Center" Content="{l:Loc SettingsView_AnimateTrayIcon}"/>
                                     <ComboBox x:Name="IconAnimationModeSelect" ItemsSource="{Binding IconAnimationModes}" SelectedValuePath="Value" SelectedValue="{Binding IconAnimationMode.Value}"/>
@@ -109,7 +110,7 @@
                             <DockPanel>
                                 <Grid DockPanel.Dock="Top">
                                     <TextBlock Visibility="{Binding CanReadAndWriteAutostart, Converter={StaticResource InverseVisibilityConverter}}"
-                                        TextWrapping="WrapWithOverflow" Margin="0,0,0,5" Text="{l:Loc SettingsView_StartOnLogin_PermissionDenied}"
+                                        TextWrapping="Wrap" Margin="0,0,0,5" Text="{l:Loc SettingsView_StartOnLogin_PermissionDenied}"
                                         Width="{Binding Parent.ActualWidth, RelativeSource={RelativeSource Self}}"/>
                                 </Grid>
 

+ 2 - 1
src/SyncTrayzor/Pages/ViewerView.xaml

@@ -10,7 +10,7 @@
              mc:Ignorable="d" 
              d:DesignHeight="300" d:DesignWidth="300">
     <Grid>
-        <ContentControl Content="{Binding WebBrowser}">
+        <ContentControl Content="{Binding WebBrowser}" UseLayoutRounding="True">
             <ContentControl.Resources>
                 <Style TargetType="cefSharp:ChromiumWebBrowser">
                     <Setter Property="ContextMenu">
@@ -22,6 +22,7 @@
                             </ContextMenu>
                         </Setter.Value>
                     </Setter>
+                    <Setter Property="RenderOptions.BitmapScalingMode" Value="NearestNeighbor"/>
                 </Style>
             </ContentControl.Resources>
         </ContentControl>

+ 4 - 3
src/SyncTrayzor/SyncTrayzor.csproj

@@ -79,6 +79,9 @@
     <CodeAnalysisRuleSet>SyncTrayzor.ruleset</CodeAnalysisRuleSet>
     <Prefer32Bit>true</Prefer32Bit>
   </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationManifest>app.manifest</ApplicationManifest>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="Interop.NETWORKLIST">
       <SpecificVersion>False</SpecificVersion>
@@ -360,6 +363,7 @@
       <Link>Resources\synctrayzor_releases_cert.asc</Link>
     </EmbeddedResource>
     <AppDesigner Include="Properties\" />
+    <None Include="app.manifest" />
     <None Include="SyncTrayzor.ruleset" />
   </ItemGroup>
   <ItemGroup>
@@ -620,9 +624,6 @@
     <PackageReference Include="System.Text.Json">
       <Version>5.0.0</Version>
     </PackageReference>
-    <PackageReference Include="VCRuntime.CefSharp.140">
-      <Version>1.0.4</Version>
-    </PackageReference>
     <PackageReference Include="WindowsAPICodePack-Core">
       <Version>1.1.2</Version>
     </PackageReference>

+ 2 - 0
src/SyncTrayzor/Syncthing/ApiClient/EventConverter.cs

@@ -31,6 +31,8 @@ namespace SyncTrayzor.Syncthing.ApiClient
             { EventType.FolderRejected, typeof(FolderRejectedEvent) },
         };
 
+        public static string GetEventsFilterString() => string.Join(",", eventTypes.Keys);
+
         public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
         {
             return base.ReadJson(reader, objectType, existingValue, serializer);

+ 0 - 15
src/SyncTrayzor/Syncthing/ApiClient/EventType.cs

@@ -7,36 +7,21 @@ namespace SyncTrayzor.Syncthing.ApiClient
     {
         Unknown,
 
-        Starting,
         StartupComplete,
-        Ping,
-        DeviceDiscovered,
         DeviceConnected,
         DeviceDisconnected,
         RemoteIndexUpdated,
         LocalIndexUpdated,
         ItemStarted,
         ItemFinished,
-
-        // Not quite sure which it's going to be, so play it safe...
-        MetadataChanged,
-        ItemMetadataChanged,
-
         StateChanged,
         FolderRejected,
         DeviceRejected,
         ConfigSaved,
         DownloadProgress,
         FolderSummary,
-        FolderCompletion,
         FolderErrors,
-        FolderScanProgress,
         DevicePaused,
         DeviceResumed,
-        LoginAttempt,
-        ListenAddressChanged,
-        RelayStateChanged,
-        ExternalPortMappingChanged,
-        ListenAddressesChanged,
     }
 }

+ 2 - 2
src/SyncTrayzor/Syncthing/ApiClient/ISyncthingApi.cs

@@ -11,10 +11,10 @@ namespace SyncTrayzor.Syncthing.ApiClient
         string ApiKey { get; set; }
 
         [Get("/rest/events")]
-        Task<List<Event>> FetchEventsAsync(int since, CancellationToken cancellationToken);
+        Task<List<Event>> FetchEventsAsync(int since, string events, CancellationToken cancellationToken);
 
         [Get("/rest/events")]
-        Task<List<Event>> FetchEventsLimitAsync(int since, int limit, CancellationToken cancellationToken);
+        Task<List<Event>> FetchEventsLimitAsync(int since, int limit, string events, CancellationToken cancellationToken);
 
         [Get("/rest/system/config")]
         Task<Config> FetchConfigAsync();

+ 2 - 2
src/SyncTrayzor/Syncthing/ApiClient/SyncthingApiClient.cs

@@ -40,12 +40,12 @@ namespace SyncTrayzor.Syncthing.ApiClient
 
         public Task<List<Event>> FetchEventsAsync(int since, int limit, CancellationToken cancellationToken)
         {
-            return this.api.FetchEventsLimitAsync(since, limit, cancellationToken);
+            return this.api.FetchEventsLimitAsync(since, limit, EventConverter.GetEventsFilterString(), cancellationToken);
         }
 
         public Task<List<Event>> FetchEventsAsync(int since, CancellationToken cancellationToken)
         {
-            return this.api.FetchEventsAsync(since, cancellationToken);
+            return this.api.FetchEventsAsync(since, EventConverter.GetEventsFilterString(), cancellationToken);
         }
 
         public async Task<Config> FetchConfigAsync()

+ 2 - 0
src/SyncTrayzor/Syncthing/SyncthingProcessRunner.cs

@@ -125,6 +125,8 @@ namespace SyncTrayzor.Syncthing
                 RedirectStandardOutput = true,
                 StandardOutputEncoding = Encoding.UTF8,
                 StandardErrorEncoding = Encoding.UTF8,
+                // In case people are using relative folder paths, mirror the shortcut
+                WorkingDirectory = Path.GetDirectoryName(typeof(SyncthingProcessRunner).Assembly.Location),
             };
 
             processStartInfo.EnvironmentVariables["STGUIAPIKEY"] = this.ApiKey;

+ 76 - 0
src/SyncTrayzor/app.manifest

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <!-- UAC Manifest Options
+             If you want to change the Windows User Account Control level replace the 
+             requestedExecutionLevel node with one of the following.
+
+        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
+        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
+        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
+
+            Specifying requestedExecutionLevel element will disable file and registry virtualization. 
+            Remove this element if your application requires this virtualization for backwards
+            compatibility.
+        -->
+        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+
+  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+    <application>
+      <!-- A list of the Windows versions that this application has been tested on
+           and is designed to work with. Uncomment the appropriate elements
+           and Windows will automatically select the most compatible environment. -->
+
+      <!-- Windows Vista -->
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
+
+      <!-- Windows 7 -->
+      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
+
+      <!-- Windows 8 -->
+      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
+
+      <!-- Windows 8.1 -->
+      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
+
+      <!-- Windows 10 -->
+      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
+
+    </application>
+  </compatibility>
+
+  <!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
+       DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need 
+       to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should 
+       also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
+  
+  <!-- Required by CefSharp -->
+  <application xmlns="urn:schemas-microsoft-com:asm.v3">
+    <windowsSettings>
+      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware>
+    </windowsSettings>
+  </application>
+  
+
+  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
+  <dependency>
+    <dependentAssembly>
+      <assemblyIdentity
+          type="win32"
+          name="Microsoft.Windows.Common-Controls"
+          version="6.0.0.0"
+          processorArchitecture="*"
+          publicKeyToken="6595b64144ccf1df"
+          language="*"
+        />
+    </dependentAssembly>
+  </dependency>
+  
+
+</assembly>