Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
064a04fbad | ||
|
|
39ed13cf8a | ||
|
|
a1edacb196 | ||
|
|
c9f79e4b47 | ||
|
|
40c1498226 | ||
|
|
390061f9bd | ||
|
|
42324a2c9e | ||
|
|
b9b4ca6360 | ||
|
|
565697bc0b | ||
|
|
2e6c82c851 | ||
|
|
ee75dd37af | ||
|
|
4859dcda08 | ||
|
|
2e962e555d | ||
|
|
ab73e5acb2 | ||
|
|
4e3e5ce130 | ||
|
|
bb8eef3bf5 | ||
|
|
eee87ded29 | ||
|
|
e0f005bd96 | ||
|
|
2cacc372ad | ||
|
|
0b1b681655 | ||
|
|
deafd73306 | ||
|
|
317a5da120 | ||
|
|
071cefc511 | ||
|
|
32a5cc8aa3 | ||
|
|
c41378a085 |
69
.github/workflows/build-all.yml
vendored
Normal file
69
.github/workflows/build-all.yml
vendored
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
name: release all platforms
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
release_tag:
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Trigger build windows
|
||||||
|
if: github.event.inputs.release_tag != ''
|
||||||
|
run: |
|
||||||
|
curl -X POST \
|
||||||
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
|
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
|
||||||
|
https://api.github.com/repos/${{ github.repository }}/actions/workflows/build-windows.yml/dispatches \
|
||||||
|
-d "{
|
||||||
|
\"ref\": \"master\",
|
||||||
|
\"inputs\": {
|
||||||
|
\"release_tag\": \"${{ github.event.inputs.release_tag }}\"
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
|
||||||
|
- name: Trigger build linux
|
||||||
|
if: github.event.inputs.release_tag != ''
|
||||||
|
run: |
|
||||||
|
curl -X POST \
|
||||||
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
|
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
|
||||||
|
https://api.github.com/repos/${{ github.repository }}/actions/workflows/build-linux.yml/dispatches \
|
||||||
|
-d "{
|
||||||
|
\"ref\": \"master\",
|
||||||
|
\"inputs\": {
|
||||||
|
\"release_tag\": \"${{ github.event.inputs.release_tag }}\"
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
|
||||||
|
- name: Trigger build osx
|
||||||
|
if: github.event.inputs.release_tag != ''
|
||||||
|
run: |
|
||||||
|
curl -X POST \
|
||||||
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
|
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
|
||||||
|
https://api.github.com/repos/${{ github.repository }}/actions/workflows/build-osx.yml/dispatches \
|
||||||
|
-d "{
|
||||||
|
\"ref\": \"master\",
|
||||||
|
\"inputs\": {
|
||||||
|
\"release_tag\": \"${{ github.event.inputs.release_tag }}\"
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
|
||||||
|
- name: Trigger build windows desktop
|
||||||
|
if: github.event.inputs.release_tag != ''
|
||||||
|
run: |
|
||||||
|
curl -X POST \
|
||||||
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
|
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
|
||||||
|
https://api.github.com/repos/${{ github.repository }}/actions/workflows/build-windows-desktop.yml/dispatches \
|
||||||
|
-d "{
|
||||||
|
\"ref\": \"master\",
|
||||||
|
\"inputs\": {
|
||||||
|
\"release_tag\": \"${{ github.event.inputs.release_tag }}\"
|
||||||
|
}
|
||||||
|
}"
|
||||||
8
.github/workflows/build-linux.yml
vendored
8
.github/workflows/build-linux.yml
vendored
@@ -36,10 +36,10 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
cd v2rayN
|
cd v2rayN
|
||||||
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-x64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -o $OutputPath64
|
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-x64 --self-contained=true -o $OutputPath64
|
||||||
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-arm64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -o $OutputPathArm64
|
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-arm64 --self-contained=true -o $OutputPathArm64
|
||||||
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-x64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:PublishTrimmed=true -o $OutputPath64
|
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-x64 --self-contained=true -p:PublishTrimmed=true -o $OutputPath64
|
||||||
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-arm64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:PublishTrimmed=true -o $OutputPathArm64
|
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-arm64 --self-contained=true -p:PublishTrimmed=true -o $OutputPathArm64
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v4.6.0
|
uses: actions/upload-artifact@v4.6.0
|
||||||
|
|||||||
8
.github/workflows/build-osx.yml
vendored
8
.github/workflows/build-osx.yml
vendored
@@ -36,10 +36,10 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
cd v2rayN
|
cd v2rayN
|
||||||
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r osx-x64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -o $OutputPath64
|
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r osx-x64 --self-contained=true -o $OutputPath64
|
||||||
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r osx-arm64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -o $OutputPathArm64
|
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r osx-arm64 --self-contained=true -o $OutputPathArm64
|
||||||
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r osx-x64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:PublishTrimmed=true -o $OutputPath64
|
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r osx-x64 --self-contained=true -p:PublishTrimmed=true -o $OutputPath64
|
||||||
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r osx-arm64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:PublishTrimmed=true -o $OutputPathArm64
|
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r osx-arm64 --self-contained=true -p:PublishTrimmed=true -o $OutputPathArm64
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v4.6.0
|
uses: actions/upload-artifact@v4.6.0
|
||||||
|
|||||||
28
.github/workflows/build-windows-desktop.yml
vendored
28
.github/workflows/build-windows-desktop.yml
vendored
@@ -36,10 +36,10 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
cd v2rayN
|
cd v2rayN
|
||||||
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r win-x64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:EnableWindowsTargeting=true -o $OutputPath64
|
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r win-x64 --self-contained=true -p:EnableWindowsTargeting=true -o $OutputPath64
|
||||||
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r win-arm64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:EnableWindowsTargeting=true -o $OutputPathArm64
|
dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r win-arm64 --self-contained=true -p:EnableWindowsTargeting=true -o $OutputPathArm64
|
||||||
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:PublishTrimmed=true -p:EnableWindowsTargeting=true -o $OutputPath64
|
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=true -p:EnableWindowsTargeting=true -p:PublishTrimmed=true -o $OutputPath64
|
||||||
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-arm64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:PublishTrimmed=true -p:EnableWindowsTargeting=true -o $OutputPathArm64
|
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-arm64 --self-contained=true -p:EnableWindowsTargeting=true -p:PublishTrimmed=true -o $OutputPathArm64
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v4.6.0
|
uses: actions/upload-artifact@v4.6.0
|
||||||
@@ -47,4 +47,22 @@ jobs:
|
|||||||
name: v2rayN-windows-desktop
|
name: v2rayN-windows-desktop
|
||||||
path: |
|
path: |
|
||||||
${{ github.workspace }}/v2rayN/Release/windows*
|
${{ github.workspace }}/v2rayN/Release/windows*
|
||||||
|
|
||||||
|
# release zip archive
|
||||||
|
- name: Package release zip archive
|
||||||
|
if: github.event.inputs.release_tag != ''
|
||||||
|
run: |
|
||||||
|
chmod 755 package-release-zip.sh
|
||||||
|
./package-release-zip.sh $OutputArch $OutputPath64
|
||||||
|
mv "v2rayN-${OutputArch}.zip" "v2rayN-${OutputArch}-desktop.zip"
|
||||||
|
./package-release-zip.sh $OutputArchArm $OutputPathArm64
|
||||||
|
mv "v2rayN-${OutputArchArm}.zip" "v2rayN-${OutputArchArm}-desktop.zip"
|
||||||
|
|
||||||
|
- name: Upload zip archive to release
|
||||||
|
uses: svenstaro/upload-release-action@v2
|
||||||
|
if: github.event.inputs.release_tag != ''
|
||||||
|
with:
|
||||||
|
file: ${{ github.workspace }}/v2rayN*.zip
|
||||||
|
tag: ${{ github.event.inputs.release_tag }}
|
||||||
|
file_glob: true
|
||||||
|
prerelease: true
|
||||||
|
|||||||
12
.github/workflows/build-windows.yml
vendored
12
.github/workflows/build-windows.yml
vendored
@@ -37,12 +37,12 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
cd v2rayN
|
cd v2rayN
|
||||||
dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-x64 --self-contained=false -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:EnableWindowsTargeting=true -o $OutputPath64
|
dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-x64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPath64
|
||||||
dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-arm64 --self-contained=false -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:EnableWindowsTargeting=true -o $OutputPathArm64
|
dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-arm64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPathArm64
|
||||||
dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-x64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:EnableWindowsTargeting=true -o $OutputPath64Sc
|
dotnet publish ./v2rayN/v2rayN.csproj -c Release -r win-x64 --self-contained=true -p:EnableWindowsTargeting=true -o $OutputPath64Sc
|
||||||
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=false -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:EnableWindowsTargeting=true -o $OutputPath64
|
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPath64
|
||||||
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-arm64 --self-contained=false -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:EnableWindowsTargeting=true -o $OutputPathArm64
|
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-arm64 --self-contained=false -p:EnableWindowsTargeting=true -o $OutputPathArm64
|
||||||
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:PublishTrimmed=true -p:EnableWindowsTargeting=true -o $OutputPath64Sc
|
dotnet publish ./AmazTool/AmazTool.csproj -c Release -r win-x64 --self-contained=true -p:EnableWindowsTargeting=true -p:PublishTrimmed=true -o $OutputPath64Sc
|
||||||
|
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
|
|||||||
@@ -17,11 +17,9 @@ echo "When this file exists, app will not store configs under this folder" >"${P
|
|||||||
if [ $Arch = "linux-64" ]; then
|
if [ $Arch = "linux-64" ]; then
|
||||||
Arch2="x86_64"
|
Arch2="x86_64"
|
||||||
Arch3="amd64"
|
Arch3="amd64"
|
||||||
Interpreter="ld-linux-x86-64.so.2"
|
|
||||||
else
|
else
|
||||||
Arch2="aarch64"
|
Arch2="aarch64"
|
||||||
Arch3="arm64"
|
Arch3="arm64"
|
||||||
Interpreter="ld-linux-aarch64.so.1"
|
|
||||||
fi
|
fi
|
||||||
echo $Arch2
|
echo $Arch2
|
||||||
|
|
||||||
@@ -31,7 +29,6 @@ cat >"${PackagePath}/AppDir/AppRun" <<-EOF
|
|||||||
HERE="\$(dirname "\$(readlink -f "\${0}")")"
|
HERE="\$(dirname "\$(readlink -f "\${0}")")"
|
||||||
export PATH="\${HERE}"/opt/v2rayN/:"\${PATH}"
|
export PATH="\${HERE}"/opt/v2rayN/:"\${PATH}"
|
||||||
export LD_LIBRARY_PATH="\${HERE}"/opt/v2rayN/:"\${LD_LIBRARY_PATH}"
|
export LD_LIBRARY_PATH="\${HERE}"/opt/v2rayN/:"\${LD_LIBRARY_PATH}"
|
||||||
cd "\${HERE}/opt/v2rayN"
|
|
||||||
exec "\${HERE}/opt/v2rayN/v2rayN" \$@
|
exec "\${HERE}/opt/v2rayN/v2rayN" \$@
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
@@ -48,41 +45,9 @@ EOF
|
|||||||
|
|
||||||
sudo cp "${PackagePath}/AppDir/opt/v2rayN/v2rayN.png" "${PackagePath}/AppDir/v2rayN.png"
|
sudo cp "${PackagePath}/AppDir/opt/v2rayN/v2rayN.png" "${PackagePath}/AppDir/v2rayN.png"
|
||||||
sudo dpkg --add-architecture ${Arch3}
|
sudo dpkg --add-architecture ${Arch3}
|
||||||
sudo apt update
|
|
||||||
mkdir deb_folder
|
mkdir deb_folder
|
||||||
cd deb_folder
|
cd deb_folder
|
||||||
apt download libstdc++6:${Arch3}
|
apt download libicu74:${Arch3}
|
||||||
apt download libc6:${Arch3}
|
|
||||||
apt download libcrypt1:${Arch3}
|
|
||||||
apt download libgcc-s1:${Arch3}
|
|
||||||
apt download libidn2-0:${Arch3}
|
|
||||||
apt download gcc-12-base:${Arch3}
|
|
||||||
apt download zlib1g:${Arch3}
|
|
||||||
apt download libfreetype6:${Arch3}
|
|
||||||
apt download libexpat1:${Arch3}
|
|
||||||
apt download libbrotli1:${Arch3}
|
|
||||||
apt download libx11-6:${Arch3}
|
|
||||||
apt download libx11-xcb1:${Arch3}
|
|
||||||
apt download libxcb1:${Arch3}
|
|
||||||
apt download libxau6:${Arch3}
|
|
||||||
apt download libxdmcp6:${Arch3}
|
|
||||||
apt download libbsd0:${Arch3}
|
|
||||||
apt download libmd0:${Arch3}
|
|
||||||
apt download libice6:${Arch3}
|
|
||||||
apt download libsm6:${Arch3}
|
|
||||||
apt download libuuid1:${Arch3}
|
|
||||||
apt download libxrandr2:${Arch3}
|
|
||||||
apt download libxext6:${Arch3}
|
|
||||||
apt download libxrender1:${Arch3}
|
|
||||||
apt download libxi6:${Arch3}
|
|
||||||
apt download libsm6:${Arch3}
|
|
||||||
apt download libxcursor1:${Arch3}
|
|
||||||
apt download libxfixes3:${Arch3}
|
|
||||||
apt download libpng16-16:${Arch3} || true
|
|
||||||
apt download libpng16-16t64:${Arch3} || true
|
|
||||||
apt download libicu66:${Arch3} || true
|
|
||||||
apt download libicu70:${Arch3} || true
|
|
||||||
apt download libicu74:${Arch3} || true
|
|
||||||
apt download libfontconfig1:${Arch3} || true
|
apt download libfontconfig1:${Arch3} || true
|
||||||
apt download libfontconfig:${Arch3} || true
|
apt download libfontconfig:${Arch3} || true
|
||||||
mkdir ../output_folder
|
mkdir ../output_folder
|
||||||
@@ -97,12 +62,6 @@ rm -rf deb_folder output_folder
|
|||||||
sudo chmod 0755 "${PackagePath}/AppDir/opt/v2rayN/v2rayN"
|
sudo chmod 0755 "${PackagePath}/AppDir/opt/v2rayN/v2rayN"
|
||||||
sudo chmod 0755 "${PackagePath}/AppDir/AppRun"
|
sudo chmod 0755 "${PackagePath}/AppDir/AppRun"
|
||||||
|
|
||||||
sudo apt install -y patchelf
|
|
||||||
|
|
||||||
pushd "${PackagePath}/AppDir/opt/v2rayN"
|
|
||||||
patchelf --set-interpreter ${Interpreter} v2rayN
|
|
||||||
popd
|
|
||||||
|
|
||||||
# desktop && PATH
|
# desktop && PATH
|
||||||
|
|
||||||
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
|
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project>
|
<Project>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Version>7.9.0</Version>
|
<Version>7.9.3</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
@@ -25,6 +25,9 @@
|
|||||||
<MetadataUpdaterSupport>false</MetadataUpdaterSupport>
|
<MetadataUpdaterSupport>false</MetadataUpdaterSupport>
|
||||||
<EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
|
<EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
|
||||||
<EnableUnsafeUTF7Encoding>false</EnableUnsafeUTF7Encoding>
|
<EnableUnsafeUTF7Encoding>false</EnableUnsafeUTF7Encoding>
|
||||||
|
|
||||||
<UseSystemResourceKeys>true</UseSystemResourceKeys>
|
<UseSystemResourceKeys>true</UseSystemResourceKeys>
|
||||||
|
<PublishSingleFile>true</PublishSingleFile>
|
||||||
|
<PublishReadyToRun>false</PublishReadyToRun>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -507,6 +507,13 @@ namespace ServiceLib
|
|||||||
{ ECoreType.v2rayN, "2dust/v2rayN" },
|
{ ECoreType.v2rayN, "2dust/v2rayN" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static readonly List<string> OtherGeoUrls =
|
||||||
|
[
|
||||||
|
@"https://raw.githubusercontent.com/Loyalsoldier/geoip/release/geoip-only-cn-private.dat",
|
||||||
|
@"https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdb",
|
||||||
|
@"https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.metadb"
|
||||||
|
];
|
||||||
|
|
||||||
#endregion const
|
#endregion const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ namespace ServiceLib.Handler
|
|||||||
/// <param name="config"></param>
|
/// <param name="config"></param>
|
||||||
/// <param name="indexes"></param>
|
/// <param name="indexes"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static async Task<int> RemoveServer(Config config, List<ProfileItem> indexes)
|
public static async Task<int> RemoveServers(Config config, List<ProfileItem> indexes)
|
||||||
{
|
{
|
||||||
var subid = "TempRemoveSubId";
|
var subid = "TempRemoveSubId";
|
||||||
foreach (var item in indexes)
|
foreach (var item in indexes)
|
||||||
@@ -303,7 +303,7 @@ namespace ServiceLib.Handler
|
|||||||
}
|
}
|
||||||
|
|
||||||
await SQLiteHelper.Instance.UpdateAllAsync(indexes);
|
await SQLiteHelper.Instance.UpdateAllAsync(indexes);
|
||||||
await RemoveServerViaSubid(config, subid, false);
|
await RemoveServersViaSubid(config, subid, false);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -886,7 +886,7 @@ namespace ServiceLib.Handler
|
|||||||
lstRemove.Add(item);
|
lstRemove.Add(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await RemoveServer(config, lstRemove);
|
await RemoveServers(config, lstRemove);
|
||||||
|
|
||||||
return new Tuple<int, int>(lstProfile.Count, lstKeep.Count);
|
return new Tuple<int, int>(lstProfile.Count, lstKeep.Count);
|
||||||
}
|
}
|
||||||
@@ -1062,12 +1062,9 @@ namespace ServiceLib.Handler
|
|||||||
var lstProfile = (from t in lstModel
|
var lstProfile = (from t in lstModel
|
||||||
join t2 in lstProfileExs on t.IndexId equals t2.IndexId
|
join t2 in lstProfileExs on t.IndexId equals t2.IndexId
|
||||||
where t2.Delay == -1
|
where t2.Delay == -1
|
||||||
select t.IndexId).ToList();
|
select t).ToList();
|
||||||
|
|
||||||
foreach (var item in lstProfile)
|
await RemoveServers(config, JsonUtils.Deserialize<List<ProfileItem>>(JsonUtils.Serialize(lstProfile)));
|
||||||
{
|
|
||||||
await RemoveProfileItem(config, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
return lstProfile.Count;
|
return lstProfile.Count;
|
||||||
}
|
}
|
||||||
@@ -1094,7 +1091,7 @@ namespace ServiceLib.Handler
|
|||||||
//remove sub items
|
//remove sub items
|
||||||
if (isSub && Utils.IsNotEmpty(subid))
|
if (isSub && Utils.IsNotEmpty(subid))
|
||||||
{
|
{
|
||||||
await RemoveServerViaSubid(config, subid, isSub);
|
await RemoveServersViaSubid(config, subid, isSub);
|
||||||
subFilter = (await AppHandler.Instance.GetSubItem(subid))?.Filter ?? "";
|
subFilter = (await AppHandler.Instance.GetSubItem(subid))?.Filter ?? "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1188,7 +1185,7 @@ namespace ServiceLib.Handler
|
|||||||
{
|
{
|
||||||
if (isSub && Utils.IsNotEmpty(subid))
|
if (isSub && Utils.IsNotEmpty(subid))
|
||||||
{
|
{
|
||||||
await RemoveServerViaSubid(config, subid, isSub);
|
await RemoveServersViaSubid(config, subid, isSub);
|
||||||
}
|
}
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (var it in lstProfiles)
|
foreach (var it in lstProfiles)
|
||||||
@@ -1244,7 +1241,7 @@ namespace ServiceLib.Handler
|
|||||||
|
|
||||||
if (isSub && Utils.IsNotEmpty(subid))
|
if (isSub && Utils.IsNotEmpty(subid))
|
||||||
{
|
{
|
||||||
await RemoveServerViaSubid(config, subid, isSub);
|
await RemoveServersViaSubid(config, subid, isSub);
|
||||||
}
|
}
|
||||||
|
|
||||||
profileItem.Subid = subid;
|
profileItem.Subid = subid;
|
||||||
@@ -1269,7 +1266,7 @@ namespace ServiceLib.Handler
|
|||||||
|
|
||||||
if (isSub && Utils.IsNotEmpty(subid))
|
if (isSub && Utils.IsNotEmpty(subid))
|
||||||
{
|
{
|
||||||
await RemoveServerViaSubid(config, subid, isSub);
|
await RemoveServersViaSubid(config, subid, isSub);
|
||||||
}
|
}
|
||||||
|
|
||||||
var lstSsServer = ShadowsocksFmt.ResolveSip008(strData);
|
var lstSsServer = ShadowsocksFmt.ResolveSip008(strData);
|
||||||
@@ -1456,7 +1453,7 @@ namespace ServiceLib.Handler
|
|||||||
/// <param name="config"></param>
|
/// <param name="config"></param>
|
||||||
/// <param name="subid"></param>
|
/// <param name="subid"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static async Task<int> RemoveServerViaSubid(Config config, string subid, bool isSub)
|
public static async Task<int> RemoveServersViaSubid(Config config, string subid, bool isSub)
|
||||||
{
|
{
|
||||||
if (Utils.IsNullOrEmpty(subid))
|
if (Utils.IsNullOrEmpty(subid))
|
||||||
{
|
{
|
||||||
@@ -1487,7 +1484,7 @@ namespace ServiceLib.Handler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
await SQLiteHelper.Instance.DeleteAsync(item);
|
await SQLiteHelper.Instance.DeleteAsync(item);
|
||||||
await RemoveServerViaSubid(config, id, false);
|
await RemoveServersViaSubid(config, id, false);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
2
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
2
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
@@ -2879,7 +2879,7 @@ namespace ServiceLib.Resx {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Install the font to the system and restart the settings 的本地化字符串。
|
/// 查找类似 Install the font to the system, select or fill in the font name, restart the settings 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string TbSettingsCurrentFontFamilyLinuxTip {
|
public static string TbSettingsCurrentFontFamilyLinuxTip {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -1334,7 +1334,7 @@
|
|||||||
<value>Please do not use the insecure HTTP protocol subscription address</value>
|
<value>Please do not use the insecure HTTP protocol subscription address</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsCurrentFontFamilyLinuxTip" xml:space="preserve">
|
<data name="TbSettingsCurrentFontFamilyLinuxTip" xml:space="preserve">
|
||||||
<value>Install the font to the system and restart the settings</value>
|
<value>Install the font to the system, select or fill in the font name, restart the settings</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExitTips" xml:space="preserve">
|
<data name="menuExitTips" xml:space="preserve">
|
||||||
<value>Are you sure to exit?</value>
|
<value>Are you sure to exit?</value>
|
||||||
|
|||||||
@@ -1331,7 +1331,7 @@
|
|||||||
<value>请不要使用不安全的HTTP协议订阅地址</value>
|
<value>请不要使用不安全的HTTP协议订阅地址</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsCurrentFontFamilyLinuxTip" xml:space="preserve">
|
<data name="TbSettingsCurrentFontFamilyLinuxTip" xml:space="preserve">
|
||||||
<value>安装字体到系统中,重启设置</value>
|
<value>安装字体到系统中,选择或填入字体名称,重启设置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExitTips" xml:space="preserve">
|
<data name="menuExitTips" xml:space="preserve">
|
||||||
<value>是否确定退出?</value>
|
<value>是否确定退出?</value>
|
||||||
|
|||||||
@@ -1212,7 +1212,7 @@
|
|||||||
<value>請不要使用不安全的HTTP協定訂閱位址</value>
|
<value>請不要使用不安全的HTTP協定訂閱位址</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsCurrentFontFamilyLinuxTip" xml:space="preserve">
|
<data name="TbSettingsCurrentFontFamilyLinuxTip" xml:space="preserve">
|
||||||
<value>安裝字型到系統中,重新啟動設定</value>
|
<value>安裝字體到系統中,選擇或填入字體名稱,重新啟動設定</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExitTips" xml:space="preserve">
|
<data name="menuExitTips" xml:space="preserve">
|
||||||
<value>是否確定退出?</value>
|
<value>是否確定退出?</value>
|
||||||
|
|||||||
@@ -1324,7 +1324,7 @@ namespace ServiceLib.Services.CoreConfig
|
|||||||
singboxConfig.experimental.cache_file = new CacheFile4Sbox()
|
singboxConfig.experimental.cache_file = new CacheFile4Sbox()
|
||||||
{
|
{
|
||||||
enabled = true,
|
enabled = true,
|
||||||
path = Utils.GetBinConfigPath("cache.db")
|
path = Utils.GetBinPath("cache.db")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -261,10 +261,17 @@ namespace ServiceLib.Services
|
|||||||
if (pid > 0)
|
if (pid > 0)
|
||||||
{
|
{
|
||||||
await Task.Delay(500);
|
await Task.Delay(500);
|
||||||
await DoRealPing(downloadHandle, it);
|
var delay = await DoRealPing(downloadHandle, it);
|
||||||
if (blSpeedTest)
|
if (blSpeedTest)
|
||||||
{
|
{
|
||||||
await DoSpeedTest(downloadHandle, it);
|
if (delay > 0)
|
||||||
|
{
|
||||||
|
await DoSpeedTest(downloadHandle, it);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UpdateFunc(it.IndexId, "", ResUI.SpeedtestingSkip);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -289,13 +296,14 @@ namespace ServiceLib.Services
|
|||||||
Task.WaitAll(tasks.ToArray());
|
Task.WaitAll(tasks.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task DoRealPing(DownloadService downloadHandle, ServerTestItem it)
|
private async Task<int> DoRealPing(DownloadService downloadHandle, ServerTestItem it)
|
||||||
{
|
{
|
||||||
var webProxy = new WebProxy($"socks5://{Global.Loopback}:{it.Port}");
|
var webProxy = new WebProxy($"socks5://{Global.Loopback}:{it.Port}");
|
||||||
var responseTime = await downloadHandle.GetRealPingTime(_config.SpeedTestItem.SpeedPingTestUrl, webProxy, 10);
|
var responseTime = await downloadHandle.GetRealPingTime(_config.SpeedTestItem.SpeedPingTestUrl, webProxy, 10);
|
||||||
|
|
||||||
ProfileExHandler.Instance.SetTestDelay(it.IndexId, responseTime);
|
ProfileExHandler.Instance.SetTestDelay(it.IndexId, responseTime);
|
||||||
UpdateFunc(it.IndexId, responseTime.ToString());
|
UpdateFunc(it.IndexId, responseTime.ToString());
|
||||||
|
return responseTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task DoSpeedTest(DownloadService downloadHandle, ServerTestItem it)
|
private async Task DoSpeedTest(DownloadService downloadHandle, ServerTestItem it)
|
||||||
|
|||||||
@@ -237,8 +237,8 @@ namespace ServiceLib.Services
|
|||||||
|
|
||||||
public async Task UpdateGeoFileAll(Config config, Action<bool, string> updateFunc)
|
public async Task UpdateGeoFileAll(Config config, Action<bool, string> updateFunc)
|
||||||
{
|
{
|
||||||
await UpdateGeoFile("geosite", config, updateFunc);
|
await UpdateGeoFiles(config, updateFunc);
|
||||||
await UpdateGeoFile("geoip", config, updateFunc);
|
await UpdateOtherFiles(config, updateFunc);
|
||||||
await UpdateSrsFileAll(config, updateFunc);
|
await UpdateSrsFileAll(config, updateFunc);
|
||||||
_updateFunc?.Invoke(true, string.Format(ResUI.MsgDownloadGeoFileSuccessfully, "geo"));
|
_updateFunc?.Invoke(true, string.Format(ResUI.MsgDownloadGeoFileSuccessfully, "geo"));
|
||||||
}
|
}
|
||||||
@@ -427,22 +427,32 @@ namespace ServiceLib.Services
|
|||||||
{
|
{
|
||||||
if (Utils.IsWindows())
|
if (Utils.IsWindows())
|
||||||
{
|
{
|
||||||
//Check for standalone windows .Net version
|
var url = RuntimeInformation.ProcessArchitecture switch
|
||||||
if (coreInfo?.CoreType == ECoreType.v2rayN && RuntimeInformation.ProcessArchitecture == Architecture.X64)
|
|
||||||
{
|
|
||||||
var runtimes = await Utils.GetCliWrapOutput("dotnet", "--list-runtimes");
|
|
||||||
if (runtimes == null || runtimes.Contains("Microsoft.WindowsDesktop.App 8") == false)
|
|
||||||
{
|
|
||||||
return coreInfo?.DownloadUrlWin64?.Replace(".zip", "-SelfContained.zip");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return RuntimeInformation.ProcessArchitecture switch
|
|
||||||
{
|
{
|
||||||
Architecture.Arm64 => coreInfo?.DownloadUrlWinArm64,
|
Architecture.Arm64 => coreInfo?.DownloadUrlWinArm64,
|
||||||
Architecture.X64 => coreInfo?.DownloadUrlWin64,
|
Architecture.X64 => coreInfo?.DownloadUrlWin64,
|
||||||
_ => null,
|
_ => null,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (coreInfo?.CoreType != ECoreType.v2rayN)
|
||||||
|
{
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check for standalone windows .Net version
|
||||||
|
if (File.Exists(Path.Combine(Utils.GetBaseDirectory(), "wpfgfx_cor3.dll"))
|
||||||
|
&& File.Exists(Path.Combine(Utils.GetBaseDirectory(), "D3DCompiler_47_cor3.dll")))
|
||||||
|
{
|
||||||
|
return url?.Replace(".zip", "-SelfContained.zip");
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check for avalonia desktop windows version
|
||||||
|
if (File.Exists(Path.Combine(Utils.GetBaseDirectory(), "libHarfBuzzSharp.dll")))
|
||||||
|
{
|
||||||
|
return url?.Replace(".zip", "-desktop.zip");
|
||||||
|
}
|
||||||
|
|
||||||
|
return url;
|
||||||
}
|
}
|
||||||
else if (Utils.IsLinux())
|
else if (Utils.IsLinux())
|
||||||
{
|
{
|
||||||
@@ -462,14 +472,14 @@ namespace ServiceLib.Services
|
|||||||
_ => null,
|
_ => null,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return null;
|
return await Task.FromResult("");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion CheckUpdate private
|
#endregion CheckUpdate private
|
||||||
|
|
||||||
#region Geo private
|
#region Geo private
|
||||||
|
|
||||||
private async Task UpdateGeoFile(string geoName, Config config, Action<bool, string> updateFunc)
|
private async Task UpdateGeoFiles(Config config, Action<bool, string> updateFunc)
|
||||||
{
|
{
|
||||||
_updateFunc = updateFunc;
|
_updateFunc = updateFunc;
|
||||||
|
|
||||||
@@ -477,11 +487,28 @@ namespace ServiceLib.Services
|
|||||||
? Global.GeoUrl
|
? Global.GeoUrl
|
||||||
: config.ConstItem.GeoSourceUrl;
|
: config.ConstItem.GeoSourceUrl;
|
||||||
|
|
||||||
var fileName = $"{geoName}.dat";
|
List<string> files = ["geosite", "geoip"];
|
||||||
var targetPath = Utils.GetBinPath($"{fileName}");
|
foreach (var geoName in files)
|
||||||
var url = string.Format(geoUrl, geoName);
|
{
|
||||||
|
var fileName = $"{geoName}.dat";
|
||||||
|
var targetPath = Utils.GetBinPath($"{fileName}");
|
||||||
|
var url = string.Format(geoUrl, geoName);
|
||||||
|
|
||||||
await DownloadGeoFile(url, fileName, targetPath, updateFunc);
|
await DownloadGeoFile(url, fileName, targetPath, updateFunc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task UpdateOtherFiles(Config config, Action<bool, string> updateFunc)
|
||||||
|
{
|
||||||
|
_updateFunc = updateFunc;
|
||||||
|
|
||||||
|
foreach (var url in Global.OtherGeoUrls)
|
||||||
|
{
|
||||||
|
var fileName = Path.GetFileName(url);
|
||||||
|
var targetPath = Utils.GetBinPath($"{fileName}");
|
||||||
|
|
||||||
|
await DownloadGeoFile(url, fileName, targetPath, updateFunc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task UpdateSrsFileAll(Config config, Action<bool, string> updateFunc)
|
private async Task UpdateSrsFileAll(Config config, Action<bool, string> updateFunc)
|
||||||
|
|||||||
@@ -520,7 +520,7 @@ namespace ServiceLib.ViewModels
|
|||||||
}
|
}
|
||||||
var exists = lstSelecteds.Exists(t => t.IndexId == _config.IndexId);
|
var exists = lstSelecteds.Exists(t => t.IndexId == _config.IndexId);
|
||||||
|
|
||||||
await ConfigHandler.RemoveServer(_config, lstSelecteds);
|
await ConfigHandler.RemoveServers(_config, lstSelecteds);
|
||||||
NoticeHandler.Instance.Enqueue(ResUI.OperationSuccess);
|
NoticeHandler.Instance.Enqueue(ResUI.OperationSuccess);
|
||||||
if (lstSelecteds.Count == _profileItems.Count)
|
if (lstSelecteds.Count == _profileItems.Count)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -60,6 +60,9 @@ namespace ServiceLib.ViewModels
|
|||||||
[Reactive]
|
[Reactive]
|
||||||
public int SystemProxySelected { get; set; }
|
public int SystemProxySelected { get; set; }
|
||||||
|
|
||||||
|
[Reactive]
|
||||||
|
public bool BlSystemProxyPacVisible { get; set; }
|
||||||
|
|
||||||
#endregion System Proxy
|
#endregion System Proxy
|
||||||
|
|
||||||
#region UI
|
#region UI
|
||||||
@@ -96,6 +99,7 @@ namespace ServiceLib.ViewModels
|
|||||||
SelectedRouting = new();
|
SelectedRouting = new();
|
||||||
SelectedServer = new();
|
SelectedServer = new();
|
||||||
RunningServerToolTipText = "-";
|
RunningServerToolTipText = "-";
|
||||||
|
BlSystemProxyPacVisible = Utils.IsWindows();
|
||||||
|
|
||||||
if (_config.TunModeItem.EnableTun && AllowEnableTun())
|
if (_config.TunModeItem.EnableTun && AllowEnableTun())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
<ResourceInclude Source="Assets/GlobalResources.axaml" />
|
<ResourceInclude Source="Assets/GlobalResources.axaml" />
|
||||||
|
<ResourceInclude Source="Controls/AutoCompleteBox.axaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Application.Resources>
|
</Application.Resources>
|
||||||
@@ -46,6 +47,12 @@
|
|||||||
Header="{x:Static resx:ResUI.menuSystemProxyNothing}"
|
Header="{x:Static resx:ResUI.menuSystemProxyNothing}"
|
||||||
IsChecked="{Binding BlSystemProxyNothing}"
|
IsChecked="{Binding BlSystemProxyNothing}"
|
||||||
ToggleType="Radio" />
|
ToggleType="Radio" />
|
||||||
|
<NativeMenuItem
|
||||||
|
Command="{Binding SystemProxyPacCmd}"
|
||||||
|
Header="{x:Static resx:ResUI.menuSystemProxyPac}"
|
||||||
|
IsChecked="{Binding BlSystemProxyPac}"
|
||||||
|
IsVisible="{Binding BlSystemProxyPacVisible}"
|
||||||
|
ToggleType="Radio" />
|
||||||
<NativeMenuItemSeparator />
|
<NativeMenuItemSeparator />
|
||||||
<NativeMenuItem Click="MenuAddServerViaClipboardClick" Header="{x:Static resx:ResUI.menuAddServerViaClipboard}" />
|
<NativeMenuItem Click="MenuAddServerViaClipboardClick" Header="{x:Static resx:ResUI.menuAddServerViaClipboard}" />
|
||||||
<NativeMenuItem Header="{x:Static resx:ResUI.menuAddServerViaScan}" IsVisible="False" />
|
<NativeMenuItem Header="{x:Static resx:ResUI.menuAddServerViaScan}" IsVisible="False" />
|
||||||
@@ -61,4 +68,4 @@
|
|||||||
</TrayIcon>
|
</TrayIcon>
|
||||||
</TrayIcons>
|
</TrayIcons>
|
||||||
</TrayIcon.Icons>
|
</TrayIcon.Icons>
|
||||||
</Application>
|
</Application>
|
||||||
|
|||||||
@@ -8,4 +8,13 @@
|
|||||||
<StreamGeometry x:Key="building_refresh">M849.652671 679.144788l111.007233-174.965917-50.615794 0C905.498584 274.107915 717.720873 88.965218 486.575446 88.965218c-233.998405 0-423.716304 189.698456-423.716304 423.707095 0 233.998405 189.716876 423.715281 423.716304 423.715281 113.936959 0 217.278605-45.079708 293.440216-118.235868l-62.46568-108.306728c-55.750745 65.205071-138.455375 106.709347-230.974535 106.709347-167.843706 0-303.882032-136.039349-303.882032-303.883055S318.732763 208.788234 486.575446 208.788234c164.951843 0 298.899554 131.522476 303.44508 295.389614l-51.357691 0L849.652671 679.144788z</StreamGeometry>
|
<StreamGeometry x:Key="building_refresh">M849.652671 679.144788l111.007233-174.965917-50.615794 0C905.498584 274.107915 717.720873 88.965218 486.575446 88.965218c-233.998405 0-423.716304 189.698456-423.716304 423.707095 0 233.998405 189.716876 423.715281 423.716304 423.715281 113.936959 0 217.278605-45.079708 293.440216-118.235868l-62.46568-108.306728c-55.750745 65.205071-138.455375 106.709347-230.974535 106.709347-167.843706 0-303.882032-136.039349-303.882032-303.883055S318.732763 208.788234 486.575446 208.788234c164.951843 0 298.899554 131.522476 303.44508 295.389614l-51.357691 0L849.652671 679.144788z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="building_ping">M273.28 899.328c-6.4 6.4-16 9.6-25.6 9.6-6.4 0-12.8-3.2-18.56-6.4-102.4-85.76-162.56-209.92-162.56-343.68 0-245.12 200.32-445.44 445.44-445.44s445.44 200.32 445.44 445.44c0 133.76-56.96 257.92-162.56 343.68-12.16 12.8-34.56 9.6-44.16-3.2-12.8-12.8-9.6-35.2 3.2-44.8a377.152 377.152 0 0 0 136.96-292.48c0-209.92-172.16-382.08-382.08-382.08-206.72-3.2-378.88 168.96-378.88 378.88 0 114.56 51.2 222.72 140.16 295.68 12.8 12.8 16 32 3.2 44.8z m394.88-540.8c12.8-12.8 31.36-12.8 44.16 0 12.8 12.8 12.8 32 0 44.8l-138.88 138.88c1.28 5.12 2.56 10.88 2.56 16.64 0 35.2-28.8 64-64 64-5.76 0-11.52-1.28-16.64-2.56l-24.32 24.32c-6.4 6.4-12.8 9.6-22.4 9.6-9.6 0-16-3.2-22.4-9.6-12.8-12.8-12.8-31.36 0-44.16l24.32-24.96a69.76 69.76 0 0 1-1.92-16.64c0-35.2 28.16-63.36 63.36-63.36 5.76 0 11.52 0.64 16.64 1.92z</StreamGeometry>
|
<StreamGeometry x:Key="building_ping">M273.28 899.328c-6.4 6.4-16 9.6-25.6 9.6-6.4 0-12.8-3.2-18.56-6.4-102.4-85.76-162.56-209.92-162.56-343.68 0-245.12 200.32-445.44 445.44-445.44s445.44 200.32 445.44 445.44c0 133.76-56.96 257.92-162.56 343.68-12.16 12.8-34.56 9.6-44.16-3.2-12.8-12.8-9.6-35.2 3.2-44.8a377.152 377.152 0 0 0 136.96-292.48c0-209.92-172.16-382.08-382.08-382.08-206.72-3.2-378.88 168.96-378.88 378.88 0 114.56 51.2 222.72 140.16 295.68 12.8 12.8 16 32 3.2 44.8z m394.88-540.8c12.8-12.8 31.36-12.8 44.16 0 12.8 12.8 12.8 32 0 44.8l-138.88 138.88c1.28 5.12 2.56 10.88 2.56 16.64 0 35.2-28.8 64-64 64-5.76 0-11.52-1.28-16.64-2.56l-24.32 24.32c-6.4 6.4-12.8 9.6-22.4 9.6-9.6 0-16-3.2-22.4-9.6-12.8-12.8-12.8-31.36 0-44.16l24.32-24.96a69.76 69.76 0 0 1-1.92-16.64c0-35.2 28.16-63.36 63.36-63.36 5.76 0 11.52 0.64 16.64 1.92z</StreamGeometry>
|
||||||
|
|
||||||
|
<x:Double x:Key="IconButtonWidth">32</x:Double>
|
||||||
|
<x:Double x:Key="IconButtonHeight">32</x:Double>
|
||||||
|
|
||||||
|
<Thickness x:Key="Margin2">2</Thickness>
|
||||||
|
<Thickness x:Key="MarginLr4">4,0</Thickness>
|
||||||
|
<Thickness x:Key="Margin4">4</Thickness>
|
||||||
|
<Thickness x:Key="MarginLr8">8,0</Thickness>
|
||||||
|
<Thickness x:Key="MarginTb8">0,8</Thickness>
|
||||||
|
<Thickness x:Key="Margin8">8</Thickness>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
|
|||||||
@@ -5,19 +5,12 @@
|
|||||||
</Border>
|
</Border>
|
||||||
</Design.PreviewWith>
|
</Design.PreviewWith>
|
||||||
|
|
||||||
<Style Selector="TextBlock.Margin8">
|
<Style Selector="DataGrid">
|
||||||
<Setter Property="Margin" Value="8" />
|
<Setter Property="RowHeight" Value="24" />
|
||||||
</Style>
|
</Style>
|
||||||
<Style Selector="StackPanel.Margin8">
|
|
||||||
<Setter Property="Margin" Value="8" />
|
<Style Selector="PathIcon">
|
||||||
|
<Setter Property="Width" Value="16" />
|
||||||
|
<Setter Property="Height" Value="16" />
|
||||||
</Style>
|
</Style>
|
||||||
<Style Selector="DockPanel.Margin8">
|
</Styles>
|
||||||
<Setter Property="Margin" Value="8" />
|
|
||||||
</Style>
|
|
||||||
<Style Selector="WrapPanel.Margin8">
|
|
||||||
<Setter Property="Margin" Value="8" />
|
|
||||||
</Style>
|
|
||||||
<Style Selector="Grid.Margin8">
|
|
||||||
<Setter Property="Margin" Value="8" />
|
|
||||||
</Style>
|
|
||||||
</Styles>
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Media;
|
using Avalonia.Media;
|
||||||
|
|
||||||
namespace v2rayN.Desktop.Common
|
namespace v2rayN.Desktop.Common
|
||||||
@@ -10,9 +10,9 @@ namespace v2rayN.Desktop.Common
|
|||||||
var uri = Path.Combine(Global.AvaAssets, "Fonts#Noto Sans SC");
|
var uri = Path.Combine(Global.AvaAssets, "Fonts#Noto Sans SC");
|
||||||
return appBuilder.With(new FontManagerOptions()
|
return appBuilder.With(new FontManagerOptions()
|
||||||
{
|
{
|
||||||
DefaultFamilyName = uri,
|
//DefaultFamilyName = uri,
|
||||||
FontFallbacks = new[] { new FontFallback { FontFamily = new FontFamily(uri) } }
|
FontFallbacks = new[] { new FontFallback { FontFamily = new FontFamily(uri) } }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
48
v2rayN/v2rayN.Desktop/Controls/AutoCompleteBox.axaml
Normal file
48
v2rayN/v2rayN.Desktop/Controls/AutoCompleteBox.axaml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<ResourceDictionary
|
||||||
|
xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:controls="clr-namespace:v2rayN.Desktop.Controls">
|
||||||
|
<!-- Add Resources Here -->
|
||||||
|
<ControlTheme x:Key="{x:Type controls:AutoCompleteBox}" TargetType="controls:AutoCompleteBox">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center" />
|
||||||
|
<Setter Property="MinHeight" Value="{DynamicResource AutoCompleteBoxDefaultHeight}" />
|
||||||
|
<Setter Property="MaxDropDownHeight" Value="{DynamicResource AutoCompleteMaxDropdownHeight}" />
|
||||||
|
<Setter Property="Template">
|
||||||
|
<ControlTemplate TargetType="AutoCompleteBox">
|
||||||
|
<Panel>
|
||||||
|
<TextBox
|
||||||
|
Name="PART_TextBox"
|
||||||
|
MinHeight="{TemplateBinding MinHeight}"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
DataValidationErrors.Errors="{TemplateBinding (DataValidationErrors.Errors)}"
|
||||||
|
InnerLeftContent="{TemplateBinding InnerLeftContent}"
|
||||||
|
InnerRightContent="{TemplateBinding InnerRightContent}"
|
||||||
|
Watermark="{TemplateBinding Watermark}" />
|
||||||
|
<Popup
|
||||||
|
Name="PART_Popup"
|
||||||
|
MaxHeight="{TemplateBinding MaxDropDownHeight}"
|
||||||
|
IsLightDismissEnabled="True"
|
||||||
|
PlacementTarget="{TemplateBinding}">
|
||||||
|
<Border
|
||||||
|
MinWidth="{Binding Bounds.Width, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
Margin="{DynamicResource AutoCompleteBoxPopupMargin}"
|
||||||
|
Padding="{DynamicResource AutoCompleteBoxPopupPadding}"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Background="{DynamicResource AutoCompleteBoxPopupBackground}"
|
||||||
|
BorderBrush="{DynamicResource AutoCompleteBoxPopupBorderBrush}"
|
||||||
|
BorderThickness="{DynamicResource AutoCompleteBoxPopupBorderThickness}"
|
||||||
|
BoxShadow="{DynamicResource AutoCompleteBoxPopupBoxShadow}"
|
||||||
|
CornerRadius="{DynamicResource AutoCompleteBoxPopupCornerRadius}">
|
||||||
|
<ListBox
|
||||||
|
Name="PART_SelectingItemsControl"
|
||||||
|
Foreground="{TemplateBinding Foreground}"
|
||||||
|
ItemTemplate="{TemplateBinding ItemTemplate}"
|
||||||
|
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||||
|
ScrollViewer.VerticalScrollBarVisibility="Auto" />
|
||||||
|
</Border>
|
||||||
|
</Popup>
|
||||||
|
</Panel>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter>
|
||||||
|
</ControlTheme>
|
||||||
|
</ResourceDictionary>
|
||||||
38
v2rayN/v2rayN.Desktop/Controls/AutoCompleteBox.cs
Normal file
38
v2rayN/v2rayN.Desktop/Controls/AutoCompleteBox.cs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
using Avalonia.Input;
|
||||||
|
using Avalonia.Interactivity;
|
||||||
|
|
||||||
|
namespace v2rayN.Desktop.Controls;
|
||||||
|
|
||||||
|
public class AutoCompleteBox : Avalonia.Controls.AutoCompleteBox
|
||||||
|
{
|
||||||
|
static AutoCompleteBox()
|
||||||
|
{
|
||||||
|
MinimumPrefixLengthProperty.OverrideDefaultValue<AutoCompleteBox>(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AutoCompleteBox()
|
||||||
|
{
|
||||||
|
AddHandler(PointerPressedEvent, OnBoxPointerPressed, RoutingStrategies.Tunnel);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnBoxPointerPressed(object? sender, PointerPressedEventArgs e)
|
||||||
|
{
|
||||||
|
if (Equals(sender, this) && e.GetCurrentPoint(this).Properties.IsLeftButtonPressed)
|
||||||
|
{
|
||||||
|
SetCurrentValue(IsDropDownOpenProperty, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnGotFocus(GotFocusEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnGotFocus(e);
|
||||||
|
if (IsDropDownOpen)
|
||||||
|
return;
|
||||||
|
SetCurrentValue(IsDropDownOpenProperty, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
SetCurrentValue(SelectedItemProperty, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -119,6 +119,17 @@ namespace v2rayN.Desktop.ViewModels
|
|||||||
Value = size,
|
Value = size,
|
||||||
});
|
});
|
||||||
Application.Current?.Styles.Add(style);
|
Application.Current?.Styles.Add(style);
|
||||||
|
|
||||||
|
ModifyFontSizeEx(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ModifyFontSizeEx(double size)
|
||||||
|
{
|
||||||
|
//DataGrid
|
||||||
|
var rowHeight = 20 + (size / 2);
|
||||||
|
var style = new Style(x => x.OfType<DataGrid>());
|
||||||
|
style.Add(new Setter(DataGrid.RowHeightProperty, rowHeight));
|
||||||
|
Application.Current?.Styles.Add(style);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ModifyFontFamily()
|
private void ModifyFontFamily()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Window
|
<Window
|
||||||
x:Class="v2rayN.Desktop.Views.AddServer2Window"
|
x:Class="v2rayN.Desktop.Views.AddServer2Window"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -13,10 +13,10 @@
|
|||||||
ShowInTaskbar="False"
|
ShowInTaskbar="False"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Bottom"
|
DockPanel.Dock="Bottom"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Button
|
<Button
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<Button
|
<Button
|
||||||
x:Name="btnCancel"
|
x:Name="btnCancel"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Content="{x:Static resx:ResUI.TbCancel}"
|
Content="{x:Static resx:ResUI.TbCancel}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
IsCancel="True" />
|
IsCancel="True" />
|
||||||
@@ -39,14 +39,14 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.menuServers}" />
|
Text="{x:Static resx:ResUI.menuServers}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbRemarks}" />
|
Text="{x:Static resx:ResUI.TbRemarks}" />
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
@@ -56,13 +56,13 @@
|
|||||||
Width="400"
|
Width="400"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbAddress}" />
|
Text="{x:Static resx:ResUI.TbAddress}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtAddress"
|
x:Name="txtAddress"
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
Width="400"
|
Width="400"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
IsReadOnly="True" />
|
IsReadOnly="True" />
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
@@ -80,11 +80,11 @@
|
|||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnBrowse"
|
x:Name="btnBrowse"
|
||||||
Margin="2,0"
|
Margin="{StaticResource MarginLr4}"
|
||||||
Content="{x:Static resx:ResUI.TbBrowse}" />
|
Content="{x:Static resx:ResUI.TbBrowse}" />
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnEdit"
|
x:Name="btnEdit"
|
||||||
Margin="2,0"
|
Margin="{StaticResource MarginLr4}"
|
||||||
Content="{x:Static resx:ResUI.TbEdit}" />
|
Content="{x:Static resx:ResUI.TbEdit}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbCoreType}" />
|
Text="{x:Static resx:ResUI.TbCoreType}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbCoreType"
|
x:Name="cmbCoreType"
|
||||||
@@ -100,27 +100,27 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
MaxDropDownHeight="1000" />
|
MaxDropDownHeight="1000" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbDisplayLog}" />
|
Text="{x:Static resx:ResUI.TbDisplayLog}" />
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togDisplayLog"
|
x:Name="togDisplayLog"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
Text="{x:Static resx:ResUI.TipDisplayLog}" />
|
Text="{x:Static resx:ResUI.TipDisplayLog}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbPreSocksPort}" />
|
Text="{x:Static resx:ResUI.TbPreSocksPort}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPreSocksPort"
|
x:Name="txtPreSocksPort"
|
||||||
@@ -136,12 +136,12 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Row="6"
|
Grid.Row="6"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.ColumnSpan="2"
|
Grid.ColumnSpan="2"
|
||||||
Classes="Margin8">
|
Margin="{StaticResource Margin4}">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Width="500"
|
Width="500"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
@@ -149,12 +149,12 @@
|
|||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Width="500"
|
Width="500"
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
Text="{x:Static resx:ResUI.CustomServerTips}"
|
Text="{x:Static resx:ResUI.CustomServerTips}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Window
|
<Window
|
||||||
x:Class="v2rayN.Desktop.Views.AddServerWindow"
|
x:Class="v2rayN.Desktop.Views.AddServerWindow"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -13,10 +13,10 @@
|
|||||||
ShowInTaskbar="False"
|
ShowInTaskbar="False"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
DockPanel.Dock="Bottom"
|
DockPanel.Dock="Bottom"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Button
|
<Button
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<Button
|
<Button
|
||||||
x:Name="btnCancel"
|
x:Name="btnCancel"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Content="{x:Static resx:ResUI.TbCancel}"
|
Content="{x:Static resx:ResUI.TbCancel}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
IsCancel="True" />
|
IsCancel="True" />
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.menuServers}" />
|
Text="{x:Static resx:ResUI.menuServers}" />
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
@@ -53,52 +53,52 @@
|
|||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbCoreType"
|
x:Name="cmbCoreType"
|
||||||
Width="100"
|
Width="100"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.TbCoreType}" />
|
ToolTip.Tip="{x:Static resx:ResUI.TbCoreType}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbRemarks}" />
|
Text="{x:Static resx:ResUI.TbRemarks}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtRemarks"
|
x:Name="txtRemarks"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbAddress}" />
|
Text="{x:Static resx:ResUI.TbAddress}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtAddress"
|
x:Name="txtAddress"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbPort}" />
|
Text="{x:Static resx:ResUI.TbPort}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPort"
|
x:Name="txtPort"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Separator Grid.Row="1" Margin="0,10" />
|
<Separator Grid.Row="1" Margin="{StaticResource MarginTb8}" />
|
||||||
|
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridVMess"
|
x:Name="gridVMess"
|
||||||
@@ -110,48 +110,48 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbId}" />
|
Text="{x:Static resx:ResUI.TbId}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtId"
|
x:Name="txtId"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnGUID"
|
x:Name="btnGUID"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Margin="4,0"
|
Margin="{StaticResource MarginLr4}"
|
||||||
Content="{x:Static resx:ResUI.TbGUID}" />
|
Content="{x:Static resx:ResUI.TbGUID}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbAlterId}" />
|
Text="{x:Static resx:ResUI.TbAlterId}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtAlterId"
|
x:Name="txtAlterId"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSecurity}" />
|
Text="{x:Static resx:ResUI.TbSecurity}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbSecurity"
|
x:Name="cmbSecurity"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridSs"
|
x:Name="gridSs"
|
||||||
@@ -163,28 +163,28 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbId3}" />
|
Text="{x:Static resx:ResUI.TbId3}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtId3"
|
x:Name="txtId3"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSecurity3}" />
|
Text="{x:Static resx:ResUI.TbSecurity3}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbSecurity3"
|
x:Name="cmbSecurity3"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="300"
|
Width="300"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridSocks"
|
x:Name="gridSocks"
|
||||||
@@ -196,28 +196,28 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSecurity4}" />
|
Text="{x:Static resx:ResUI.TbSecurity4}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtSecurity4"
|
x:Name="txtSecurity4"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbId4}" />
|
Text="{x:Static resx:ResUI.TbId4}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtId4"
|
x:Name="txtId4"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridVLESS"
|
x:Name="gridVLESS"
|
||||||
@@ -229,48 +229,48 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbId5}" />
|
Text="{x:Static resx:ResUI.TbId5}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtId5"
|
x:Name="txtId5"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnGUID5"
|
x:Name="btnGUID5"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Margin="4,0"
|
Margin="{StaticResource MarginLr4}"
|
||||||
Content="{x:Static resx:ResUI.TbGUID}" />
|
Content="{x:Static resx:ResUI.TbGUID}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbFlow5}" />
|
Text="{x:Static resx:ResUI.TbFlow5}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbFlow5"
|
x:Name="cmbFlow5"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSecurity5}" />
|
Text="{x:Static resx:ResUI.TbSecurity5}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtSecurity5"
|
x:Name="txtSecurity5"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridTrojan"
|
x:Name="gridTrojan"
|
||||||
@@ -282,28 +282,28 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbId3}" />
|
Text="{x:Static resx:ResUI.TbId3}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtId6"
|
x:Name="txtId6"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbFlow5}" />
|
Text="{x:Static resx:ResUI.TbFlow5}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbFlow6"
|
x:Name="cmbFlow6"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridHysteria2"
|
x:Name="gridHysteria2"
|
||||||
@@ -315,28 +315,28 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbId3}" />
|
Text="{x:Static resx:ResUI.TbId3}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtId7"
|
x:Name="txtId7"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbPath7}" />
|
Text="{x:Static resx:ResUI.TbPath7}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPath7"
|
x:Name="txtPath7"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridTuic"
|
x:Name="gridTuic"
|
||||||
@@ -348,41 +348,41 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbId}" />
|
Text="{x:Static resx:ResUI.TbId}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtId8"
|
x:Name="txtId8"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbId3}" />
|
Text="{x:Static resx:ResUI.TbId3}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtSecurity8"
|
x:Name="txtSecurity8"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbHeaderType8}" />
|
Text="{x:Static resx:ResUI.TbHeaderType8}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbHeaderType8"
|
x:Name="cmbHeaderType8"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridWireguard"
|
x:Name="gridWireguard"
|
||||||
@@ -394,75 +394,75 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbPrivateKey}" />
|
Text="{x:Static resx:ResUI.TbPrivateKey}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtId9"
|
x:Name="txtId9"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbPublicKey}" />
|
Text="{x:Static resx:ResUI.TbPublicKey}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPublicKey9"
|
x:Name="txtPublicKey9"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbReserved}" />
|
Text="{x:Static resx:ResUI.TbReserved}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPath9"
|
x:Name="txtPath9"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbLocalAddress}" />
|
Text="{x:Static resx:ResUI.TbLocalAddress}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtRequestHost9"
|
x:Name="txtRequestHost9"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="Mtu" />
|
Text="Mtu" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtShortId9"
|
x:Name="txtShortId9"
|
||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Separator
|
<Separator
|
||||||
x:Name="sepa2"
|
x:Name="sepa2"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Margin="0,10" />
|
Margin="{StaticResource MarginTb8}" />
|
||||||
|
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridTransport"
|
x:Name="gridTransport"
|
||||||
@@ -473,34 +473,34 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.ColumnSpan="2"
|
Grid.ColumnSpan="2"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.GbTransport}" />
|
Text="{x:Static resx:ResUI.GbTransport}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbNetwork}" />
|
Text="{x:Static resx:ResUI.TbNetwork}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbNetwork"
|
x:Name="cmbNetwork"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TipNetwork}" />
|
Text="{x:Static resx:ResUI.TipNetwork}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
x:Name="labHeaderType"
|
x:Name="labHeaderType"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbHeaderType}" />
|
Text="{x:Static resx:ResUI.TbHeaderType}" />
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
@@ -510,35 +510,32 @@
|
|||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbHeaderType"
|
x:Name="cmbHeaderType"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnExtra"
|
x:Name="btnExtra"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="10,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Theme="{DynamicResource BorderlessButton}">
|
Theme="{DynamicResource BorderlessButton}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_more}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_more}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
<Button.Flyout>
|
<Button.Flyout>
|
||||||
<Flyout>
|
<Flyout>
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TransportExtraTip}" />
|
Text="{x:Static resx:ResUI.TransportExtraTip}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtExtra"
|
x:Name="txtExtra"
|
||||||
Width="400"
|
Width="400"
|
||||||
MinHeight="100"
|
MinHeight="100"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="TextArea Margin8"
|
Classes="TextArea"
|
||||||
MinLines="6"
|
MinLines="6"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@@ -550,52 +547,52 @@
|
|||||||
x:Name="tipHeaderType"
|
x:Name="tipHeaderType"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbHeaderType}" />
|
Text="{x:Static resx:ResUI.TbHeaderType}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbRequestHost}" />
|
Text="{x:Static resx:ResUI.TbRequestHost}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtRequestHost"
|
x:Name="txtRequestHost"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
x:Name="tipRequestHost"
|
x:Name="tipRequestHost"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbRequestHost}" />
|
Text="{x:Static resx:ResUI.TbRequestHost}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbPath}" />
|
Text="{x:Static resx:ResUI.TbPath}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPath"
|
x:Name="txtPath"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
x:Name="tipPath"
|
x:Name="tipPath"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbPath}" />
|
Text="{x:Static resx:ResUI.TbPath}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Separator Grid.Row="5" Margin="0,10" />
|
<Separator Grid.Row="5" Margin="{StaticResource MarginTb8}" />
|
||||||
|
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridTls"
|
x:Name="gridTls"
|
||||||
@@ -606,15 +603,15 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbStreamSecurity}" />
|
Text="{x:Static resx:ResUI.TbStreamSecurity}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbStreamSecurity"
|
x:Name="cmbStreamSecurity"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridTlsMore"
|
x:Name="gridTlsMore"
|
||||||
@@ -626,55 +623,55 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSNI}" />
|
Text="{x:Static resx:ResUI.TbSNI}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtSNI"
|
x:Name="txtSNI"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbFingerprint}" />
|
Text="{x:Static resx:ResUI.TbFingerprint}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbFingerprint"
|
x:Name="cmbFingerprint"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbAlpn}" />
|
Text="{x:Static resx:ResUI.TbAlpn}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbAlpn"
|
x:Name="cmbAlpn"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbAllowInsecure}" />
|
Text="{x:Static resx:ResUI.TbAllowInsecure}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbAllowInsecure"
|
x:Name="cmbAllowInsecure"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="gridRealityMore"
|
x:Name="gridRealityMore"
|
||||||
@@ -686,74 +683,74 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSNI}" />
|
Text="{x:Static resx:ResUI.TbSNI}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtSNI2"
|
x:Name="txtSNI2"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbFingerprint}" />
|
Text="{x:Static resx:ResUI.TbFingerprint}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbFingerprint2"
|
x:Name="cmbFingerprint2"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbPublicKey}" />
|
Text="{x:Static resx:ResUI.TbPublicKey}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPublicKey"
|
x:Name="txtPublicKey"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbShortId}" />
|
Text="{x:Static resx:ResUI.TbShortId}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtShortId"
|
x:Name="txtShortId"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSpiderX}" />
|
Text="{x:Static resx:ResUI.TbSpiderX}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtSpiderX"
|
x:Name="txtSpiderX"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="400"
|
Width="400"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Separator Grid.Row="8" Margin="0,10" />
|
<Separator Grid.Row="8" Margin="{StaticResource MarginTb8}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<UserControl
|
<UserControl
|
||||||
x:Class="v2rayN.Desktop.Views.BackupAndRestoreView"
|
x:Class="v2rayN.Desktop.Views.BackupAndRestoreView"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -14,90 +14,87 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</UserControl.Styles>
|
</UserControl.Styles>
|
||||||
|
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel Classes="Margin8" DockPanel.Dock="Bottom">
|
<StackPanel Margin="{StaticResource Margin4}" DockPanel.Dock="Bottom">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Name="txtMsg"
|
Name="txtMsg"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<Border
|
<Border
|
||||||
Margin="4"
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Theme="{DynamicResource CardBorder}">
|
Theme="{DynamicResource CardBorder}">
|
||||||
|
|
||||||
<Grid
|
<Grid
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
ColumnDefinitions="300,200"
|
ColumnDefinitions="300,200"
|
||||||
RowDefinitions="Auto,Auto,Auto,Auto">
|
RowDefinitions="Auto,Auto,Auto,Auto">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.menuLocalBackupAndRestore}" />
|
Text="{x:Static resx:ResUI.menuLocalBackupAndRestore}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.menuLocalBackup}" />
|
Text="{x:Static resx:ResUI.menuLocalBackup}" />
|
||||||
<Button
|
<Button
|
||||||
Name="menuLocalBackup"
|
Name="menuLocalBackup"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Content="{x:Static resx:ResUI.menuLocalBackup}" />
|
Content="{x:Static resx:ResUI.menuLocalBackup}" />
|
||||||
|
|
||||||
<Separator
|
<Separator
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.ColumnSpan="2" />
|
Grid.ColumnSpan="2"
|
||||||
|
Margin="{StaticResource MarginTb8}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.menuLocalRestore}" />
|
Text="{x:Static resx:ResUI.menuLocalRestore}" />
|
||||||
<Button
|
<Button
|
||||||
Name="menuLocalRestore"
|
Name="menuLocalRestore"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Content="{x:Static resx:ResUI.menuLocalRestore}" />
|
Content="{x:Static resx:ResUI.menuLocalRestore}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
<Border
|
<Border
|
||||||
Margin="4"
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Theme="{DynamicResource CardBorder}">
|
Theme="{DynamicResource CardBorder}">
|
||||||
<Grid
|
<Grid
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
ColumnDefinitions="300,200"
|
ColumnDefinitions="300,200"
|
||||||
RowDefinitions="Auto,Auto,Auto,Auto,Auto">
|
RowDefinitions="Auto,Auto,Auto,Auto,Auto">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<TextBlock Classes="Margin8" Text="{x:Static resx:ResUI.menuRemoteBackupAndRestore}" />
|
<TextBlock Margin="{StaticResource Margin4}" Text="{x:Static resx:ResUI.menuRemoteBackupAndRestore}" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
MinWidth="30"
|
MinWidth="{StaticResource IconButtonWidth}"
|
||||||
Margin="10,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Theme="{DynamicResource BorderlessButton}">
|
Theme="{DynamicResource BorderlessButton}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_more}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_more}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
<Button.Flyout>
|
<Button.Flyout>
|
||||||
<Flyout>
|
<Flyout>
|
||||||
@@ -107,7 +104,7 @@
|
|||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.LvWebDavUrl}" />
|
Text="{x:Static resx:ResUI.LvWebDavUrl}" />
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
@@ -115,14 +112,14 @@
|
|||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.LvWebDavUserName}" />
|
Text="{x:Static resx:ResUI.LvWebDavUserName}" />
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
@@ -130,13 +127,13 @@
|
|||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.LvWebDavPassword}" />
|
Text="{x:Static resx:ResUI.LvWebDavPassword}" />
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
@@ -144,13 +141,13 @@
|
|||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.LvWebDavDirName}" />
|
Text="{x:Static resx:ResUI.LvWebDavDirName}" />
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
@@ -158,7 +155,7 @@
|
|||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
x:Name="menuWebDavCheck"
|
x:Name="menuWebDavCheck"
|
||||||
@@ -166,7 +163,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Content="{x:Static resx:ResUI.LvWebDavCheck}" />
|
Content="{x:Static resx:ResUI.LvWebDavCheck}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@@ -180,35 +177,36 @@
|
|||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.menuRemoteBackup}" />
|
Text="{x:Static resx:ResUI.menuRemoteBackup}" />
|
||||||
<Button
|
<Button
|
||||||
Name="menuRemoteBackup"
|
Name="menuRemoteBackup"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Content="{x:Static resx:ResUI.menuRemoteBackup}" />
|
Content="{x:Static resx:ResUI.menuRemoteBackup}" />
|
||||||
|
|
||||||
<Separator
|
<Separator
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.ColumnSpan="2" />
|
Grid.ColumnSpan="2"
|
||||||
|
Margin="{StaticResource MarginTb8}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.menuRemoteRestore}" />
|
Text="{x:Static resx:ResUI.menuRemoteRestore}" />
|
||||||
<Button
|
<Button
|
||||||
Name="menuRemoteRestore"
|
Name="menuRemoteRestore"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Content="{x:Static resx:ResUI.menuRemoteRestore}" />
|
Content="{x:Static resx:ResUI.menuRemoteRestore}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<UserControl
|
<UserControl
|
||||||
x:Class="v2rayN.Desktop.Views.CheckUpdateView"
|
x:Class="v2rayN.Desktop.Views.CheckUpdateView"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -11,40 +11,45 @@
|
|||||||
x:DataType="vms:CheckUpdateViewModel"
|
x:DataType="vms:CheckUpdateViewModel"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel
|
<Border
|
||||||
HorizontalAlignment="Center"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8"
|
VerticalAlignment="Center"
|
||||||
DockPanel.Dock="Bottom"
|
DockPanel.Dock="Bottom"
|
||||||
Orientation="Horizontal">
|
Theme="{DynamicResource CardBorder}">
|
||||||
|
|
||||||
<TextBlock
|
<StackPanel
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Classes="Margin8"
|
Orientation="Horizontal">
|
||||||
Text="{x:Static resx:ResUI.TbSettingsEnableCheckPreReleaseUpdate}" />
|
|
||||||
<ToggleSwitch
|
|
||||||
x:Name="togEnableCheckPreReleaseUpdate"
|
|
||||||
HorizontalAlignment="Left"
|
|
||||||
Classes="Margin8" />
|
|
||||||
|
|
||||||
<Button
|
<TextBlock
|
||||||
x:Name="btnCheckUpdate"
|
Margin="{StaticResource Margin4}"
|
||||||
Width="100"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8"
|
VerticalAlignment="Center"
|
||||||
Content="{x:Static resx:ResUI.menuCheckUpdate}" />
|
Text="{x:Static resx:ResUI.TbSettingsEnableCheckPreReleaseUpdate}" />
|
||||||
</StackPanel>
|
<ToggleSwitch
|
||||||
|
x:Name="togEnableCheckPreReleaseUpdate"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
x:Name="btnCheckUpdate"
|
||||||
|
Width="100"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
|
Content="{x:Static resx:ResUI.menuCheckUpdate}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
<Border
|
<Border
|
||||||
Margin="4"
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Theme="{DynamicResource CardBorder}">
|
Theme="{DynamicResource CardBorder}">
|
||||||
|
|
||||||
<ListBox
|
<ListBox
|
||||||
x:Name="lstCheckUpdates"
|
x:Name="lstCheckUpdates"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
ItemsSource="{Binding CheckUpdateModels}"
|
ItemsSource="{Binding CheckUpdateModels}">
|
||||||
Theme="{StaticResource ButtonRadioGroupListBox}">
|
|
||||||
<ItemsControl.ItemsPanel>
|
<ItemsControl.ItemsPanel>
|
||||||
<ItemsPanelTemplate>
|
<ItemsPanelTemplate>
|
||||||
<StackPanel Orientation="Vertical" />
|
<StackPanel Orientation="Vertical" />
|
||||||
@@ -57,7 +62,7 @@
|
|||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togAutoRefresh"
|
x:Name="togAutoRefresh"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Margin="8"
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
IsChecked="{Binding IsSelected}" />
|
IsChecked="{Binding IsSelected}" />
|
||||||
@@ -79,4 +84,4 @@
|
|||||||
</ListBox>
|
</ListBox>
|
||||||
</Border>
|
</Border>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -14,59 +14,51 @@
|
|||||||
<DockPanel Margin="2">
|
<DockPanel Margin="2">
|
||||||
<WrapPanel
|
<WrapPanel
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtHostFilter"
|
x:Name="txtHostFilter"
|
||||||
Width="200"
|
Width="200"
|
||||||
Margin="8,0"
|
|
||||||
VerticalContentAlignment="Center"
|
VerticalContentAlignment="Center"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
Watermark="{x:Static resx:ResUI.ConnectionsHostFilterTitle}" />
|
Watermark="{x:Static resx:ResUI.ConnectionsHostFilterTitle}" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnConnectionCloseAll"
|
x:Name="btnConnectionCloseAll"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="8,0"
|
|
||||||
Classes="Success"
|
Classes="Success"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
Theme="{DynamicResource BorderlessButton}"
|
Theme="{DynamicResource BorderlessButton}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuConnectionCloseAll}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuConnectionCloseAll}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_delete}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_delete}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnAutofitColumnWidth"
|
x:Name="btnAutofitColumnWidth"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="8,0"
|
|
||||||
Classes="Success"
|
Classes="Success"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
Theme="{DynamicResource BorderlessButton}"
|
Theme="{DynamicResource BorderlessButton}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuProfileAutofitColumnWidth}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuProfileAutofitColumnWidth}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_fit}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_fit}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
Text="{x:Static resx:ResUI.TbAutoRefresh}" />
|
Text="{x:Static resx:ResUI.TbAutoRefresh}" />
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togAutoRefresh"
|
x:Name="togAutoRefresh"
|
||||||
Margin="8,0"
|
HorizontalAlignment="Left"
|
||||||
HorizontalAlignment="Left" />
|
Margin="{StaticResource MarginLr8}" />
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
|
|
||||||
<DataGrid
|
<DataGrid
|
||||||
@@ -108,4 +100,4 @@
|
|||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -17,32 +17,32 @@
|
|||||||
|
|
||||||
<DockPanel Margin="2">
|
<DockPanel Margin="2">
|
||||||
<WrapPanel
|
<WrapPanel
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{x:Static resx:ResUI.menuRulemode}" />
|
Text="{x:Static resx:ResUI.menuRulemode}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbRulemode"
|
x:Name="cmbRulemode"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0">
|
Margin="{StaticResource MarginLr8}">
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.menuModeRule}" />
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuModeRule}" />
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.menuModeGlobal}" />
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuModeGlobal}" />
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.menuModeDirect}" />
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuModeDirect}" />
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{x:Static resx:ResUI.TbSorting}" />
|
Text="{x:Static resx:ResUI.TbSorting}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbSorting"
|
x:Name="cmbSorting"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0">
|
Margin="{StaticResource MarginLr8}">
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.TbSortingDelay}" />
|
<ComboBoxItem Content="{x:Static resx:ResUI.TbSortingDelay}" />
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.TbSortingName}" />
|
<ComboBoxItem Content="{x:Static resx:ResUI.TbSortingName}" />
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.TbSortingDefault}" />
|
<ComboBoxItem Content="{x:Static resx:ResUI.TbSortingDefault}" />
|
||||||
@@ -50,53 +50,44 @@
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
x:Name="menuProxiesReload"
|
x:Name="menuProxiesReload"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Classes="Success"
|
Classes="Success"
|
||||||
Theme="{DynamicResource BorderlessButton}"
|
Theme="{DynamicResource BorderlessButton}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuProxiesReload}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuProxiesReload}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_refresh}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_refresh}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
x:Name="menuProxiesDelaytest"
|
x:Name="menuProxiesDelaytest"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Classes="Success"
|
Classes="Success"
|
||||||
Theme="{DynamicResource BorderlessButton}"
|
Theme="{DynamicResource BorderlessButton}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuProxiesDelaytest}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuProxiesDelaytest}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_ping}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_ping}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{x:Static resx:ResUI.TbAutoRefresh}" />
|
Text="{x:Static resx:ResUI.TbAutoRefresh}" />
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togAutoRefresh"
|
x:Name="togAutoRefresh"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
HorizontalAlignment="Left" />
|
HorizontalAlignment="Left" />
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
<DockPanel>
|
<DockPanel>
|
||||||
<ListBox
|
<ListBox
|
||||||
x:Name="lstProxyGroups"
|
x:Name="lstProxyGroups"
|
||||||
DockPanel.Dock="Left"
|
DockPanel.Dock="Left"
|
||||||
ItemsSource="{Binding ProxyGroups}"
|
ItemsSource="{Binding ProxyGroups}">
|
||||||
Theme="{StaticResource ButtonRadioGroupListBox}">
|
|
||||||
<ItemsControl.ItemsPanel>
|
<ItemsControl.ItemsPanel>
|
||||||
<ItemsPanelTemplate>
|
<ItemsPanelTemplate>
|
||||||
<StackPanel Orientation="Vertical" />
|
<StackPanel Orientation="Vertical" />
|
||||||
@@ -104,27 +95,24 @@
|
|||||||
</ItemsControl.ItemsPanel>
|
</ItemsControl.ItemsPanel>
|
||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<Border
|
<Label
|
||||||
Width="160"
|
Width="160"
|
||||||
Margin="-8,-4"
|
Margin="-4,-6"
|
||||||
Padding="0"
|
Padding="0"
|
||||||
Theme="{StaticResource CardBorder}">
|
Theme="{DynamicResource TagLabel}">
|
||||||
<Grid Classes="Margin8" RowDefinitions="1*,8,1*">
|
<Grid Margin="{StaticResource Margin4}" RowDefinitions="1*,8,1*">
|
||||||
<DockPanel Grid.Row="0">
|
<DockPanel Grid.Row="0">
|
||||||
<TextBlock DockPanel.Dock="Right" Text="{Binding Type}" />
|
<TextBlock DockPanel.Dock="Right" Text="{Binding Type}" />
|
||||||
<TextBlock Text="{Binding Name}" />
|
<TextBlock Text="{Binding Name}" />
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
<TextBlock Grid.Row="2" Text="{Binding Now}" />
|
<TextBlock Grid.Row="2" Text="{Binding Now}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Label>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ItemsControl.ItemTemplate>
|
</ItemsControl.ItemTemplate>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
|
|
||||||
<ListBox
|
<ListBox x:Name="lstProxyDetails" ItemsSource="{Binding ProxyDetails}">
|
||||||
x:Name="lstProxyDetails"
|
|
||||||
ItemsSource="{Binding ProxyDetails}"
|
|
||||||
Theme="{StaticResource ButtonRadioGroupListBox}">
|
|
||||||
<ItemsControl.ContextMenu>
|
<ItemsControl.ContextMenu>
|
||||||
<ContextMenu>
|
<ContextMenu>
|
||||||
<MenuItem x:Name="menuProxiesDelaytestPart" Header="{x:Static resx:ResUI.menuProxiesDelaytestPart}" />
|
<MenuItem x:Name="menuProxiesDelaytestPart" Header="{x:Static resx:ResUI.menuProxiesDelaytestPart}" />
|
||||||
@@ -138,11 +126,11 @@
|
|||||||
</ItemsControl.ItemsPanel>
|
</ItemsControl.ItemsPanel>
|
||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<Border
|
<Label
|
||||||
Width="160"
|
Width="160"
|
||||||
Margin="-12,-4"
|
Margin="-10,-6"
|
||||||
Padding="0"
|
Padding="0"
|
||||||
Theme="{StaticResource CardBorder}">
|
Theme="{DynamicResource TagLabel}">
|
||||||
<DockPanel>
|
<DockPanel>
|
||||||
<Border
|
<Border
|
||||||
Width="5"
|
Width="5"
|
||||||
@@ -151,7 +139,7 @@
|
|||||||
CornerRadius="4"
|
CornerRadius="4"
|
||||||
DockPanel.Dock="Left"
|
DockPanel.Dock="Left"
|
||||||
IsVisible="{Binding IsActive}" />
|
IsVisible="{Binding IsActive}" />
|
||||||
<Grid Classes="Margin8" RowDefinitions="1*,8,1*">
|
<Grid Margin="{StaticResource Margin4}" RowDefinitions="1*,8,1*">
|
||||||
<TextBlock Grid.Row="0" Text="{Binding Name}" />
|
<TextBlock Grid.Row="0" Text="{Binding Name}" />
|
||||||
<DockPanel Grid.Row="2">
|
<DockPanel Grid.Row="2">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
@@ -162,10 +150,10 @@
|
|||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Border>
|
</Label>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ItemsControl.ItemTemplate>
|
</ItemsControl.ItemTemplate>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Window
|
<Window
|
||||||
x:Class="v2rayN.Desktop.Views.DNSSettingWindow"
|
x:Class="v2rayN.Desktop.Views.DNSSettingWindow"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -13,10 +13,10 @@
|
|||||||
ShowInTaskbar="False"
|
ShowInTaskbar="False"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
DockPanel.Dock="Bottom"
|
DockPanel.Dock="Bottom"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Button
|
<Button
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<Button
|
<Button
|
||||||
x:Name="btnCancel"
|
x:Name="btnCancel"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Content="{x:Static resx:ResUI.TbCancel}"
|
Content="{x:Static resx:ResUI.TbCancel}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
IsCancel="True" />
|
IsCancel="True" />
|
||||||
@@ -36,21 +36,21 @@
|
|||||||
|
|
||||||
<TabControl HorizontalContentAlignment="Left">
|
<TabControl HorizontalContentAlignment="Left">
|
||||||
<TabItem Header="{x:Static resx:ResUI.TbSettingsCoreDns}">
|
<TabItem Header="{x:Static resx:ResUI.TbSettingsCoreDns}">
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
|
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSettingsRemoteDNS}" />
|
Text="{x:Static resx:ResUI.TbSettingsRemoteDNS}" />
|
||||||
|
|
||||||
<TextBlock VerticalAlignment="Center" Classes="Margin8">
|
<TextBlock Margin="{StaticResource Margin4}" VerticalAlignment="Center">
|
||||||
<HyperlinkButton Classes="WithIcon" Click="linkDnsObjectDoc_Click">
|
<HyperlinkButton Classes="WithIcon" Click="linkDnsObjectDoc_Click">
|
||||||
<TextBlock Text="{x:Static resx:ResUI.TbDnsObjectDoc}" />
|
<TextBlock Text="{x:Static resx:ResUI.TbDnsObjectDoc}" />
|
||||||
</HyperlinkButton>
|
</HyperlinkButton>
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnImportDefConfig4V2ray"
|
x:Name="btnImportDefConfig4V2ray"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Content="{x:Static resx:ResUI.TbSettingDnsImportDefConfig}"
|
Content="{x:Static resx:ResUI.TbSettingDnsImportDefConfig}"
|
||||||
Cursor="Hand" />
|
Cursor="Hand" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@@ -58,44 +58,45 @@
|
|||||||
<WrapPanel DockPanel.Dock="Bottom" Orientation="Horizontal">
|
<WrapPanel DockPanel.Dock="Bottom" Orientation="Horizontal">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSettingsUseSystemHosts}" />
|
Text="{x:Static resx:ResUI.TbSettingsUseSystemHosts}" />
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togUseSystemHosts"
|
x:Name="togUseSystemHosts"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSettingsDomainStrategy4Freedom}" />
|
Text="{x:Static resx:ResUI.TbSettingsDomainStrategy4Freedom}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbdomainStrategy4Freedom"
|
x:Name="cmbdomainStrategy4Freedom"
|
||||||
Width="150"
|
Width="150"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSettingsDomainDNSAddress}" />
|
Text="{x:Static resx:ResUI.TbSettingsDomainDNSAddress}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbdomainDNSAddress"
|
x:Name="cmbdomainDNSAddress"
|
||||||
Width="150"
|
Width="150"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
|
|
||||||
<Grid Classes="Margin8">
|
<Grid Margin="{StaticResource Margin4}">
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtnormalDNS"
|
x:Name="txtnormalDNS"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Stretch"
|
VerticalAlignment="Stretch"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
Classes="TextArea Margin8"
|
Classes="TextArea"
|
||||||
TextWrapping="Wrap"
|
TextWrapping="Wrap"
|
||||||
Watermark="HTTP/SOCKS" />
|
Watermark="HTTP/SOCKS" />
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -103,16 +104,16 @@
|
|||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem Header="{x:Static resx:ResUI.TbSettingsCoreDnsSingbox}">
|
<TabItem Header="{x:Static resx:ResUI.TbSettingsCoreDnsSingbox}">
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
|
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
|
||||||
<TextBlock VerticalAlignment="Center" Classes="Margin8">
|
<TextBlock Margin="{StaticResource Margin4}" VerticalAlignment="Center">
|
||||||
<HyperlinkButton Classes="WithIcon" Click="linkDnsSingboxObjectDoc_Click">
|
<HyperlinkButton Classes="WithIcon" Click="linkDnsSingboxObjectDoc_Click">
|
||||||
<TextBlock Text="{x:Static resx:ResUI.TbDnsSingboxObjectDoc}" />
|
<TextBlock Text="{x:Static resx:ResUI.TbDnsSingboxObjectDoc}" />
|
||||||
</HyperlinkButton>
|
</HyperlinkButton>
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnImportDefConfig4Singbox"
|
x:Name="btnImportDefConfig4Singbox"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Content="{x:Static resx:ResUI.TbSettingDnsImportDefConfig}"
|
Content="{x:Static resx:ResUI.TbSettingDnsImportDefConfig}"
|
||||||
Cursor="Hand" />
|
Cursor="Hand" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@@ -120,28 +121,28 @@
|
|||||||
<WrapPanel DockPanel.Dock="Bottom" Orientation="Horizontal">
|
<WrapPanel DockPanel.Dock="Bottom" Orientation="Horizontal">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSettingsDomainStrategy4Out}" />
|
Text="{x:Static resx:ResUI.TbSettingsDomainStrategy4Out}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbdomainStrategy4Out"
|
x:Name="cmbdomainStrategy4Out"
|
||||||
Width="150"
|
Width="150"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSettingsDomainDNSAddress}" />
|
Text="{x:Static resx:ResUI.TbSettingsDomainDNSAddress}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbdomainDNSAddress2"
|
x:Name="cmbdomainDNSAddress2"
|
||||||
Width="150"
|
Width="150"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
|
|
||||||
<Grid Classes="Margin8" ColumnDefinitions="*,10,*">
|
<Grid Margin="{StaticResource Margin4}" ColumnDefinitions="*,10,*">
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtnormalDNS2"
|
x:Name="txtnormalDNS2"
|
||||||
@@ -150,7 +151,8 @@
|
|||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
VerticalAlignment="Stretch"
|
VerticalAlignment="Stretch"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
Classes="TextArea Margin8"
|
Classes="TextArea"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
TextWrapping="Wrap"
|
TextWrapping="Wrap"
|
||||||
Watermark="HTTP/SOCKS" />
|
Watermark="HTTP/SOCKS" />
|
||||||
|
|
||||||
@@ -163,7 +165,8 @@
|
|||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
VerticalAlignment="Stretch"
|
VerticalAlignment="Stretch"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
Classes="TextArea Margin8"
|
Classes="TextArea"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
TextWrapping="Wrap"
|
TextWrapping="Wrap"
|
||||||
Watermark="{x:Static resx:ResUI.TbSettingsTunMode}" />
|
Watermark="{x:Static resx:ResUI.TbSettingsTunMode}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -171,4 +174,4 @@
|
|||||||
</TabItem>
|
</TabItem>
|
||||||
</TabControl>
|
</TabControl>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Window
|
<Window
|
||||||
x:Class="v2rayN.Desktop.Views.GlobalHotkeySettingWindow"
|
x:Class="v2rayN.Desktop.Views.GlobalHotkeySettingWindow"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -13,16 +13,16 @@
|
|||||||
ShowInTaskbar="False"
|
ShowInTaskbar="False"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Bottom"
|
DockPanel.Dock="Bottom"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnReset"
|
x:Name="btnReset"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Content="{x:Static resx:ResUI.TbReset}" />
|
Content="{x:Static resx:ResUI.TbReset}" />
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnSave"
|
x:Name="btnSave"
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<Button
|
<Button
|
||||||
x:Name="btnCancel"
|
x:Name="btnCancel"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Content="{x:Static resx:ResUI.TbCancel}"
|
Content="{x:Static resx:ResUI.TbCancel}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
IsCancel="True" />
|
IsCancel="True" />
|
||||||
@@ -49,14 +49,14 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbGlobalHotkeySetting}" />
|
Text="{x:Static resx:ResUI.TbGlobalHotkeySetting}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbDisplayGUI}" />
|
Text="{x:Static resx:ResUI.TbDisplayGUI}" />
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
@@ -64,70 +64,70 @@
|
|||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
IsReadOnly="True" />
|
IsReadOnly="True" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbClearSystemProxy}" />
|
Text="{x:Static resx:ResUI.TbClearSystemProxy}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtGlobalHotkey1"
|
x:Name="txtGlobalHotkey1"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
IsReadOnly="True" />
|
IsReadOnly="True" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbSetSystemProxy}" />
|
Text="{x:Static resx:ResUI.TbSetSystemProxy}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtGlobalHotkey2"
|
x:Name="txtGlobalHotkey2"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
IsReadOnly="True" />
|
IsReadOnly="True" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbNotChangeSystemProxy}" />
|
Text="{x:Static resx:ResUI.TbNotChangeSystemProxy}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtGlobalHotkey3"
|
x:Name="txtGlobalHotkey3"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
IsReadOnly="True" />
|
IsReadOnly="True" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbSystemProxyPac}" />
|
Text="{x:Static resx:ResUI.TbSystemProxyPac}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtGlobalHotkey4"
|
x:Name="txtGlobalHotkey4"
|
||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
IsReadOnly="True" />
|
IsReadOnly="True" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbGlobalHotkeySettingTip}" />
|
Text="{x:Static resx:ResUI.TbGlobalHotkeySettingTip}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
CloseOnClickAway="True"
|
CloseOnClickAway="True"
|
||||||
DisableOpeningAnimation="True">
|
DisableOpeningAnimation="True">
|
||||||
<DockPanel>
|
<DockPanel>
|
||||||
<DockPanel Classes="Margin8" DockPanel.Dock="Top">
|
<DockPanel Margin="{StaticResource Margin8}" DockPanel.Dock="Top">
|
||||||
<ContentControl x:Name="conTheme" DockPanel.Dock="Right" />
|
<ContentControl x:Name="conTheme" DockPanel.Dock="Right" />
|
||||||
<Menu Margin="0,1">
|
<Menu Margin="0,1">
|
||||||
<MenuItem Padding="8,0">
|
<MenuItem Padding="8,0">
|
||||||
|
|||||||
@@ -414,18 +414,17 @@ namespace v2rayN.Desktop.Views
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Utils.IsOSX() || _config.UiItem.Hide2TrayWhenClose)
|
if (Utils.IsLinux() && _config.UiItem.Hide2TrayWhenClose == false)
|
||||||
{
|
|
||||||
foreach (var ownedWindow in this.OwnedWindows)
|
|
||||||
{
|
|
||||||
ownedWindow.Close();
|
|
||||||
}
|
|
||||||
this.Hide();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
this.WindowState = WindowState.Minimized;
|
this.WindowState = WindowState.Minimized;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var ownedWindow in this.OwnedWindows)
|
||||||
|
{
|
||||||
|
ownedWindow.Close();
|
||||||
|
}
|
||||||
|
this.Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
_config.UiItem.ShowInTaskbar = bl;
|
_config.UiItem.ShowInTaskbar = bl;
|
||||||
|
|||||||
@@ -11,79 +11,69 @@
|
|||||||
<DockPanel Margin="2">
|
<DockPanel Margin="2">
|
||||||
<WrapPanel
|
<WrapPanel
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="cmbMsgFilter"
|
x:Name="cmbMsgFilter"
|
||||||
Width="200"
|
Width="200"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
VerticalContentAlignment="Center"
|
VerticalContentAlignment="Center"
|
||||||
Watermark="{x:Static resx:ResUI.MsgFilterTitle}" />
|
Watermark="{x:Static resx:ResUI.MsgFilterTitle}" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnCopy"
|
x:Name="btnCopy"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Classes="Success"
|
Classes="Success"
|
||||||
Click="menuMsgViewCopyAll_Click"
|
Click="menuMsgViewCopyAll_Click"
|
||||||
Theme="{DynamicResource BorderlessButton}"
|
Theme="{DynamicResource BorderlessButton}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuMsgViewCopyAll}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuMsgViewCopyAll}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_copy}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_copy}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnClear"
|
x:Name="btnClear"
|
||||||
Width="30"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Height="30"
|
|
||||||
Margin="8,0"
|
|
||||||
Classes="Success"
|
Classes="Success"
|
||||||
Click="menuMsgViewClear_Click"
|
Click="menuMsgViewClear_Click"
|
||||||
Theme="{DynamicResource BorderlessButton}"
|
Theme="{DynamicResource BorderlessButton}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuMsgViewClear}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuMsgViewClear}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_delete}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_delete}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
</Button>
|
</Button>
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{x:Static resx:ResUI.TbAutoRefresh}" />
|
Text="{x:Static resx:ResUI.TbAutoRefresh}" />
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togAutoRefresh"
|
x:Name="togAutoRefresh"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
IsChecked="True"
|
IsChecked="True"
|
||||||
Theme="{DynamicResource SimpleToggleSwitch}" />
|
Theme="{DynamicResource SimpleToggleSwitch}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{x:Static resx:ResUI.TbAutoScrollToEnd}" />
|
Text="{x:Static resx:ResUI.TbAutoScrollToEnd}" />
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togScrollToEnd"
|
x:Name="togScrollToEnd"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
IsChecked="True"
|
IsChecked="True"
|
||||||
Theme="{DynamicResource SimpleToggleSwitch}" />
|
Theme="{DynamicResource SimpleToggleSwitch}" />
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
<TextBox
|
<TextBox
|
||||||
Name="txtMsg"
|
Name="txtMsg"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
BorderThickness="0"
|
BorderThickness="0"
|
||||||
Classes="TextArea"
|
Classes="TextArea"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
TextAlignment="Left"
|
TextAlignment="Left"
|
||||||
VerticalAlignment="Stretch"
|
|
||||||
TextWrapping="Wrap">
|
TextWrapping="Wrap">
|
||||||
<TextBox.ContextMenu>
|
<TextBox.ContextMenu>
|
||||||
<ContextMenu>
|
<ContextMenu>
|
||||||
@@ -107,4 +97,4 @@
|
|||||||
</TextBox.ContextMenu>
|
</TextBox.ContextMenu>
|
||||||
</TextBox>
|
</TextBox>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -74,18 +74,11 @@ namespace v2rayN.Desktop.Views
|
|||||||
{
|
{
|
||||||
cmbSpeedTestTimeout.Items.Add(i * 5);
|
cmbSpeedTestTimeout.Items.Add(i * 5);
|
||||||
}
|
}
|
||||||
Global.SpeedTestUrls.ForEach(it =>
|
|
||||||
{
|
cmbSpeedTestUrl.ItemsSource = Global.SpeedTestUrls;
|
||||||
cmbSpeedTestUrl.Items.Add(it);
|
cmbSpeedPingTestUrl.ItemsSource = Global.SpeedPingTestUrls;
|
||||||
});
|
cmbSubConvertUrl.ItemsSource = Global.SubConvertUrls;
|
||||||
Global.SpeedPingTestUrls.ForEach(it =>
|
|
||||||
{
|
|
||||||
cmbSpeedPingTestUrl.Items.Add(it);
|
|
||||||
});
|
|
||||||
Global.SubConvertUrls.ForEach(it =>
|
|
||||||
{
|
|
||||||
cmbSubConvertUrl.Items.Add(it);
|
|
||||||
});
|
|
||||||
Global.GeoFilesSources.ForEach(it =>
|
Global.GeoFilesSources.ForEach(it =>
|
||||||
{
|
{
|
||||||
cmbGetFilesSourceUrl.Items.Add(it);
|
cmbGetFilesSourceUrl.Items.Add(it);
|
||||||
@@ -139,12 +132,12 @@ namespace v2rayN.Desktop.Views
|
|||||||
this.Bind(ViewModel, vm => vm.Hide2TrayWhenClose, v => v.togHide2TrayWhenClose.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.Hide2TrayWhenClose, v => v.togHide2TrayWhenClose.IsChecked).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.DoubleClick2Activate, v => v.togDoubleClick2Activate.IsChecked).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.DoubleClick2Activate, v => v.togDoubleClick2Activate.IsChecked).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.AutoUpdateInterval, v => v.txtautoUpdateInterval.Text).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.AutoUpdateInterval, v => v.txtautoUpdateInterval.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.CurrentFontFamily, v => v.cmbcurrentFontFamily.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.CurrentFontFamily, v => v.cmbcurrentFontFamily.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.SpeedTestTimeout, v => v.cmbSpeedTestTimeout.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.SpeedTestTimeout, v => v.cmbSpeedTestTimeout.SelectedValue).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.SpeedTestUrl, v => v.cmbSpeedTestUrl.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.SpeedTestUrl, v => v.cmbSpeedTestUrl.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.SpeedPingTestUrl, v => v.cmbSpeedPingTestUrl.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.SpeedPingTestUrl, v => v.cmbSpeedPingTestUrl.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.MixedConcurrencyCount, v => v.cmbMixedConcurrencyCount.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.MixedConcurrencyCount, v => v.cmbMixedConcurrencyCount.SelectedValue).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.SubConvertUrl, v => v.cmbSubConvertUrl.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.SubConvertUrl, v => v.cmbSubConvertUrl.Text).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.MainGirdOrientation, v => v.cmbMainGirdOrientation.SelectedIndex).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.MainGirdOrientation, v => v.cmbMainGirdOrientation.SelectedIndex).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.GeoFileSourceUrl, v => v.cmbGetFilesSourceUrl.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.GeoFileSourceUrl, v => v.cmbGetFilesSourceUrl.SelectedValue).DisposeWith(disposables);
|
||||||
this.Bind(ViewModel, vm => vm.SrsFileSourceUrl, v => v.cmbSrsFilesSourceUrl.SelectedValue).DisposeWith(disposables);
|
this.Bind(ViewModel, vm => vm.SrsFileSourceUrl, v => v.cmbSrsFilesSourceUrl.SelectedValue).DisposeWith(disposables);
|
||||||
@@ -174,12 +167,27 @@ namespace v2rayN.Desktop.Views
|
|||||||
if (Utils.IsWindows())
|
if (Utils.IsWindows())
|
||||||
{
|
{
|
||||||
txbSettingsExceptionTip2.IsVisible = false;
|
txbSettingsExceptionTip2.IsVisible = false;
|
||||||
|
|
||||||
|
txtLinuxSudoPassword.IsVisible = false;
|
||||||
|
labLinuxSudoPassword.IsVisible = false;
|
||||||
|
labLinuxSudoPasswordTip.IsVisible = false;
|
||||||
|
|
||||||
|
labHide2TrayWhenClose.IsVisible = false;
|
||||||
|
togHide2TrayWhenClose.IsVisible = false;
|
||||||
}
|
}
|
||||||
else
|
else if (Utils.IsLinux())
|
||||||
{
|
{
|
||||||
txbSettingsExceptionTip.IsVisible = false;
|
txbSettingsExceptionTip.IsVisible = false;
|
||||||
panSystemProxyAdvanced.IsVisible = false;
|
panSystemProxyAdvanced.IsVisible = false;
|
||||||
}
|
}
|
||||||
|
else if (Utils.IsOSX())
|
||||||
|
{
|
||||||
|
txbSettingsExceptionTip.IsVisible = false;
|
||||||
|
panSystemProxyAdvanced.IsVisible = false;
|
||||||
|
|
||||||
|
labHide2TrayWhenClose.IsVisible = false;
|
||||||
|
togHide2TrayWhenClose.IsVisible = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<bool> UpdateViewHandler(EViewAction action, object? obj)
|
private async Task<bool> UpdateViewHandler(EViewAction action, object? obj)
|
||||||
@@ -200,8 +208,9 @@ namespace v2rayN.Desktop.Views
|
|||||||
private async Task InitSettingFont()
|
private async Task InitSettingFont()
|
||||||
{
|
{
|
||||||
var lstFonts = await GetFonts();
|
var lstFonts = await GetFonts();
|
||||||
lstFonts.ForEach(it => { cmbcurrentFontFamily.Items.Add(it); });
|
|
||||||
cmbcurrentFontFamily.Items.Add(string.Empty);
|
lstFonts.Add(string.Empty);
|
||||||
|
cmbcurrentFontFamily.ItemsSource = lstFonts;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<List<string>> GetFonts()
|
private async Task<List<string>> GetFonts()
|
||||||
|
|||||||
@@ -19,65 +19,59 @@
|
|||||||
<WrapPanel Margin="2" DockPanel.Dock="Top">
|
<WrapPanel Margin="2" DockPanel.Dock="Top">
|
||||||
<ListBox
|
<ListBox
|
||||||
x:Name="lstGroup"
|
x:Name="lstGroup"
|
||||||
MaxHeight="200"
|
Margin="{StaticResource MarginLr4}"
|
||||||
DisplayMemberBinding="{Binding Remarks}"
|
DisplayMemberBinding="{Binding Remarks}"
|
||||||
ItemsSource="{Binding SubItems}"
|
ItemsSource="{Binding SubItems}"
|
||||||
Theme="{DynamicResource PureCardRadioGroupListBox}" />
|
Theme="{DynamicResource PureCardRadioGroupListBox}">
|
||||||
|
<ListBox.ItemsPanel>
|
||||||
|
<ItemsPanelTemplate>
|
||||||
|
<WrapPanel />
|
||||||
|
</ItemsPanelTemplate>
|
||||||
|
</ListBox.ItemsPanel>
|
||||||
|
</ListBox>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnEditSub"
|
x:Name="btnEditSub"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="4,0"
|
Margin="{StaticResource MarginLr4}"
|
||||||
Classes="Success"
|
Classes="Success"
|
||||||
Theme="{DynamicResource BorderlessButton}"
|
Theme="{DynamicResource BorderlessButton}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuSubEdit}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuSubEdit}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_edit}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="24"
|
|
||||||
Height="24"
|
|
||||||
Data="{StaticResource building_edit}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnAddSub"
|
x:Name="btnAddSub"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="4,0"
|
Margin="{StaticResource MarginLr4}"
|
||||||
Classes="Success"
|
Classes="Success"
|
||||||
Theme="{DynamicResource BorderlessButton}"
|
Theme="{DynamicResource BorderlessButton}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuSubAdd}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuSubAdd}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_add}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="24"
|
|
||||||
Height="24"
|
|
||||||
Data="{StaticResource building_add}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnAutofitColumnWidth"
|
x:Name="btnAutofitColumnWidth"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="4,0"
|
Margin="{StaticResource MarginLr4}"
|
||||||
Classes="Success"
|
Classes="Success"
|
||||||
Theme="{DynamicResource BorderlessButton}"
|
Theme="{DynamicResource BorderlessButton}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuProfileAutofitColumnWidth}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuProfileAutofitColumnWidth}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_fit}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="24"
|
|
||||||
Height="24"
|
|
||||||
Data="{StaticResource building_fit}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtServerFilter"
|
x:Name="txtServerFilter"
|
||||||
Width="200"
|
Width="200"
|
||||||
Margin="4,0"
|
Margin="{StaticResource MarginLr4}"
|
||||||
VerticalContentAlignment="Center"
|
VerticalContentAlignment="Center"
|
||||||
Watermark="{x:Static resx:ResUI.MsgServerTitle}" />
|
Watermark="{x:Static resx:ResUI.MsgServerTitle}" />
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
@@ -85,11 +79,13 @@
|
|||||||
x:Name="lstProfiles"
|
x:Name="lstProfiles"
|
||||||
AutoGenerateColumns="False"
|
AutoGenerateColumns="False"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
|
CanUserReorderColumns="True"
|
||||||
CanUserResizeColumns="True"
|
CanUserResizeColumns="True"
|
||||||
GridLinesVisibility="All"
|
GridLinesVisibility="All"
|
||||||
HeadersVisibility="All"
|
HeadersVisibility="All"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
ItemsSource="{Binding ProfileItems}">
|
ItemsSource="{Binding ProfileItems}"
|
||||||
|
ScrollViewer.AllowAutoHide="False">
|
||||||
<DataGrid.KeyBindings>
|
<DataGrid.KeyBindings>
|
||||||
<KeyBinding Command="{Binding Export2ShareUrlCmd}" Gesture="Ctrl+C" />
|
<KeyBinding Command="{Binding Export2ShareUrlCmd}" Gesture="Ctrl+C" />
|
||||||
<KeyBinding Command="{Binding SetDefaultServerCmd}" Gesture="Enter" />
|
<KeyBinding Command="{Binding SetDefaultServerCmd}" Gesture="Enter" />
|
||||||
@@ -161,9 +157,9 @@
|
|||||||
</DataGridTemplateColumn.Header>
|
</DataGridTemplateColumn.Header>
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<StackPanel Margin="8,0" Orientation="Horizontal">
|
<StackPanel Margin="{StaticResource MarginLr8}" Orientation="Horizontal">
|
||||||
<Label
|
<Label
|
||||||
Margin="0,0,8,0"
|
Margin="{StaticResource MarginLr4}"
|
||||||
Classes="Solid Red"
|
Classes="Solid Red"
|
||||||
Content="{x:Static resx:ResUI.TipActiveServer}"
|
Content="{x:Static resx:ResUI.TipActiveServer}"
|
||||||
IsVisible="{Binding IsActive}"
|
IsVisible="{Binding IsActive}"
|
||||||
@@ -209,7 +205,7 @@
|
|||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Foreground="{Binding Delay, Converter={StaticResource DelayColorConverter}}"
|
Foreground="{Binding Delay, Converter={StaticResource DelayColorConverter}}"
|
||||||
|
|||||||
@@ -372,9 +372,8 @@ namespace v2rayN.Desktop.Views
|
|||||||
private void StorageUI(string? n = null)
|
private void StorageUI(string? n = null)
|
||||||
{
|
{
|
||||||
List<ColumnItem> lvColumnItem = new();
|
List<ColumnItem> lvColumnItem = new();
|
||||||
for (int k = 0; k < lstProfiles.Columns.Count; k++)
|
foreach (var item2 in lstProfiles.Columns)
|
||||||
{
|
{
|
||||||
var item2 = lstProfiles.Columns[k];
|
|
||||||
if (item2.Tag == null)
|
if (item2.Tag == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<UserControl
|
<UserControl
|
||||||
x:Class="v2rayN.Desktop.Views.QrcodeView"
|
x:Class="v2rayN.Desktop.Views.QrcodeView"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
d:DesignHeight="480"
|
d:DesignHeight="480"
|
||||||
d:DesignWidth="400"
|
d:DesignWidth="400"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<Grid Margin="30" RowDefinitions="Auto,Auto">
|
<Grid Margin="32" RowDefinitions="Auto,Auto">
|
||||||
<Image
|
<Image
|
||||||
Name="imgQrcode"
|
Name="imgQrcode"
|
||||||
Width="300"
|
Width="300"
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
x:Name="txtContent"
|
x:Name="txtContent"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Width="300"
|
Width="300"
|
||||||
Margin="0,8"
|
Margin="{StaticResource MarginTb8}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
MaxLines="1" />
|
MaxLines="1" />
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Window
|
<Window
|
||||||
x:Class="v2rayN.Desktop.Views.RoutingRuleDetailsWindow"
|
x:Class="v2rayN.Desktop.Views.RoutingRuleDetailsWindow"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<DockPanel>
|
<DockPanel>
|
||||||
<Grid
|
<Grid
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
ColumnDefinitions="Auto,Auto,Auto"
|
ColumnDefinitions="Auto,Auto,Auto"
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto">
|
RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto">
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.LvRemarks}" />
|
Text="{x:Static resx:ResUI.LvRemarks}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtRemarks"
|
x:Name="txtRemarks"
|
||||||
@@ -31,39 +31,39 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togEnabled"
|
x:Name="togEnabled"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="outboundTag" />
|
Text="outboundTag" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbOutboundTag"
|
x:Name="cmbOutboundTag"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
MaxDropDownHeight="1000" />
|
MaxDropDownHeight="1000" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbRuleMatchingTips}" />
|
Text="{x:Static resx:ResUI.TbRuleMatchingTips}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="port" />
|
Text="port" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPort"
|
x:Name="txtPort"
|
||||||
@@ -71,12 +71,12 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8">
|
Margin="{StaticResource Margin4}">
|
||||||
<HyperlinkButton Classes="WithIcon" Click="linkRuleobjectDoc_Click">
|
<HyperlinkButton Classes="WithIcon" Click="linkRuleobjectDoc_Click">
|
||||||
<TextBlock Text="{x:Static resx:ResUI.TbRuleobjectDoc}" />
|
<TextBlock Text="{x:Static resx:ResUI.TbRuleobjectDoc}" />
|
||||||
</HyperlinkButton>
|
</HyperlinkButton>
|
||||||
@@ -86,14 +86,14 @@
|
|||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="protocol" />
|
Text="protocol" />
|
||||||
<ListBox
|
<ListBox
|
||||||
x:Name="clbProtocol"
|
x:Name="clbProtocol"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
SelectionMode="Multiple,Toggle"
|
SelectionMode="Multiple,Toggle"
|
||||||
Theme="{DynamicResource CardCheckGroupListBox}" />
|
Theme="{DynamicResource CardCheckGroupListBox}" />
|
||||||
|
|
||||||
@@ -101,20 +101,20 @@
|
|||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="inboundTag" />
|
Text="inboundTag" />
|
||||||
<ListBox
|
<ListBox
|
||||||
x:Name="clbInboundTag"
|
x:Name="clbInboundTag"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
SelectionMode="Multiple,Toggle"
|
SelectionMode="Multiple,Toggle"
|
||||||
Theme="{DynamicResource CardCheckGroupListBox}" />
|
Theme="{DynamicResource CardCheckGroupListBox}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbRoutingInboundTagTips}" />
|
Text="{x:Static resx:ResUI.TbRoutingInboundTagTips}" />
|
||||||
|
|
||||||
|
|
||||||
@@ -122,26 +122,26 @@
|
|||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="network" />
|
Text="network" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbNetwork"
|
x:Name="cmbNetwork"
|
||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
MaxDropDownHeight="1000" />
|
MaxDropDownHeight="1000" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbRoutingTips}" />
|
Text="{x:Static resx:ResUI.TbRoutingTips}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<StackPanel
|
<StackPanel
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Bottom"
|
DockPanel.Dock="Bottom"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
@@ -161,13 +161,13 @@
|
|||||||
<Button
|
<Button
|
||||||
x:Name="btnCancel"
|
x:Name="btnCancel"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Content="{x:Static resx:ResUI.TbCancel}"
|
Content="{x:Static resx:ResUI.TbCancel}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
IsCancel="True" />
|
IsCancel="True" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<Grid Classes="Margin8" ColumnDefinitions="1*,10,1*,10,1*">
|
<Grid Margin="{StaticResource Margin4}" ColumnDefinitions="1*,10,1*,10,1*">
|
||||||
<HeaderedContentControl
|
<HeaderedContentControl
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
BorderBrush="Gray"
|
BorderBrush="Gray"
|
||||||
@@ -208,4 +208,4 @@
|
|||||||
</HeaderedContentControl>
|
</HeaderedContentControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Window
|
<Window
|
||||||
x:Class="v2rayN.Desktop.Views.RoutingRuleSettingWindow"
|
x:Class="v2rayN.Desktop.Views.RoutingRuleSettingWindow"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<DockPanel>
|
<DockPanel>
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Menu>
|
<Menu>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<StackPanel
|
<StackPanel
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Bottom"
|
DockPanel.Dock="Bottom"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Button
|
<Button
|
||||||
@@ -40,14 +40,14 @@
|
|||||||
<Button
|
<Button
|
||||||
x:Name="btnCancel"
|
x:Name="btnCancel"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Content="{x:Static resx:ResUI.TbCancel}"
|
Content="{x:Static resx:ResUI.TbCancel}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
IsCancel="True" />
|
IsCancel="True" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<Grid
|
<Grid
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
ColumnDefinitions="Auto,Auto,Auto"
|
ColumnDefinitions="Auto,Auto,Auto"
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto">
|
RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto">
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.LvRemarks}" />
|
Text="{x:Static resx:ResUI.LvRemarks}" />
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
@@ -69,25 +69,25 @@
|
|||||||
Width="300"
|
Width="300"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.LvSort}" />
|
Text="{x:Static resx:ResUI.LvSort}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtSort"
|
x:Name="txtSort"
|
||||||
Width="100"
|
Width="100"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbdomainStrategy}" />
|
Text="{x:Static resx:ResUI.TbdomainStrategy}" />
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
@@ -96,22 +96,22 @@
|
|||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbdomainStrategy"
|
x:Name="cmbdomainStrategy"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.TbdomainStrategy4Singbox}" />
|
Text="{x:Static resx:ResUI.TbdomainStrategy4Singbox}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbdomainStrategy4Singbox"
|
x:Name="cmbdomainStrategy4Singbox"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8" />
|
Margin="{StaticResource Margin4}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.LvUrl}" />
|
Text="{x:Static resx:ResUI.LvUrl}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtUrl"
|
x:Name="txtUrl"
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
Width="600"
|
Width="600"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.LvCustomIcon}" />
|
Text="{x:Static resx:ResUI.LvCustomIcon}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtCustomIcon"
|
x:Name="txtCustomIcon"
|
||||||
@@ -137,13 +137,13 @@
|
|||||||
Width="600"
|
Width="600"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnBrowseCustomIcon"
|
x:Name="btnBrowseCustomIcon"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Content="{x:Static resx:ResUI.TbBrowse}" />
|
Content="{x:Static resx:ResUI.TbBrowse}" />
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8">
|
Margin="{StaticResource Margin4}">
|
||||||
<HyperlinkButton Classes="WithIcon" Click="linkCustomRulesetPath4Singbox">
|
<HyperlinkButton Classes="WithIcon" Click="linkCustomRulesetPath4Singbox">
|
||||||
<TextBlock Text="{x:Static resx:ResUI.LvCustomRulesetPath4Singbox}" />
|
<TextBlock Text="{x:Static resx:ResUI.LvCustomRulesetPath4Singbox}" />
|
||||||
</HyperlinkButton>
|
</HyperlinkButton>
|
||||||
@@ -163,13 +163,13 @@
|
|||||||
Width="600"
|
Width="600"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<Button
|
<Button
|
||||||
x:Name="btnBrowseCustomRulesetPath4Singbox"
|
x:Name="btnBrowseCustomRulesetPath4Singbox"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Content="{x:Static resx:ResUI.TbBrowse}" />
|
Content="{x:Static resx:ResUI.TbBrowse}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
@@ -242,4 +242,4 @@
|
|||||||
</TabItem>
|
</TabItem>
|
||||||
</TabControl>
|
</TabControl>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Window
|
<Window
|
||||||
x:Class="v2rayN.Desktop.Views.RoutingSettingWindow"
|
x:Class="v2rayN.Desktop.Views.RoutingSettingWindow"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<DockPanel>
|
<DockPanel>
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
Spacing="4">
|
Spacing="4">
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
<StackPanel
|
<StackPanel
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Bottom"
|
DockPanel.Dock="Bottom"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
<Button
|
<Button
|
||||||
x:Name="btnCancel"
|
x:Name="btnCancel"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Content="{x:Static resx:ResUI.TbCancel}"
|
Content="{x:Static resx:ResUI.TbCancel}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
IsCancel="True" />
|
IsCancel="True" />
|
||||||
@@ -123,4 +123,4 @@
|
|||||||
</TabControl>
|
</TabControl>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@@ -11,10 +11,10 @@
|
|||||||
x:DataType="vms:StatusBarViewModel"
|
x:DataType="vms:StatusBarViewModel"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<Grid>
|
<Grid>
|
||||||
<DockPanel Margin="4">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
DockPanel.Dock="Right">
|
DockPanel.Dock="Right">
|
||||||
<TextBlock x:Name="txtSpeedProxyDisplay" HorizontalAlignment="Right" />
|
<TextBlock x:Name="txtSpeedProxyDisplay" HorizontalAlignment="Right" />
|
||||||
<Border Margin="1" />
|
<Border Margin="1" />
|
||||||
@@ -22,8 +22,8 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
DockPanel.Dock="Left">
|
DockPanel.Dock="Left">
|
||||||
<TextBlock x:Name="txtInboundDisplay" />
|
<TextBlock x:Name="txtInboundDisplay" />
|
||||||
<Border Margin="1" />
|
<Border Margin="1" />
|
||||||
@@ -32,50 +32,51 @@
|
|||||||
|
|
||||||
<StackPanel
|
<StackPanel
|
||||||
x:Name="spEnableTun"
|
x:Name="spEnableTun"
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
DockPanel.Dock="Left"
|
DockPanel.Dock="Left"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
Text="{x:Static resx:ResUI.TbEnableTunAs}" />
|
Text="{x:Static resx:ResUI.TbEnableTunAs}" />
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togEnableTun"
|
x:Name="togEnableTun"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Theme="{DynamicResource SimpleToggleSwitch}" />
|
Theme="{DynamicResource SimpleToggleSwitch}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Margin="{StaticResource MarginLr8}"
|
||||||
DockPanel.Dock="Left"
|
DockPanel.Dock="Left"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbSystemProxy"
|
x:Name="cmbSystemProxy"
|
||||||
Width="160"
|
Width="160"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuSystemproxy}">
|
ToolTip.Tip="{x:Static resx:ResUI.menuSystemproxy}">
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyClear}" />
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyClear}" />
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxySet}" />
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxySet}" />
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyNothing}" />
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyNothing}" />
|
||||||
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyPac}" />
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
|
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbRoutings2"
|
x:Name="cmbRoutings2"
|
||||||
Width="160"
|
Width="160"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
DisplayMemberBinding="{Binding Remarks}"
|
DisplayMemberBinding="{Binding Remarks}"
|
||||||
ItemsSource="{Binding RoutingItems}"
|
ItemsSource="{Binding RoutingItems}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuRouting}" />
|
ToolTip.Tip="{x:Static resx:ResUI.menuRouting}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<StackPanel Margin="8,0" VerticalAlignment="Center">
|
<StackPanel VerticalAlignment="Center" Margin="{StaticResource MarginLr8}">
|
||||||
<TextBlock x:Name="txtRunningServerDisplay" />
|
<TextBlock x:Name="txtRunningServerDisplay" />
|
||||||
<Border Margin="1" />
|
<Border Margin="1" />
|
||||||
<TextBlock x:Name="txtRunningInfoDisplay" />
|
<TextBlock x:Name="txtRunningInfoDisplay" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -43,6 +43,11 @@ namespace v2rayN.Desktop.Views
|
|||||||
});
|
});
|
||||||
|
|
||||||
//spEnableTun.IsVisible = (Utils.IsWindows() || AppHandler.Instance.IsAdministrator);
|
//spEnableTun.IsVisible = (Utils.IsWindows() || AppHandler.Instance.IsAdministrator);
|
||||||
|
|
||||||
|
if (Utils.IsNonWindows() && cmbSystemProxy.Items.IsReadOnly == false)
|
||||||
|
{
|
||||||
|
cmbSystemProxy.Items.RemoveAt(cmbSystemProxy.Items.Count - 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<bool> UpdateViewHandler(EViewAction action, object? obj)
|
private async Task<bool> UpdateViewHandler(EViewAction action, object? obj)
|
||||||
|
|||||||
@@ -12,10 +12,10 @@
|
|||||||
ShowInTaskbar="False"
|
ShowInTaskbar="False"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
DockPanel.Dock="Bottom"
|
DockPanel.Dock="Bottom"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Button
|
<Button
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<Button
|
<Button
|
||||||
x:Name="btnCancel"
|
x:Name="btnCancel"
|
||||||
Width="100"
|
Width="100"
|
||||||
Margin="8,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Content="{x:Static resx:ResUI.TbCancel}"
|
Content="{x:Static resx:ResUI.TbCancel}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
IsCancel="True" />
|
IsCancel="True" />
|
||||||
@@ -39,66 +39,63 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
Text="{x:Static resx:ResUI.menuSubscription}" />
|
Text="{x:Static resx:ResUI.menuSubscription}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvRemarks}" />
|
Text="{x:Static resx:ResUI.LvRemarks}" />
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtRemarks"
|
x:Name="txtRemarks"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvUrl}" />
|
Text="{x:Static resx:ResUI.LvUrl}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtUrl"
|
x:Name="txtUrl"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
TextWrapping="Wrap"
|
TextWrapping="Wrap"
|
||||||
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
||||||
<Button
|
<Button
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="10,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Theme="{DynamicResource BorderlessButton}">
|
Theme="{DynamicResource BorderlessButton}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_more}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_more}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
<Button.Flyout>
|
<Button.Flyout>
|
||||||
<Flyout>
|
<Flyout>
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvMoreUrl}" />
|
Text="{x:Static resx:ResUI.LvMoreUrl}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtMoreUrl"
|
x:Name="txtMoreUrl"
|
||||||
Width="400"
|
Width="400"
|
||||||
MinHeight="100"
|
MinHeight="100"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="TextArea Margin8"
|
Classes="TextArea"
|
||||||
MinLines="4"
|
MinLines="4"
|
||||||
TextWrapping="Wrap"
|
TextWrapping="Wrap"
|
||||||
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
||||||
@@ -110,150 +107,148 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvEnabled}" />
|
Text="{x:Static resx:ResUI.LvEnabled}" />
|
||||||
|
|
||||||
<DockPanel
|
<DockPanel
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Classes="Margin8">
|
Margin="{StaticResource Margin4}">
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
x:Name="togEnable"
|
x:Name="togEnable"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
DockPanel.Dock="Left" />
|
DockPanel.Dock="Left" />
|
||||||
|
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtAutoUpdateInterval"
|
x:Name="txtAutoUpdateInterval"
|
||||||
Width="100"
|
Width="100"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
DockPanel.Dock="Right"
|
DockPanel.Dock="Right"
|
||||||
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvAutoUpdateInterval}" />
|
Text="{x:Static resx:ResUI.LvAutoUpdateInterval}" />
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvFilter}" />
|
Text="{x:Static resx:ResUI.LvFilter}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtFilter"
|
x:Name="txtFilter"
|
||||||
Grid.Row="5"
|
Grid.Row="5"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="6"
|
Grid.Row="6"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvConvertTarget}" />
|
Text="{x:Static resx:ResUI.LvConvertTarget}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbConvertTarget"
|
x:Name="cmbConvertTarget"
|
||||||
Grid.Row="6"
|
Grid.Row="6"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.LvConvertTargetTip}" />
|
ToolTip.Tip="{x:Static resx:ResUI.LvConvertTargetTip}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="7"
|
Grid.Row="7"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvUserAgent}" />
|
Text="{x:Static resx:ResUI.LvUserAgent}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtUserAgent"
|
x:Name="txtUserAgent"
|
||||||
Grid.Row="7"
|
Grid.Row="7"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
TextWrapping="Wrap"
|
TextWrapping="Wrap"
|
||||||
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
Watermark="{x:Static resx:ResUI.SubUrlTips}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="8"
|
Grid.Row="8"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvSort}" />
|
Text="{x:Static resx:ResUI.LvSort}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtSort"
|
x:Name="txtSort"
|
||||||
Grid.Row="8"
|
Grid.Row="8"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="100"
|
Width="100"
|
||||||
HorizontalAlignment="Left"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="9"
|
Grid.Row="9"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvPrevProfile}" />
|
Text="{x:Static resx:ResUI.LvPrevProfile}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPrevProfile"
|
x:Name="txtPrevProfile"
|
||||||
Grid.Row="9"
|
Grid.Row="9"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Watermark="{x:Static resx:ResUI.LvPrevProfileTip}" />
|
Watermark="{x:Static resx:ResUI.LvPrevProfileTip}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="10"
|
Grid.Row="10"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvNextProfile}" />
|
Text="{x:Static resx:ResUI.LvNextProfile}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtNextProfile"
|
x:Name="txtNextProfile"
|
||||||
Grid.Row="10"
|
Grid.Row="10"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Watermark="{x:Static resx:ResUI.LvPrevProfileTip}" />
|
Watermark="{x:Static resx:ResUI.LvPrevProfileTip}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="11"
|
Grid.Row="11"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Margin="4"
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbPreSocksPort4Sub}" />
|
Text="{x:Static resx:ResUI.TbPreSocksPort4Sub}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtPreSocksPort"
|
x:Name="txtPreSocksPort"
|
||||||
Grid.Row="11"
|
Grid.Row="11"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="200"
|
||||||
Margin="4"
|
Margin="{StaticResource Margin4}"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Classes="Margin8"
|
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.TipPreSocksPort}"
|
ToolTip.Tip="{x:Static resx:ResUI.TipPreSocksPort}"
|
||||||
Watermark="{x:Static resx:ResUI.TipPreSocksPort}" />
|
Watermark="{x:Static resx:ResUI.TipPreSocksPort}" />
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Row="12"
|
Grid.Row="12"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.LvMemo}" />
|
Text="{x:Static resx:ResUI.LvMemo}" />
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="txtMemo"
|
x:Name="txtMemo"
|
||||||
Grid.Row="12"
|
Grid.Row="12"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Window
|
<Window
|
||||||
x:Class="v2rayN.Desktop.Views.SubSettingWindow"
|
x:Class="v2rayN.Desktop.Views.SubSettingWindow"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -19,9 +19,9 @@
|
|||||||
CloseOnClickAway="True"
|
CloseOnClickAway="True"
|
||||||
DisableOpeningAnimation="True"
|
DisableOpeningAnimation="True"
|
||||||
Identifier="dialogHostSub">
|
Identifier="dialogHostSub">
|
||||||
<DockPanel Classes="Margin8">
|
<DockPanel Margin="{StaticResource Margin8}">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Classes="Margin8"
|
Margin="{StaticResource Margin4}"
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Menu>
|
<Menu>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<UserControl
|
<UserControl
|
||||||
x:Class="v2rayN.Desktop.Views.ThemeSettingView"
|
x:Class="v2rayN.Desktop.Views.ThemeSettingView"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
@@ -20,52 +20,48 @@
|
|||||||
</UserControl.Styles>
|
</UserControl.Styles>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
Width="30"
|
Width="{StaticResource IconButtonWidth}"
|
||||||
Height="30"
|
Height="{StaticResource IconButtonHeight}"
|
||||||
Margin="10,0"
|
Margin="{StaticResource MarginLr8}"
|
||||||
Theme="{DynamicResource BorderlessButton}">
|
Theme="{DynamicResource BorderlessButton}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<PathIcon
|
<PathIcon Data="{StaticResource building_more}" Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Data="{StaticResource building_more}"
|
|
||||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
|
||||||
</Button.Content>
|
</Button.Content>
|
||||||
<Button.Flyout>
|
<Button.Flyout>
|
||||||
<Flyout>
|
<Flyout>
|
||||||
<StackPanel Margin="0,12">
|
<StackPanel Margin="{StaticResource MarginTb8}">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSettingsTheme}" />
|
Text="{x:Static resx:ResUI.TbSettingsTheme}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbCurrentTheme"
|
x:Name="cmbCurrentTheme"
|
||||||
HorizontalAlignment="Center"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSettingsFontSize}" />
|
Text="{x:Static resx:ResUI.TbSettingsFontSize}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbCurrentFontSize"
|
x:Name="cmbCurrentFontSize"
|
||||||
HorizontalAlignment="Center"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
|
Margin="{StaticResource Margin4}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Classes="Margin8"
|
|
||||||
Text="{x:Static resx:ResUI.TbSettingsLanguage}" />
|
Text="{x:Static resx:ResUI.TbSettingsLanguage}" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
x:Name="cmbCurrentLanguage"
|
x:Name="cmbCurrentLanguage"
|
||||||
HorizontalAlignment="Center"
|
Margin="{StaticResource Margin4}"
|
||||||
Classes="Margin8" />
|
HorizontalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Flyout>
|
</Flyout>
|
||||||
</Button.Flyout>
|
</Button.Flyout>
|
||||||
</Button>
|
</Button>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -764,7 +764,7 @@
|
|||||||
x:Name="cmbcurrentFontFamily"
|
x:Name="cmbcurrentFontFamily"
|
||||||
Grid.Row="15"
|
Grid.Row="15"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="200"
|
Width="300"
|
||||||
Margin="{StaticResource Margin8}"
|
Margin="{StaticResource Margin8}"
|
||||||
MaxDropDownHeight="1000"
|
MaxDropDownHeight="1000"
|
||||||
Style="{StaticResource DefComboBox}" />
|
Style="{StaticResource DefComboBox}" />
|
||||||
@@ -867,7 +867,7 @@
|
|||||||
x:Name="cmbMainGirdOrientation"
|
x:Name="cmbMainGirdOrientation"
|
||||||
Grid.Row="21"
|
Grid.Row="21"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="300"
|
Width="200"
|
||||||
Margin="{StaticResource Margin8}"
|
Margin="{StaticResource Margin8}"
|
||||||
Style="{StaticResource DefComboBox}" />
|
Style="{StaticResource DefComboBox}" />
|
||||||
|
|
||||||
|
|||||||
@@ -353,9 +353,9 @@ namespace v2rayN.Views
|
|||||||
private void StorageUI(string? n = null)
|
private void StorageUI(string? n = null)
|
||||||
{
|
{
|
||||||
List<ColumnItem> lvColumnItem = new();
|
List<ColumnItem> lvColumnItem = new();
|
||||||
for (int k = 0; k < lstProfiles.Columns.Count; k++)
|
foreach (var t in lstProfiles.Columns)
|
||||||
{
|
{
|
||||||
var item2 = (MyDGTextColumn)lstProfiles.Columns[k];
|
var item2 = (MyDGTextColumn)t;
|
||||||
lvColumnItem.Add(new()
|
lvColumnItem.Add(new()
|
||||||
{
|
{
|
||||||
Name = item2.ExName,
|
Name = item2.ExName,
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ namespace v2rayN.Views
|
|||||||
this.OneWayBind(ViewModel, vm => vm.BlSystemProxyPac, v => v.menuSystemProxyPac2.Visibility, conversionHint: BooleanToVisibilityHint.UseHidden, vmToViewConverterOverride: new BooleanToVisibilityTypeConverter()).DisposeWith(disposables);
|
this.OneWayBind(ViewModel, vm => vm.BlSystemProxyPac, v => v.menuSystemProxyPac2.Visibility, conversionHint: BooleanToVisibilityHint.UseHidden, vmToViewConverterOverride: new BooleanToVisibilityTypeConverter()).DisposeWith(disposables);
|
||||||
this.BindCommand(ViewModel, vm => vm.SystemProxyClearCmd, v => v.menuSystemProxyClear).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.SystemProxyClearCmd, v => v.menuSystemProxyClear).DisposeWith(disposables);
|
||||||
this.BindCommand(ViewModel, vm => vm.SystemProxySetCmd, v => v.menuSystemProxySet).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.SystemProxySetCmd, v => v.menuSystemProxySet).DisposeWith(disposables);
|
||||||
this.BindCommand(ViewModel, vm => vm.SystemProxyPacCmd, v => v.menuSystemProxyPac).DisposeWith(disposables);
|
|
||||||
this.BindCommand(ViewModel, vm => vm.SystemProxyNothingCmd, v => v.menuSystemProxyNothing).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.SystemProxyNothingCmd, v => v.menuSystemProxyNothing).DisposeWith(disposables);
|
||||||
|
this.BindCommand(ViewModel, vm => vm.SystemProxyPacCmd, v => v.menuSystemProxyPac).DisposeWith(disposables);
|
||||||
|
|
||||||
//routings and servers
|
//routings and servers
|
||||||
this.OneWayBind(ViewModel, vm => vm.RoutingItems, v => v.cmbRoutings.ItemsSource).DisposeWith(disposables);
|
this.OneWayBind(ViewModel, vm => vm.RoutingItems, v => v.cmbRoutings.ItemsSource).DisposeWith(disposables);
|
||||||
|
|||||||
Reference in New Issue
Block a user