1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2024-11-24 14:16:08 +03:00

update ui

This commit is contained in:
autumn 2022-11-21 23:39:25 +08:00
parent db6a399ca9
commit 4c0d3a0cf4
10 changed files with 382 additions and 386 deletions

View File

@ -65,6 +65,7 @@
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath> <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Runtime" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath> <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference> </Reference>

View File

@ -11,322 +11,314 @@
<convert:VisibleConverter x:Key="VisibleConverter" /> <convert:VisibleConverter x:Key="VisibleConverter" />
</UserControl.Resources> </UserControl.Resources>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Vertical" Margin="10,0,20,20">
<StackPanel Width="220"> <!--节点类型-->
<!--TCP--> <GroupBox Padding="10" Header="{DynamicResource EditorProxyType}">
<CheckBox Margin="0,15,0,0" <StackPanel Orientation="Horizontal">
VerticalContentAlignment="Center" <WrapPanel Orientation="Vertical">
IsChecked="{Binding Path=Checked_VLESS_TCP}"> <!--TCP-->
<Label Content="{DynamicResource VlessTcpDesc}" FontSize="13" Foreground="LimeGreen" /> <CheckBox Width="150"
</CheckBox> VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_VLESS_TCP}">
<Label Content="{DynamicResource VlessTcpDesc}" FontSize="13" Foreground="LimeGreen" />
</CheckBox>
<!--WebSocket--> <!--WebSocket-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_VLESS_WS}"> IsChecked="{Binding Path=Checked_VLESS_WS}">
<Label Content="{DynamicResource VlessWsDesc}" FontSize="13" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessWsDesc}" FontSize="13" Foreground="LimeGreen" />
</CheckBox> </CheckBox>
<!--mKCP--> <!--mKCP-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
Foreground="LimeGreen" Foreground="LimeGreen"
IsChecked="{Binding Path=Checked_VLESS_KCP}"> IsChecked="{Binding Path=Checked_VLESS_KCP}">
<Label Content="{DynamicResource VlessKcpDesc}" FontSize="13" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessKcpDesc}" FontSize="13" Foreground="LimeGreen" />
</CheckBox> </CheckBox>
<!--gRPC--> <!--gRPC-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
Foreground="LimeGreen" Foreground="LimeGreen"
IsChecked="{Binding Path=Checked_VLESS_gRPC}"> IsChecked="{Binding Path=Checked_VLESS_gRPC}">
<Label Content="VLESS gRPC&#x0a;基于http2多路复用。" FontSize="13" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessRpcDesc}" FontSize="13" Foreground="LimeGreen" />
</CheckBox> </CheckBox>
</WrapPanel>
<!--TCP--> <WrapPanel Orientation="Vertical">
<!--<CheckBox Content="VMESS over TCP with TLS&#x0a;不推荐" <!--WebSocket-->
Margin="0,15,0,0" <CheckBox Width="150"
FontSize="13" VerticalContentAlignment="Center"
Style="{StaticResource MahApps.Styles.CheckBox}" IsChecked="{Binding Path=Checked_VMESS_WS}">
IsChecked="{Binding Path=Checked_VMESS_TCP}" />--> <Label Content="{DynamicResource VmessWsDesc}" FontSize="13" Foreground="Blue" />
</CheckBox>
<!--WebSocket--> <!--mKCP-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_VMESS_WS}"> IsChecked="{Binding Path=Checked_VMESS_KCP}">
<Label Content="{DynamicResource VmessWsDesc}" FontSize="13" Foreground="Blue" /> <Label Foreground="Blue" FontSize="13" Content="{DynamicResource VmessKcpDesc}" />
</CheckBox> </CheckBox>
</WrapPanel>
<!--mKCP--> <WrapPanel Orientation="Vertical">
<CheckBox Margin="0,15,0,0" <!--ss-->
VerticalContentAlignment="Center" <CheckBox Width="150"
IsChecked="{Binding Path=Checked_VMESS_KCP}"> VerticalContentAlignment="Center"
<Label Foreground="Blue" FontSize="13" Content="{DynamicResource VmessKcpDesc}" /> IsChecked="{Binding Path=CheckedShadowSocks}">
</CheckBox> <Label Content="{DynamicResource SSDesc}" FontSize="13" Foreground="Fuchsia" />
</CheckBox>
<!--ss--> <!--Trojan-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" Foreground="CadetBlue"
IsChecked="{Binding Path=CheckedShadowSocks}"> VerticalContentAlignment="Center"
<Label Content="{DynamicResource SSDesc}" FontSize="13" Foreground="Fuchsia" /> IsChecked="{Binding Path=Checked_Trojan_TCP}">
</CheckBox> <Label Content="{DynamicResource TrojanDesc}" FontSize="13" Foreground="CadetBlue" />
</CheckBox>
<!--Trojan--> </WrapPanel>
<CheckBox Margin="0,15,0,0" </StackPanel>
Foreground="CadetBlue" </GroupBox>
VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_Trojan_TCP}">
<Label Content="{DynamicResource TrojanDesc}" FontSize="13" Foreground="CadetBlue" />
</CheckBox>
</StackPanel>
<!--************************** 参数 **************************--> <!--************************** 参数 **************************-->
<StackPanel> <!--参数设置-->
<GroupBox Padding="10" Margin="0,10,0,0" Header="{DynamicResource EditorProxyParams}">
<!--Domain--> <StackPanel>
<StackPanel Margin="30,15,0,0" <!--Domain-->
Orientation="Horizontal">
<Label Content="{DynamicResource XrayDomain}" Width="120" />
<TextBox Text="{Binding Path=Domain}" Width="200" />
</StackPanel>
<!--Mask Domain-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal">
<Label Content="{DynamicResource XrayMarkDomain}" Width="120" />
<TextBox Text="{Binding Path=MaskDomain}" Width="200" />
</StackPanel>
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal">
<Label Content="{DynamicResource XrayWithTLS}" Width="120" />
<CheckBox IsChecked="{Binding Path=WithTLS}"
Content="{DynamicResource XrayWithTLSDesc}"
VerticalContentAlignment="Center"
VerticalAlignment="Center" />
</StackPanel>
<!--UUID-->
<StackPanel Margin="30,10,0,0"
Orientation="Horizontal">
<Label Content="{DynamicResource XrayUUID}" Width="120" />
<TextBox Text="{Binding Path=UUID}"
Width="200" />
<Button Margin="5,0,0,0"
Padding="12,3"
Command="{Binding Path=RandomUuid}"
Content="{DynamicResource Random}" />
</StackPanel>
<!--WebSocket Path-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VLESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VlessWsPath}" Foreground="LimeGreen" Width="120" />
<TextBox Text="{Binding Path=VLESS_WS_Path}"
Width="200" />
</StackPanel>
<!--seed-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VlessKcpSeed}" Foreground="LimeGreen" Width="120" />
<TextBox Text="{Binding Path=VLESS_KCP_Seed}" Width="200" />
</StackPanel>
<!--kcp type-->
<StackPanel Margin="30,15,0,0"
Visibility="{
Binding Path=Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter}
}" Orientation="Horizontal">
<Label Content="{DynamicResource VlessKcpType}" Foreground="LimeGreen" Width="120" />
<ComboBox Width="200"
ItemsSource="{Binding Path=KcpTypes}"
SelectedValue="{Binding VLESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<!--kcp port-->
<StackPanel Margin="30,15,0,0"
Visibility="{
Binding Path=Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter}
}"
Orientation="Horizontal">
<Label Content="{DynamicResource VlessKcpPort}" Width="120" Foreground="LimeGreen" />
<TextBox Text="{Binding Path=VLESS_KCP_Port}" Width="200" />
</StackPanel>
<!--gRPC Port-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VLESS_gRPC,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VlessRPCPort}" Width="120" Foreground="LimeGreen" />
<TextBox Text="{Binding Path=VLESS_gRPC_Port}" Width="200" />
</StackPanel>
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VLESS_gRPC,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VlessRPCName}" Width="120" Foreground="LimeGreen" />
<TextBox Text="{Binding Path=VLESS_gRPC_ServiceName}" Width="200" />
</StackPanel>
<!--Tcp Path
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VMESS_TCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="VMESS WS路径" Foreground="Blue" Width="120" />
<TextBox Text="{Binding Path=VMESS_TCP_Path}"
VerticalAlignment="Bottom"
Width="200" />
</StackPanel>-->
<!--WebSocket Path-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VMESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VmessWsPath}" Foreground="Blue" Width="120" />
<TextBox Text="{Binding Path=VMESS_WS_Path}"
VerticalAlignment="Bottom"
Width="200" />
</StackPanel>
<!--seed-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VmessKcpSeed}" Foreground="Blue" Width="120" />
<TextBox Text="{Binding Path=VMESS_KCP_Seed}" Width="200" />
</StackPanel>
<!--kcp type-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VmessKcpType}" Foreground="Blue" Width="120" VerticalAlignment="Bottom"/>
<ComboBox Width="200"
VerticalAlignment="Bottom"
ItemsSource="{Binding Path=KcpTypes}"
SelectedValue="{Binding VMESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<!--kcp port-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VmessKcpPort}" Foreground="Blue" Width="120" />
<TextBox Text="{Binding Path=VMESS_KCP_Port}" Width="200" />
</StackPanel>
<!--ss密码-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource SSPassword}" Foreground="Fuchsia" Width="120" />
<TextBox Text="{Binding Path=ShadowSocksPassword}"
Width="200"/>
</StackPanel>
<!--ss加密方式-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource SSMethods}" Foreground="Fuchsia" Width="120" />
<ComboBox Width="200"
ItemsSource="{Binding ShadowSocksMethods}"
SelectedValue="{Binding ShadowSocksMethod}">
</ComboBox>
</StackPanel>
<!--ss端口-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource SSPort}" Foreground="Fuchsia" Width="120" />
<TextBox Text="{Binding Path=ShadowSocksPort}" Width="200"/>
</StackPanel>
<!--Trojan密码-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_Trojan_TCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource TrojanPassword}" Foreground="CadetBlue" Width="120" />
<TextBox Text="{Binding Path=TrojanPassword}"
Width="200" />
</StackPanel>
<!--xray prot-->
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal">
<Label Content="{DynamicResource XrayPort}" Foreground="Gray" Width="120" />
<TextBox Text="{Binding Path=Port}" Width="120" />
<Label Content="{DynamicResource XrayPortDefault}" Foreground="Red" />
</StackPanel>
<!--多用户-->
<StackPanel Margin="30,10,0,0"
Orientation="Vertical">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Label Content="{DynamicResource MultiUser}" Width="120" /> <Label Content="{DynamicResource XrayDomain}" Width="120" />
<TextBox Text="{Binding Path=Domain}" Width="200" />
</StackPanel>
<TextBox Text="{Binding Path=MultiUUID}" <!--Mask Domain-->
Height="60" <StackPanel Margin="0,15,0,0" Orientation="Horizontal">
TextWrapping="Wrap" <Label Content="{DynamicResource XrayMarkDomain}" Width="120" />
Width="200" /> <TextBox Text="{Binding Path=MaskDomain}" Width="200" />
</StackPanel> </StackPanel>
<StackPanel>
<TextBlock Margin="120,3,0,0" Text="{DynamicResource MultiUserHelp}" /> <!--UUID-->
<StackPanel Margin="0,15,0,0" Orientation="Horizontal">
<Label Content="{DynamicResource XrayUUID}" Width="120" />
<TextBox Text="{Binding Path=UUID}" Width="200" />
<Button Margin="5,0,0,0"
Padding="12,3"
Command="{Binding Path=RandomUuid}"
Content="{DynamicResource Random}" />
</StackPanel> </StackPanel>
<!--more params-->
<Expander ExpandDirection="Down" Margin="0,10,0,0">
<Expander.Header>
<TextBlock Text="更多参数" FontWeight="Bold" />
</Expander.Header>
<Expander.Content>
<StackPanel>
<!--证书-->
<StackPanel Margin="0,15,0,0" Orientation="Horizontal">
<Label Content="{DynamicResource XrayWithTLS}" Width="120" />
<CheckBox IsChecked="{Binding Path=WithTLS}"
Content="{DynamicResource XrayWithTLSDesc}"
VerticalContentAlignment="Center"
VerticalAlignment="Center" />
</StackPanel>
<!--WebSocket Path-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VLESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VlessWsPath}" Foreground="LimeGreen" Width="120" />
<TextBox Text="{Binding Path=VLESS_WS_Path}" Width="200" />
</StackPanel>
<!--seed-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VlessKcpSeed}" Foreground="LimeGreen" Width="120" />
<TextBox Text="{Binding Path=VLESS_KCP_Seed}" Width="200" />
</StackPanel>
<!--kcp type-->
<StackPanel Margin="0,15,0,0"
Visibility="{
Binding Path=Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter}
}"
Orientation="Horizontal">
<Label Content="{DynamicResource VlessKcpType}" Foreground="LimeGreen" Width="120" />
<ComboBox Width="200"
ItemsSource="{Binding Path=KcpTypes}"
SelectedValue="{Binding VLESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<!--kcp port-->
<StackPanel Margin="0,15,0,0"
Visibility="{
Binding Path=Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter}
}"
Orientation="Horizontal">
<Label Content="{DynamicResource VlessKcpPort}" Width="120" Foreground="LimeGreen" />
<TextBox Text="{Binding Path=VLESS_KCP_Port}" Width="200" />
</StackPanel>
<!--gRPC Port-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VLESS_gRPC,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VlessRPCPort}" Width="120" Foreground="LimeGreen" />
<TextBox Text="{Binding Path=VLESS_gRPC_Port}" Width="200" />
</StackPanel>
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VLESS_gRPC,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VlessRPCName}" Width="120" Foreground="LimeGreen" />
<TextBox Text="{Binding Path=VLESS_gRPC_ServiceName}" Width="200" />
</StackPanel>
<!--WebSocket Path-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VMESS_WS,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VmessWsPath}" Foreground="Blue" Width="120" />
<TextBox Text="{Binding Path=VMESS_WS_Path}"
VerticalAlignment="Bottom"
Width="200" />
</StackPanel>
<!--seed-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VmessKcpSeed}" Foreground="Blue" Width="120" />
<TextBox Text="{Binding Path=VMESS_KCP_Seed}" Width="200" />
</StackPanel>
<!--kcp type-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VmessKcpType}" Foreground="Blue" Width="120" VerticalAlignment="Bottom"/>
<ComboBox Width="200"
VerticalAlignment="Bottom"
ItemsSource="{Binding Path=KcpTypes}"
SelectedValue="{Binding VMESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<!--kcp port-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource VmessKcpPort}" Foreground="Blue" Width="120" />
<TextBox Text="{Binding Path=VMESS_KCP_Port}" Width="200" />
</StackPanel>
<!--ss密码-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource SSPassword}" Foreground="Fuchsia" Width="120" />
<TextBox Text="{Binding Path=ShadowSocksPassword}" Width="200"/>
</StackPanel>
<!--ss加密方式-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource SSMethods}" Foreground="Fuchsia" Width="120" />
<ComboBox Width="200"
ItemsSource="{Binding ShadowSocksMethods}"
SelectedValue="{Binding ShadowSocksMethod}">
</ComboBox>
</StackPanel>
<!--ss端口-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource SSPort}" Foreground="Fuchsia" Width="120" />
<TextBox Text="{Binding Path=ShadowSocksPort}" Width="200"/>
</StackPanel>
<!--Trojan密码-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=Checked_Trojan_TCP,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource TrojanPassword}" Foreground="CadetBlue" Width="120" />
<TextBox Text="{Binding Path=TrojanPassword}" Width="200" />
</StackPanel>
<!--xray prot-->
<StackPanel Margin="0,15,0,0" Orientation="Horizontal">
<Label Content="{DynamicResource XrayPort}" Foreground="Gray" Width="120" />
<TextBox Text="{Binding Path=Port}" Width="120" />
<Label Content="{DynamicResource XrayPortDefault}" Foreground="Red" />
</StackPanel>
<!--多用户-->
<StackPanel Margin="0,15,0,0" Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Label Content="{DynamicResource MultiUser}" Width="120" />
<TextBox Text="{Binding Path=MultiUUID}"
Height="60"
TextWrapping="Wrap"
Width="200" />
</StackPanel>
<StackPanel>
<TextBlock Margin="120,3,0,0" Text="{DynamicResource MultiUserHelp}" />
</StackPanel>
</StackPanel>
</StackPanel>
</Expander.Content>
</Expander>
</StackPanel> </StackPanel>
</StackPanel> </GroupBox>
</StackPanel> </StackPanel>
</UserControl> </UserControl>

View File

@ -94,14 +94,13 @@
<GroupBox Padding="10" Margin="0,10,0,0" Header="{DynamicResource EditorProxyParams}"> <GroupBox Padding="10" Margin="0,10,0,0" Header="{DynamicResource EditorProxyParams}">
<StackPanel> <StackPanel>
<!--Domain--> <!--Domain-->
<StackPanel Margin="0,15,0,0" <StackPanel Orientation="Horizontal">
Orientation="Horizontal">
<Label Content="{DynamicResource XrayDomain}" Width="120" /> <Label Content="{DynamicResource XrayDomain}" Width="120" />
<TextBox Text="{Binding Path=Domain}" Width="260" /> <TextBox Text="{Binding Path=Domain}" Width="260" />
</StackPanel> </StackPanel>
<!--UUID--> <!--UUID-->
<StackPanel Margin="0,10,0,0" Orientation="Horizontal"> <StackPanel Margin="0,15,0,0" Orientation="Horizontal">
<Label Content="{DynamicResource XrayUUID}" Width="120" /> <Label Content="{DynamicResource XrayUUID}" Width="120" />
<TextBox Text="{Binding Path=UUID}" <TextBox Text="{Binding Path=UUID}"

View File

@ -23,54 +23,54 @@
<ctrl:HostControl /> <ctrl:HostControl />
</StackPanel> </StackPanel>
<StackPanel Grid.Column="1" Background="#EEE"></StackPanel> <StackPanel Grid.Column="1" Background="#EEE"></StackPanel>
<Grid Margin="10,10,0,0" Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="*" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120" />
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="2"> <Label Content="{DynamicResource TrojanGoDomain}" Grid.Row="0" Grid.Column="0" />
<Grid Margin="10"> <TextBox Text="{Binding Settings.Domain}" Grid.Row="0" Grid.Column="1" />
<Grid.RowDefinitions>
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="36" />
<RowDefinition Height="36" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Label Content="{DynamicResource TrojanGoDomain}" Grid.Row="0" Grid.Column="0" /> <Label Content="{DynamicResource TrojanGoPort}" Grid.Row="1" Grid.Column="0" />
<TextBox Text="{Binding Settings.Domain}" Grid.Row="0" Grid.Column="1" /> <TextBox Text="{Binding Settings.Port}" Grid.Row="1" Grid.Column="1" />
<Label Content="{DynamicResource TrojanGoPort}" Grid.Row="1" Grid.Column="0" /> <Label Content="{DynamicResource TrojanGoPassword}" Grid.Row="2" Grid.Column="0" />
<TextBox Text="{Binding Settings.Port}" Grid.Row="1" Grid.Column="1" /> <TextBox Text="{Binding Settings.Password}" Grid.Row="2" Grid.Column="1" />
<Label Content="{DynamicResource TrojanGoPassword}" Grid.Row="2" Grid.Column="0" /> <Label Content="{DynamicResource TrojanGoMaskDomain}" Grid.Row="3" Grid.Column="0" />
<TextBox Text="{Binding Settings.Password}" Grid.Row="2" Grid.Column="1" /> <TextBox Text="{Binding Settings.MaskDomain}" Grid.Row="3" Grid.Column="1" />
<Label Content="{DynamicResource TrojanGoMaskDomain}" Grid.Row="3" Grid.Column="0" /> <Label Content="{DynamicResource TrojanGoWebSocketPath}" Grid.Row="4" Grid.Column="0" />
<TextBox Text="{Binding Settings.MaskDomain}" Grid.Row="3" Grid.Column="1" /> <TextBox Text="{Binding Settings.WebSocketPath}" Grid.Row="4" Grid.Column="1" />
<Label Content="{DynamicResource TrojanGoWebSocketPath}" Grid.Row="4" Grid.Column="0" />
<TextBox Text="{Binding Settings.WebSocketPath}" Grid.Row="4" Grid.Column="1" />
<Label Content="{DynamicResource XrayWithTLS}" Width="120" Grid.Row="5" Grid.Column="0" /> <Label Content="{DynamicResource XrayWithTLS}" Width="120" Grid.Row="5" Grid.Column="0" />
<CheckBox IsChecked="{Binding Path=Settings.WithTLS}" <CheckBox IsChecked="{Binding Path=Settings.WithTLS}"
Grid.Row="5" Grid.Row="5"
Grid.Column="1" Grid.Column="1"
Content="{DynamicResource XrayWithTLSDesc}" Content="{DynamicResource XrayWithTLSDesc}"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
VerticalAlignment="Center" /> VerticalAlignment="Center" />
</Grid>
<Border Grid.Row="7"
<Border Grid.Row="1" Grid.ColumnSpan="3"
BorderBrush="#eee" BorderBrush="#eee"
BorderThickness="0,1,0,0"> BorderThickness="0,1,0,0">
<StackPanel Orientation="Horizontal" <StackPanel Orientation="Horizontal"
Margin="0,20,0,0" Height="50"
HorizontalAlignment="Right"> HorizontalAlignment="Right">
<Button Content="{DynamicResource Save}" <Button Content="{DynamicResource Save}"
Command="{Binding SaveCommand}" Command="{Binding SaveCommand}"
@ -86,6 +86,6 @@
Margin="20,0,40,0" /> Margin="20,0,40,0" />
</StackPanel> </StackPanel>
</Border> </Border>
</StackPanel> </Grid>
</Grid> </Grid>
</views:MvxWindow> </views:MvxWindow>

View File

@ -11,7 +11,7 @@
Icon="/Resources/ProxySU.ico" Icon="/Resources/ProxySU.ico"
BorderThickness="0,1,0,0" BorderThickness="0,1,0,0"
BorderBrush="#EEE" BorderBrush="#EEE"
Title="V2ray编辑配置" Height="610" Width="1015"> Title="V2ray编辑配置" Height="640" Width="1015">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="310" /> <ColumnDefinition Width="310" />
@ -25,41 +25,39 @@
<StackPanel Grid.Column="1" Background="#EEE"></StackPanel> <StackPanel Grid.Column="1" Background="#EEE"></StackPanel>
<StackPanel Grid.Column="2"> <Grid Grid.Column="2">
<Grid> <Grid.RowDefinitions>
<Grid.RowDefinitions> <RowDefinition Height="*" />
<RowDefinition Height="500" /> <RowDefinition Height="50" />
<RowDefinition Height="80" /> </Grid.RowDefinitions>
</Grid.RowDefinitions>
<ScrollViewer Name="scroll" <ScrollViewer Name="scroll"
Padding="10" Padding="10"
Height="500" Height="auto"
Grid.Row="0" Grid.Row="0"
HorizontalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto" > VerticalScrollBarVisibility="Auto" >
<ctrl:V2raySettingsControl /> <ctrl:V2raySettingsControl />
</ScrollViewer> </ScrollViewer>
<Border Grid.Row="1" <Border Grid.Row="1"
BorderBrush="#eee" BorderBrush="#eee"
BorderThickness="0,1,0,0"> BorderThickness="0,1,0,0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Height="50">
<Button Content="{DynamicResource Save}" <Button Content="{DynamicResource Save}"
Command="{Binding SaveCommand}" Command="{Binding SaveCommand}"
HorizontalAlignment="Right" HorizontalAlignment="Right"
VerticalAlignment="Center" VerticalAlignment="Center"
Padding="10,5" /> Padding="10,5" />
<Button Content="{DynamicResource SaveAndInstall}" <Button Content="{DynamicResource SaveAndInstall}"
Command="{Binding SaveAndInstallCommand}" Command="{Binding SaveAndInstallCommand}"
HorizontalAlignment="Right" HorizontalAlignment="Right"
VerticalAlignment="Center" VerticalAlignment="Center"
Padding="10,5" Padding="10,5"
Margin="20,0,40,0" /> Margin="20,0,40,0" />
</StackPanel> </StackPanel>
</Border> </Border>
</Grid> </Grid>
</StackPanel>
</Grid> </Grid>
</views:MvxWindow> </views:MvxWindow>

View File

@ -1,4 +1,5 @@
using MvvmCross.Platforms.Wpf.Views; using MvvmCross.Platforms.Wpf.Presenters.Attributes;
using MvvmCross.Platforms.Wpf.Views;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -18,6 +19,7 @@ namespace ProxySuper.WPF.Views.V2ray
/// <summary> /// <summary>
/// V2rayEditorView.xaml 的交互逻辑 /// V2rayEditorView.xaml 的交互逻辑
/// </summary> /// </summary>
[MvxWindowPresentation]
public partial class V2rayEditorView : MvxWindow public partial class V2rayEditorView : MvxWindow
{ {
public V2rayEditorView() public V2rayEditorView()

View File

@ -1,4 +1,5 @@
using Microsoft.Win32; using Microsoft.Win32;
using MvvmCross.Platforms.Wpf.Presenters.Attributes;
using MvvmCross.Platforms.Wpf.Views; using MvvmCross.Platforms.Wpf.Views;
using ProxySuper.Core.Models.Projects; using ProxySuper.Core.Models.Projects;
using ProxySuper.Core.ViewModels; using ProxySuper.Core.ViewModels;
@ -15,6 +16,7 @@ namespace ProxySuper.WPF.Views
/// <summary> /// <summary>
/// XrayInfoView.xaml 的交互逻辑 /// XrayInfoView.xaml 的交互逻辑
/// </summary> /// </summary>
[MvxWindowPresentation()]
public partial class XrayConfigView : MvxWindow public partial class XrayConfigView : MvxWindow
{ {
public XrayConfigView() public XrayConfigView()
@ -116,16 +118,16 @@ namespace ProxySuper.WPF.Views
} }
QRCodeGenerator qrGenerator = new QRCodeGenerator(); var qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(shareLink, QRCodeGenerator.ECCLevel.Q); var qrCodeData = qrGenerator.CreateQrCode(shareLink, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData); var qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20); var qrCodeImage = qrCode.GetGraphic(20);
MemoryStream ms = new MemoryStream(); var ms = new MemoryStream();
qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] bytes = ms.GetBuffer(); byte[] bytes = ms.GetBuffer();
ms.Close(); ms.Close();
BitmapImage image = new BitmapImage(); var image = new BitmapImage();
image.BeginInit(); image.BeginInit();
image.StreamSource = new MemoryStream(bytes); image.StreamSource = new MemoryStream(bytes);
image.EndInit(); image.EndInit();

View File

@ -34,8 +34,8 @@
<ScrollViewer Name="scroll" <ScrollViewer Name="scroll"
Padding="10" Padding="10"
Grid.Row="0"
Height="auto" Height="auto"
Grid.Row="0"
HorizontalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto" > VerticalScrollBarVisibility="Auto" >
<ctrl:XraySettingsControl /> <ctrl:XraySettingsControl />

View File

@ -7,7 +7,7 @@ namespace ProxySuper.WPF.Views
/// <summary> /// <summary>
/// XrayEditorView.xaml 的交互逻辑 /// XrayEditorView.xaml 的交互逻辑
/// </summary> /// </summary>
[MvxWindowPresentation(Identifier = nameof(XrayEditorView), Modal = false)] [MvxWindowPresentation()]
public partial class XrayEditorView : MvxWindow public partial class XrayEditorView : MvxWindow
{ {
public XrayEditorView() public XrayEditorView()

View File

@ -1,4 +1,5 @@
using MvvmCross.Platforms.Wpf.Views; using MvvmCross.Platforms.Wpf.Presenters.Attributes;
using MvvmCross.Platforms.Wpf.Views;
using MvvmCross.ViewModels; using MvvmCross.ViewModels;
using ProxySuper.Core.ViewModels; using ProxySuper.Core.ViewModels;
using System; using System;
@ -20,6 +21,7 @@ namespace ProxySuper.WPF.Views
/// <summary> /// <summary>
/// XrayInstallView.xaml 的交互逻辑 /// XrayInstallView.xaml 的交互逻辑
/// </summary> /// </summary>
[MvxWindowPresentation()]
public partial class XrayInstallView : MvxWindow public partial class XrayInstallView : MvxWindow
{ {
public XrayInstallView() public XrayInstallView()