Commit 1e176b05 authored by 潘栩锋's avatar 潘栩锋 :bicyclist:

unity 支持 blowingfix & airRing & weighter

<Page x:Class="FLY.FeedbackRenZiJia.UI.Client.PgMenu"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:misc="clr-namespace:Misc;assembly=MISC"
xmlns:local="clr-namespace:FLY.FeedbackRenZiJia.UI.Client"
mc:Ignorable="d"
d:DesignHeight="768" d:DesignWidth="1388"
Background="White"
Title="Page_Menu">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<misc:Ver x:Key="version" SrcType="{x:Type local:PgMenu}"/>
</ResourceDictionary>
</Page.Resources>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="540*" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button Style="{StaticResource ButtonStyle_back}" Command="BrowseBack"/>
</StackPanel>
<StackPanel Orientation="Horizontal" FlowDirection="RightToLeft">
<StackPanel Orientation="Vertical" DataContext="{StaticResource version}">
<Button Style="{StaticResource ButtonStyle_empty}" Background="{x:Null}" Click="button_version_Click" VerticalAlignment="Center">
<TextBlock Text="{Binding .}" FontSize="24" FontWeight="Bold" Margin="15" />
</Button>
</StackPanel>
</StackPanel>
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<WrapPanel Orientation="Vertical" Grid.Column="1">
<WrapPanel.Resources>
<Style TargetType="Button" BasedOn="{StaticResource ResourceKey=ButtonStyle_empty}">
<Setter Property="Background" Value="#FF0083D7"/>
<Setter Property="Width" Value="225"/>
<Setter Property="Height" Value="140"/>
<Setter Property="Margin" Value="5"/>
</Style>
</WrapPanel.Resources>
<Button Click="button_graphset_Click">
<Grid>
<TextBlock FontWeight="Bold" FontFamily="YouYuan" VerticalAlignment="Center" Foreground="White" FontSize="40" Text="界面配置" Background="#C00083D7" Padding="10"/>
</Grid>
</Button>
<Button Click="button_set_Click">
<Grid>
<TextBlock FontWeight="Bold" FontFamily="YouYuan" VerticalAlignment="Center" Foreground="White" FontSize="40" Text="参数" Background="#C00083D7" Padding="10"/>
</Grid>
</Button>
<Button Click="button_heatlist_Click" >
<TextBlock FontWeight="Bold" FontFamily="YouYuan" VerticalAlignment="Center">
<Run Foreground="White" FontSize="40" Text="记录"/>
</TextBlock>
</Button>
</WrapPanel>
</Grid>
</ScrollViewer>
</Grid>
</Page>
using FLY.FeedbackRenZiJia.UI.Client.UiModule;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Unity;
namespace FLY.FeedbackRenZiJia.UI.Client
{
/// <summary>
/// Page_Menu.xaml 的交互逻辑
/// </summary>
public partial class PgMenu : Page
{
IUnityContainer container;
public PgMenu()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(IUnityContainer container)
{
this.container = container;
}
private void button_set_Click(object sender, RoutedEventArgs e)
{
var p = container.Resolve<PgSetup>();
MultiLayout.FlyLayoutManager.NavigationService.Navigate(p);
}
private void button_heatlist_Click(object sender, RoutedEventArgs e)
{
var p = container.Resolve<PgHeatList>();
MultiLayout.FlyLayoutManager.NavigationService.Navigate(p);
}
private void button_version_Click(object sender, RoutedEventArgs e)
{
}
private void button_graphset_Click(object sender, RoutedEventArgs e)
{
var p = new WdGraphSet();
p.Init();
p.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
p.ShowDialog();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using FLY.FeedbackRenZiJia.Common;
using System.Net;
using FLY.Thick.Base.UI;
using FLY.FeedbackRenZiJia.IService;
using System.ComponentModel;
using Unity;
namespace FLY.FeedbackRenZiJia.UI.Client
{
/// <summary>
/// Page_Setup.xaml 的交互逻辑
/// </summary>
public partial class PgSetup : Page
{
IFeedbackHeatService mFeedback;
IHeatBufService mHeatBuf;
IHeatCellService mHeatCell;
public PgSetup()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
[Dependency("temp")]IFeedbackHeatService feedback,
[Dependency("temp")]IHeatBufService heatBuf,
[Dependency("temp")]IHeatCellService heatCell)
{
mFeedback = feedback;
mHeatBuf = heatBuf;
mHeatCell = heatCell;
//TODO
this.grid_feedback.DataContext = mFeedback;
this.grid_heatbuf.DataContext = mHeatBuf;
this.grid_heatcell.DataContext = mHeatCell;
}
private void button_back_Click(object sender, RoutedEventArgs e)
{
NavigationService.GoBack();
}
bool CheckValid_HeatEffectCurve()
{
List<int> list = mHeatBuf.HeatEffectCurve;
if ((list == null) || (list.Count() == 0))
{
FLY.ControlLibrary.Window_WarningTip.Show(
"参数异常", "加热效果为空", TimeSpan.FromSeconds(2));
return false;
}
int cnt = list.Count();
if ((int)(cnt / 2) * 2 == cnt)
{
FLY.ControlLibrary.Window_WarningTip.Show(
"参数异常", "加热效果格式出错,应该如2,5,8,5,2", TimeSpan.FromSeconds(2));
return false;
}
for (int i = 0; i < list.Count() / 2; i++)
{
int idx0 = i;
int idx_0 = list.Count() - 1 - idx0;
if (list[idx0] != list[idx_0])
{
FLY.ControlLibrary.Window_WarningTip.Show(
"参数异常", "加热效果格式出错,应该如2,5,8,5,2", TimeSpan.FromSeconds(2));
return false;
}
int idx1 = idx0 + 1;
if (list[idx0] > list[idx1])
{
FLY.ControlLibrary.Window_WarningTip.Show(
"参数异常", "加热效果格式出错,应该如2,5,8,5,2", TimeSpan.FromSeconds(2));
return false;
}
}
return true;
}
bool CheckValid()
{
if (CheckValid_HeatEffectCurve() == false)
return false;
return true;
}
private void button_apply_oNo_Click(object sender, RoutedEventArgs e)
{
if (!WdPassword.Authorize("AirRingSetup"))
return;
if (CheckValid())
{
mHeatBuf.Apply();
mHeatCell.Apply();
FLY.ControlLibrary.Window_Tip.Show("参数设置", "成功", TimeSpan.FromSeconds(2));
}
}
private void button_apply_Click(object sender, RoutedEventArgs e)
{
if (!WdPassword.Authorize("AirRingSetup"))
return;
if (CheckValid())
{
mHeatBuf.Apply();
mHeatCell.Apply();
mFeedback.Apply();
FLY.ControlLibrary.Window_Tip.Show("参数设置", "成功", TimeSpan.FromSeconds(2));
}
}
private void button_smooth_Click(object sender, RoutedEventArgs e)
{
mHeatCell.Smooth();
}
}
public class HeatEffectConverter : IValueConverter
{
#region IValueConverter 成员
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
List<int> list = value as List<int>;
if (list == null)
{
return null;
}
string str = "";
for (int i = 0; i < list.Count(); i++)
{
if (i == 0)
str += list[i].ToString();
else
str += "," + list[i].ToString();
}
return str;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string str = value as string;
if (string.IsNullOrEmpty(str))
{
//不合法
return null;
}
string[] ss = str.Split(',');
List<int> list = new List<int>();
for (int i = 0; i < ss.Length; i++)
{
int num;
if (int.TryParse(ss[i], out num))
{
list.Add(num);
}
}
return list;
}
#endregion
}
public class TimeSpan2SecondConverter : IValueConverter
{
#region IValueConverter 成员
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
TimeSpan ts = (TimeSpan)value;
return (int)(ts.TotalSeconds);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
#endregion
}
public class StableConverter : IValueConverter
{
#region IValueConverter 成员
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
STABILITY stable = (STABILITY)value;
switch (stable)
{
case STABILITY.IDLE:
return "等待";
case STABILITY.ERROR_NO_ARRIVE:
return "等待:加热点还没到达测厚仪";
case STABILITY.ERROR_POSITION_NOTSURE:
return "等待:位置不能确定";
case STABILITY.ERROR_SIGMA_OVERSIZE:
return "等待:2σ太大 ";
case STABILITY.ERROR_ROTATE_CHANGED:
return "等待:旋转速度波动大 ";
case STABILITY.ERROR_THICK_CHANGED:
return "等待:厚度均值波动大";
case STABILITY.ERROR_CORREL:
return "等待:相关性不够";
case STABILITY.OK_CORREL:
return "稳定:相关性高";
case STABILITY.OK_HEAT_AND_THICK_CORREL:
return "稳定:加热相关性高";
default:
return "???";
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
#endregion
}
public class AutoONoResultConverter : IValueConverter
{
#region IValueConverter 成员
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
EAutoONoResult stable = (EAutoONoResult)value;
switch (stable)
{
case EAutoONoResult.OK:
return "完成:对位成功";
case EAutoONoResult.Idle:
return "等待";
case EAutoONoResult.Err_Break:
return "完成:异常, 数据异常或打断";
case EAutoONoResult.Err_MaxMin:
return "完成:异常, 极差值不够大,可信度不够";
case EAutoONoResult.Err_MaxR:
return "完成:异常, 相关性不够大,可信度不够";
default:
return "???";
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
#endregion
}
public class Direction2VisableConverter : IValueConverter
{
#region IValueConverter 成员
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Misc.DIRECTION direction = (Misc.DIRECTION)value;
string str = (string)parameter;
str = str.ToUpper();
if ((str.CompareTo("FORW") == 0) && (direction == Misc.DIRECTION.FORWARD))
{
return System.Windows.Visibility.Visible;
}
else if ((str.CompareTo("BACKW") == 0) && (direction == Misc.DIRECTION.BACKWARD))
{
return System.Windows.Visibility.Visible;
}
else
return System.Windows.Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
}
<UserControl x:Class="FLY.FeedbackRenZiJia.UI.Client.UiModule.DynAreaAirRing"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FLY.FeedbackRenZiJia.UI.Client.UiModule"
xmlns:client="clr-namespace:FLY.FeedbackRenZiJia.UI.Client"
mc:Ignorable="d"
d:DesignWidth="292">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Converter/Dictionary_MyConv.xaml"/>
</ResourceDictionary.MergedDictionaries>
<client:StableConverter x:Key="stableconv"/>
<local:DynAreaViewModelParams x:Key="unitests_props" IsError="True" Error="报警MSG"/>
</ResourceDictionary>
</UserControl.Resources>
<Button Style="{StaticResource ButtonStyle_empty}" Background="Transparent" Click="Button_Click">
<Grid>
<Grid x:Name="grid_heatbuf"/>
<Grid x:Name="grid_feedback"/>
<Grid x:Name="grid_error" d:DataContext="{StaticResource unitests_props}"/>
<Border Style="{StaticResource BorderStyle_module}">
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical" Margin="2" DataContext="{Binding DataContext,ElementName=grid_heatbuf}">
<TextBlock Text="稳定性" FontSize="12" FontWeight="Bold" FontFamily="YouYuan" TextAlignment="Left" Foreground="#FF3B3B3B" />
<TextBlock FontWeight="Bold" FontFamily="Microsoft Sans Serif" Foreground="{StaticResource Color_theme_activity}" Text="{Binding CurrR, StringFormat={}{0:F1}}" FontSize="24" VerticalAlignment="Center" />
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2" DataContext="{Binding DataContext,ElementName=grid_heatbuf}">
<TextBlock Text="打散度" FontSize="12" FontWeight="Bold" FontFamily="YouYuan" TextAlignment="Left" Foreground="#FF3B3B3B" />
<StackPanel Orientation="Horizontal">
<TextBlock FontWeight="Bold" FontFamily="Microsoft Sans Serif" Foreground="{StaticResource Color_theme_activity}" Text="{Binding CurrBreakUp, StringFormat={}{0:F0}}" FontSize="24" VerticalAlignment="Center" />
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent_mm}" Text="%" FontSize="12"/>
</StackPanel>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2" DataContext="{Binding DataContext,ElementName=grid_feedback}">
<TextBlock Text="加热时间" FontSize="10" FontWeight="Bold" FontFamily="YouYuan" TextAlignment="Left" Foreground="#FF3B3B3B" />
<TextBlock Text="{Binding LastChangedTime,StringFormat={}{0:HH:mm:ss}}" FontSize="24" FontFamily="Microsoft Sans Serif" TextAlignment="Center" HorizontalAlignment="Center" Foreground="White" Background="Black" Margin="5,0"/>
</StackPanel>
</StackPanel>
<Viewbox Name="view_stability" Margin="2" Grid.Column="1" Visibility="{Binding IsHideStable, Converter={StaticResource ResourceKey=visbilityconv}, ConverterParameter=HiddenWhenTrue}">
<Grid DataContext="{Binding DataContext,ElementName=grid_heatbuf}">
<TextBlock Text="{Binding Stability, Converter={StaticResource ResourceKey=stableconv}}" FontSize="24" FontFamily="Microsoft Sans Serif" TextAlignment="Left" HorizontalAlignment="Left" Foreground="{StaticResource Color_theme_static}" VerticalAlignment="Bottom" MaxWidth="120" TextWrapping="Wrap" />
</Grid>
</Viewbox>
</Grid>
</Border>
<Border Style="{StaticResource BorderStyle_module}" Background="Red"
DataContext="{Binding DataContext,ElementName=grid_error}"
Visibility="{Binding IsError,Converter={StaticResource visbilityconv}}">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Path Margin="5" Fill="White" Stretch="Uniform" Width="60" Height="60" SnapsToDevicePixels="True" Data="{StaticResource Geometry_alert-circle-outline}" >
<Path.Style>
<Style TargetType="Path">
<Style.Triggers>
<DataTrigger Binding="{Binding IsError}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever" >
<DoubleAnimation BeginTime="0:0:0" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="00:00:01" />
<DoubleAnimation BeginTime="0:0:1" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="00:00:01" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
<TextBlock Grid.Column="1" Margin="5" VerticalAlignment="Center" TextWrapping="Wrap" FontSize="30" Foreground="White" Text="{Binding Error}"/>
</Grid>
</Border>
</Grid>
</Button>
</UserControl>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.ComponentModel;
using FLY.FeedbackRenZiJia.Client;
using FLY.OBJComponents.Client;
using FLY.OBJComponents.Common;
using System.Windows.Threading;
using MultiLayout.UiModule;
using Unity;
using FLY.Thick.Base.UI;
using FLY.FeedbackRenZiJia.IService;
using FObjBase;
using MultiLayout;
using FLY.OBJComponents.IService;
namespace FLY.FeedbackRenZiJia.UI.Client.UiModule
{
/// <summary>
/// Page_DynArea.xaml 的交互逻辑
/// </summary>
public partial class DynAreaAirRing : UserControl
{
#region 延时推送 MARKNO
const int MARKNO_UPDATEERROR = 1;
#endregion
IFeedbackHeatService mFeedback;
IHeatBufService mHeatBuf;
GraphAirRingParams graphAirRingParams;
IUnityContainer container;
WarningReasonWindow warningReasonWindow;
IWarningService warningService;
DispatcherTimer timer_error;
DynAreaViewModelParams props = new DynAreaViewModelParams();
public DynAreaAirRing()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IUnityContainer container,
[Dependency("airRingWarningReasonWindow")]WarningReasonWindow warningReasonWindow,
[Dependency("airRingWarningService")]IWarningService warningService,
IFeedbackHeatService feedbackHeatService,
IHeatBufService heatBufService
)
{
//获取设备
graphAirRingParams = GraphAirRingParams.Current;
this.container = container;
mFeedback = feedbackHeatService;
mHeatBuf = heatBufService;
this.warningReasonWindow = warningReasonWindow;
this.warningService = warningService;
view_stability.DataContext = graphAirRingParams;
grid_feedback.DataContext = mFeedback;
grid_heatbuf.DataContext = mHeatBuf;
//报警原因轮流显示
timer_error = new DispatcherTimer();
timer_error.Interval = TimeSpan.FromSeconds(3);
timer_error.Tick += (s, e) =>
{
reason_list_index--;
if (reason_list_index < 0)
reason_list_index = this.warningReasonWindow.Record.Count();
updateError();
};
this.warningReasonWindow.Record.CollectionChanged += Record_CollectionChanged;
grid_error.DataContext = props;
mFeedback.PropertyChanged += (s, e) =>
{
if (e.PropertyName == "IsConnected")
{
updateError();
}
};
updateError();
}
private void Record_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
FObjBase.PollModule.Current.Poll_JustOnce(
new FObjBase.PollModule.PollHandler(delegate ()
{
reason_list_index = warningReasonWindow.Record.Count() - 1;
updateError();
}), this, MARKNO_UPDATEERROR);
}
void updateError()
{
if (mFeedback is FObjServiceClient)
{
var objClient = (mFeedback as FObjServiceClient);
if (!objClient.IsConnected)
{
props.Error = "风环服务器连接断开";
props.IsError = true;
reason_list_index = -1;
timer_error.Stop();
return;
}
}
if (warningReasonWindow.Record.Count == 0)
{
props.IsError = false;
props.Error = "";
reason_list_index = -1;
timer_error.Stop();
return;
}
if (reason_list_index >= warningReasonWindow.Record.Count)
reason_list_index = warningReasonWindow.Record.Count - 1;
else if (reason_list_index < 0)
reason_list_index = 0;
props.Error = warningReasonWindow.Record[reason_list_index].Description;
props.IsError = true;
timer_error.Start();
}
private int reason_list_index = -1;
private void Button_Click(object sender, RoutedEventArgs e)
{
PgErrorTable2 p = new PgErrorTable2();
p.Init(container, warningService, warningReasonWindow);
FlyLayoutManager.NavigationService.Navigate(p);
}
}
public class DynAreaViewModelParams : INotifyPropertyChanged
{
/// <summary>
/// 有异常
/// </summary>
public bool IsError { get; set; }
/// <summary>
/// 异常消息
/// </summary>
public string Error { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
public class UiModule2_DynAreaAirRing : IUiModule2
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title => "自动风环状态";
public ComponentType Type => ComponentType.DynArea;
public bool IsUnique => true;
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id, IUnityContainer container)
{
return container.Resolve<DynAreaAirRing>();
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail()
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}
<UserControl x:Class="FLY.FeedbackRenZiJia.UI.Client.UiModule.MenuSetting"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FLY.FeedbackRenZiJia.UI.Client.UiModule"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
mc:Ignorable="d" >
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Themes/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<StackPanel>
<Button Style="{StaticResource ButtonStyle_icon}" Foreground="White"
Click="btnMenuClick">
<StackPanel >
<iconPacks:PackIconMaterial Kind="Target" />
<TextBlock Text="自动风环" Foreground="White"/>
</StackPanel>
</Button>
</StackPanel>
</UserControl>
using MultiLayout;
using MultiLayout.UiModule;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Unity;
namespace FLY.FeedbackRenZiJia.UI.Client.UiModule
{
/// <summary>
/// MenuSelect_Main.xaml 的交互逻辑
/// </summary>
public partial class MenuSetting : UserControl
{
IUnityContainer container;
public MenuSetting()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(IUnityContainer container)
{
this.container = container;
}
private void btnMenuClick(object sender, RoutedEventArgs e)
{
PgMenu p = new PgMenu();
container.BuildUp(p);
FlyLayoutManager.NavigationService.Navigate(p);
}
public void Init(int id)
{
}
}
public class UiModule2_MenuSetting : IUiModule2
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title => "自动风环菜单";
public ComponentType Type => ComponentType.Menu;
public bool IsUnique => true;
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id, IUnityContainer container)
{
MenuSetting menu = new MenuSetting();
container.BuildUp(menu);
return menu;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail()
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}
<flyctrllib:WindowBigClose x:Class="FLY.FeedbackRenZiJia.UI.Client.UiModule.WdGraphSet"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:local="clr-namespace:FLY.FeedbackRenZiJia.UI.Client.UiModule"
Loaded="Window_Loaded" Height="354" Width="438">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.FeedbackRenZiJia.UI.Client;component/Converter/Dictionary_MyConv.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Grid.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="20"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Height" Value="23"/>
</Style>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="15"/>
<Setter Property="FontWeight" Value="Normal"/>
<Setter Property="Height" Value="23"/>
</Style>
</Grid.Resources>
<GroupBox Header="Position" Height="100" HorizontalAlignment="Left" Margin="12,7,0,0" Name="groupBox1" VerticalAlignment="Top" Width="200" FontSize="20" FontWeight="Bold">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="6,6,0,0" Name="textBlock1" Text="X" VerticalAlignment="Top" />
<TextBox HorizontalAlignment="Left" Margin="82,6,0,0" VerticalAlignment="Top" Width="100" Text="{Binding PositionX}" />
<TextBlock HorizontalAlignment="Left" Margin="6,35,0,0" Name="textBlock2" Text="Width" VerticalAlignment="Top" />
<TextBox HorizontalAlignment="Left" Margin="82,35,0,0" VerticalAlignment="Top" Width="100" Text="{Binding PositionWidth}" />
</Grid>
</GroupBox>
<GroupBox FontSize="20" FontWeight="Bold" Header="InnerPlotPosition" Height="161" HorizontalAlignment="Left" Margin="12,110,0,0" Name="groupBox2" VerticalAlignment="Top" Width="200">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="6,6,0,0" Text="X" VerticalAlignment="Top" />
<TextBox HorizontalAlignment="Left" Margin="80,6,0,0" VerticalAlignment="Top" Width="102" Text="{Binding InnerPlotPositionX}"/>
<TextBlock HorizontalAlignment="Left" Margin="6,35,0,0" Text="Y" VerticalAlignment="Top" />
<TextBox HorizontalAlignment="Left" Margin="80,35,0,0" VerticalAlignment="Top" Width="102" Text="{Binding InnerPlotPositionY}"/>
<TextBlock HorizontalAlignment="Left" Margin="6,63,0,0" Text="Width" VerticalAlignment="Top" />
<TextBox HorizontalAlignment="Left" Margin="80,63,0,0" VerticalAlignment="Top" Width="102" Text="{Binding InnerPlotPositionWidth}" />
<TextBlock HorizontalAlignment="Left" Margin="6,92,0,0" Text="Height" VerticalAlignment="Top" />
<TextBox HorizontalAlignment="Left" Margin="80,92,0,0" Name="textBox4" VerticalAlignment="Top" Width="102" Text="{Binding InnerPlotPositionHeight}"/>
</Grid>
</GroupBox>
<Button Content="Apply" Height="36" HorizontalAlignment="Left" Margin="218,235,0,0" Name="button1" VerticalAlignment="Top" Width="200" FontSize="20" FontWeight="Bold" Click="button1_Click" />
<GroupBox FontSize="20" FontWeight="Bold" Header="界面" Height="71" HorizontalAlignment="Left" Margin="218,159,0,0" Name="groupBox5" VerticalAlignment="Top" Width="200">
<Grid>
<CheckBox Content="隐藏稳定性" IsChecked="{Binding IsHideStable}" HorizontalAlignment="Left" Margin="6,6,0,0" Name="checkBox1" VerticalAlignment="Top" HorizontalContentAlignment="Left" />
</Grid>
</GroupBox>
<Button Content="Cancel" FontSize="20" FontWeight="Bold" Height="36" HorizontalAlignment="Left" Margin="218,276,0,0" Name="button2" VerticalAlignment="Top" Width="200" Click="button2_Click" />
</Grid>
</flyctrllib:WindowBigClose>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Net;
namespace FLY.FeedbackRenZiJia.UI.Client.UiModule
{
/// <summary>
/// Window_GraphSet.xaml 的交互逻辑
/// </summary>
public partial class WdGraphSet : FLY.ControlLibrary.WindowBigClose
{
GraphAirRingParams graphAirRingParams;
public WdGraphSet()
{
InitializeComponent();
}
public void Init() {
graphAirRingParams = GraphAirRingParams.Current;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
graphAirRingParams.Save();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = graphAirRingParams;
}
private void button2_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
public class IPEPConverter : IValueConverter
{
#region IValueConverter 成员
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
IPEndPoint ep = (IPEndPoint)value;
return ep.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string s = (string)value;
return Misc.StringConverter.ToIPEndPoint(s);
}
#endregion
}
}
<flyctrllib:WindowBigClose x:Class="FLY.FeedbackRenZiJia.UI.Client.WdLoadHeatsFile"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
Title="Window_FixSave" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" WindowStartupLocation="CenterScreen" SizeToContent="WidthAndHeight">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid TextBlock.FontSize="24" TextBlock.FontStyle="Normal" Margin="5,20">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<ListBox Name="listview_profile" Margin="5" MinWidth="400" Height="400" Grid.Row="1" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding .}" FontWeight="Bold" FontSize="26" FontFamily="Microsoft Sans Serif" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeader}" Text="加热策略列表" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="44" />
</StackPanel>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Style="{StaticResource ButtonStyle2}" Content="读取" Width="200" Margin="5" Click="button_read_Click" Background="#FF127300" />
<Button Grid.Column="1" Style="{StaticResource ButtonStyle2}" Content="删除" Width="200" Margin="5" Click="button_del_Click" Background="#FFEC0000" />
</Grid>
</Grid>
</flyctrllib:WindowBigClose >
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using FObjBase;
using FLY.FeedbackRenZiJia.IService;
namespace FLY.FeedbackRenZiJia.UI.Client
{
/// <summary>
/// Window_Load.xaml 的交互逻辑
/// </summary>
public partial class WdLoadHeatsFile : FLY.ControlLibrary.WindowBigClose
{
IFeedbackHeatService mFeedbackHeatService;
public ObservableCollection<string> mList = new ObservableCollection<string>();
public WdLoadHeatsFile()
{
InitializeComponent();
}
public void Init(IFeedbackHeatService feedbackHeatService)
{
this.listview_profile.ItemsSource = mList;
mFeedbackHeatService = feedbackHeatService;
feedbackHeatService.GetHeatsFileList(
new AsyncCBHandler(
delegate(object AsyncState, object retData)
{
List<string> list = (List<string>)retData;
mList.Clear();
for (int i = 0; i < list.Count(); i++)
mList.Add(list[i]);
if (mList.Contains(feedbackHeatService.HeatsProductName))
{
listview_profile.SelectedItem = mList.First(s => s == feedbackHeatService.HeatsProductName);
}
}), null);
}
private void button_read_Click(object sender, RoutedEventArgs e)
{
if (listview_profile.SelectedItem != null)
{
string productname = listview_profile.SelectedItem as string;
mFeedbackHeatService.LoadHeatsFile(
productname);
FLY.ControlLibrary.Window_Tip.Show("加载成功",
productname,
TimeSpan.FromSeconds(2));
}
}
private void button_del_Click(object sender, RoutedEventArgs e)
{
if (listview_profile.SelectedItem != null)
{
string productname = listview_profile.SelectedItem as string;
mFeedbackHeatService.DelHeatsFile(productname);
mList.Remove(productname);
FLY.ControlLibrary.Window_Tip.Show("删除成功",
productname,
TimeSpan.FromSeconds(2));
}
}
}
}
<flyctrllib:WindowBigClose x:Class="FLY.FeedbackRenZiJia.UI.Client.WdSaveHeatsFile"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
Title="Window_FixSave" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Loaded="WindowBigClose_Loaded" SizeToContent="WidthAndHeight">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid TextBlock.FontSize="24" TextBlock.FontStyle="Normal" Width="400">
<StackPanel Orientation="Vertical" Margin="5,20">
<StackPanel Grid.Column="1" Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="请输入产品名称:" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Name="textbox_productname" Tag="Full" MinWidth="300"/>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal"></StackPanel>
<Button Content="保存" Style="{StaticResource ButtonStyle2}" Margin="5" Width="auto" Click="button_save_Click" />
</StackPanel>
</Grid>
</flyctrllib:WindowBigClose >
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace FLY.FeedbackRenZiJia.UI.Client
{
/// <summary>
/// Window_Save.xaml 的交互逻辑
/// </summary>
public partial class WdSaveHeatsFile : FLY.ControlLibrary.WindowBigClose
{
public WdSaveHeatsFile()
{
InitializeComponent();
}
public string FileName;
private void button_save_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
FileName = this.textbox_productname.Text;
}
private void WindowBigClose_Loaded(object sender, RoutedEventArgs e)
{
this.textbox_productname.Text = FileName;
}
}
}

<flyctrllib:WindowBigClose x:Class="FLY.FeedbackRenZiJia.UI.Client.WdSaveMessage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
Title="Window_graphfix" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" WindowStartupLocation="CenterScreen">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid TextBlock.FontSize="24" TextBlock.FontStyle="Normal" >
<StackPanel Orientation="Vertical" Margin="5,20">
<StackPanel >
<TextBlock Text="警告" FontWeight="Bold" FontSize="72" FontFamily="YouYuan" Margin="40,20" Foreground="Red" />
<TextBlock Text="是否覆盖之前的记录?" FontWeight="Bold" FontSize="36" FontFamily="YouYuan" Margin="40,20" TextWrapping="Wrap" />
</StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Style="{StaticResource ButtonStyle2}" Content="是" Width="Auto" Margin="5" Click="button_ok_Click" Background="#FF127300" />
<Button Grid.Column="1" Style="{StaticResource ButtonStyle2}" Content="否" Width="Auto" Margin="5" Click="button_cancel_Click" Background="#FFEC0000" />
</Grid>
</StackPanel>
</Grid>
</flyctrllib:WindowBigClose>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace FLY.FeedbackRenZiJia.UI.Client
{
/// <summary>
/// Window_SaveMessage.xaml 的交互逻辑
/// </summary>
public partial class WdSaveMessage : FLY.ControlLibrary.WindowBigClose
{
public WdSaveMessage()
{
InitializeComponent();
}
private void button_ok_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
this.Close();
}
private void button_cancel_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
this.Close();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Collections.ObjectModel;
using FLY.FeedbackRenZiJia.Common;
using FObjBase;
using System.Text.RegularExpressions;
using System.Net;
namespace FLY.FeedbackRenZiJia.IService
{
public interface IFeedbackHeatService : INotifyPropertyChanged
{
#region 参数
/// <summary>
/// 自控使能, 不保存!!!
/// </summary>
bool IsAuto { get; set; }
/// <summary>
/// 加热后起效延时,单位s;
/// 从加热,到起效,再到被测量时间=Delay+mRenZiJiaService.FilmLength/mRenZiJiaService.Velocity
/// </summary>
int Delay { get; set; }
/// <summary>
/// 有检测功能
/// </summary>
bool HasCheck { get; set; }
/// <summary>
/// 检测线速度 使能
/// </summary>
bool HasCheckFilmVelocity { get; set; }
/// <summary>
/// 手动加热步进
/// </summary>
int Step { get; set; }
#endregion
#region 动态数据
/// <summary>
/// 通道数, 从测厚仪获取的!!!!
/// </summary>
int ChannelCnt { get; }
/// <summary>
/// 测厚仪分区数, 从测厚仪获取的!!!!
/// </summary>
int NBolts { get; }
/// <summary>
/// 保存的加热策略名称
/// </summary>
string HeatsProductName { get; }
/// <summary>
/// 连接到PLC?
/// </summary>
bool IsConnectedWithPLC { get; }
/// <summary>
/// 上一次加热修改时间
/// </summary>
DateTime LastChangedTime { get; }
#endregion
#region 异常检测
/// <summary>
/// 当前风机启动中
/// </summary>
bool HasFan { get; }
/// <summary>
/// 加热棒有电流
/// </summary>
bool HasElectricity { get; }
/// <summary>
/// 检测动作 使能
/// </summary>
bool CheckEnable { set; get; }
/// <summary>
/// 当前正在检测的加热通道
/// </summary>
int CheckNo { get; }
/// <summary>
/// 烧了的加热棒
/// </summary>
bool[] Bads { get; }
#endregion
/// <summary>
/// 参数应用
/// </summary>
void Apply();
/// <summary>
/// 保存当前加热量
/// </summary>
void SaveHeats(string productname);
/// <summary>
/// 获取保存的加热量文件列表 返回类型为 List&lt;string&gt;
/// </summary>
/// <param name="AsyncDelegate"></param>
/// <param name="AsyncState"></param>
void GetHeatsFileList(AsyncCBHandler AsyncDelegate, object AsyncState);
/// <summary>
/// 删除 加热量文件
/// </summary>
/// <param name="productname"></param>
void DelHeatsFile(string productname);
/// <summary>
/// 加载 加热量文件
/// </summary>
/// <param name="filename"></param>
void LoadHeatsFile(string productname);
#region 撤销
/// <summary>
/// 撤销的序号
/// </summary>
int UndoIdx { get; }
/// <summary>
/// 撤销中
/// </summary>
bool IsInUndo { get; }
/// <summary>
/// 这次撤销动作的时间
/// </summary>
DateTime UndoTime { get; }
//UndoIdx--
void Undo();
/// <summary>
/// UndoIdx++
/// </summary>
void Redo();
#endregion
void SetEnable(bool enable);
void SetCheckEnable(bool enable);
}
}
Project.FLY.Thick.Blowing/FLY.Thick.Blowing.UI/123.ico

21.9 KB

<Application x:Class="FLY.Thick.Blowing.UI.Fix.Client.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Themes/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="GroupBox" />
</ResourceDictionary>
</Application.Resources>
</Application>
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<PropertyChanged />
</Weavers>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Project.FLY.Thick.Blowing/FLY.Thick.Blowing.UI/image/bag.jpg

37.1 KB

Project.FLY.Thick.Blowing/FLY.Thick.Blowing.UI/image/normal.jpg

31 KB

This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment