aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Dialogs/AddProjectView.xaml
blob: 3046857dbd66052cb7b58dc3c7a1caa698f7e7cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<UserControl x:Class="Tango.Scripting.IDE.Dialogs.AddProjectView"
              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:Tango.Scripting.IDE.Dialogs"
             mc:Ignorable="d" 
             xmlns:global="clr-namespace:Tango.Scripting.IDE"
             Width="800" Height="600"
             MinWidth="800" MinHeight="600"
             d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=local:NewProjectViewVM, IsDesignTimeCreatable=False}">
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Tango.Scripting.IDE;component/Themes/DarkThemesColors.xaml"/>
                <ResourceDictionary Source="/Tango.Scripting.IDE;component/Themes/Shared.xaml"/>
            </ResourceDictionary.MergedDictionaries>
            <Style TargetType="TextBlock">
                <Setter Property="Foreground" Value="{DynamicResource ControlTextBrush}" />
            </Style>
            <Style TargetType="TextBox">
                <Setter Property="Foreground" Value="{DynamicResource ControlTextBrush}" />
                <Setter Property="Background" Value="{DynamicResource ListBorder}" />
                <Setter  Property="BorderThickness" Value="1"/>
                <Setter  Property="BorderBrush" Value="{DynamicResource ListBorder}"/>
            </Style>

            <Style TargetType="Label">
                <Setter Property="Foreground" Value="{DynamicResource ControlTextBrush}" />
            </Style>
            <BooleanToVisibilityConverter x:Key="BoolToVis" />
        </ResourceDictionary>
    </UserControl.Resources>
    <Grid x:Name="Main_NewProject_grid" Background="{DynamicResource Window.Background}" >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="240"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="40"/>
        </Grid.RowDefinitions>
        <Border Background="{DynamicResource Background.Static}" BorderThickness="0" Grid.Column="0" Grid.Row="0" >
            <Border BorderThickness="0" Margin="5" Background="{DynamicResource Window.Background}">
                <ListView  x:Name="ProjectTypes" ItemsSource="{Binding ProjectTypes}" Background="Transparent" ScrollViewer.VerticalScrollBarVisibility="Auto" SelectedItem="{Binding SelectedProjectType,Mode=TwoWay}" BorderBrush="Transparent" IsSynchronizedWithCurrentItem="True">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Border Padding="2">
                                <WrapPanel>
                                    <Image Stretch="Fill" Height="30" Source="{Binding Path=SmallImage}"/>
                                    <TextBlock Text="{Binding Name}" Margin="20,5,0,0" Foreground="{DynamicResource ControlTextBrush}"/>
                                </WrapPanel>
                            </Border>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                    <ListView.Resources>
                        <Style TargetType="{x:Type ListViewItem}">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type ListViewItem}">
                                        <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1"  Background="{TemplateBinding Background}"  Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
                                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                                        </Border>
                                        <ControlTemplate.Triggers>
                                            <MultiTrigger>
                                                <MultiTrigger.Conditions>
                                                    <Condition Property="Selector.IsSelectionActive"  Value="False" />
                                                    <Condition Property="IsSelected"  Value="True" />
                                                </MultiTrigger.Conditions>
                                                <Setter Property="Background"  TargetName="Bd"  Value="{DynamicResource ControlBrushColorKey}" />
                                            </MultiTrigger>
                                            <MultiTrigger>
                                                <MultiTrigger.Conditions>
                                                    <Condition Property="Selector.IsSelectionActive"  Value="True" />
                                                    <Condition Property="IsSelected"  Value="True" />
                                                </MultiTrigger.Conditions>
                                                <Setter Property="Background"  TargetName="Bd"  Value="{DynamicResource ControlBrushColorKey}" />
                                            </MultiTrigger>
                                        </ControlTemplate.Triggers>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ListView.Resources>
                </ListView>
            </Border>
        </Border>
        <Grid x:Name="ProjectImage" Grid.Column="1" Grid.Row="0" Background="{DynamicResource Background.Static}">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" MinHeight="40"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <TextBlock Grid.Row="0" Text="{Binding SelectedDescription}" Margin="10" TextWrapping="Wrap"/>
            <Border Grid.Row="1" BorderThickness="0">
                <Border Width="126" Height="126" VerticalAlignment="Center" HorizontalAlignment="Center">
                    <Image  Stretch="Uniform" Source="{Binding Path=LargeImage}" 
                   VerticalAlignment="Center" 
                   HorizontalAlignment="Center" />
                </Border>
            </Border>
        </Grid>

        <Border Grid.Row="1" Grid.ColumnSpan="2" Margin="10" >
            <Grid x:Name="ProjectNameGrid" Grid.Row="1" Grid.ColumnSpan="2">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="110"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="240"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="24"/>
                    <RowDefinition Height="5"/>
                    <RowDefinition Height="24"/>
                    <RowDefinition Height="5"/>
                    <RowDefinition Height="24"/>
                </Grid.RowDefinitions>

                <TextBlock Grid.Column="0" Grid.Row="0">Name:</TextBlock>
                <TextBox Grid.Column="1" Grid.Row="0" VerticalAlignment="Center" Text="{Binding ProjectName}"/>

            </Grid>
        </Border>
        <Border Grid.Row="2" Grid.ColumnSpan="2">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" >
                <Button Style="{DynamicResource TangoButtonStyle}" IsDefault="True" Width="80" Height="24" Command="{Binding OKCommand}">OK</Button>
                <Button Margin="8,0,15,0" Style="{DynamicResource TangoButtonStyle}"  Width="80" Height="24" Command="{Binding CloseCommand}">Cancel</Button>
            </StackPanel>
        </Border>
    </Grid>
</UserControl>
> get { return _logsViewSource; } set { _logsViewSource = value; RaisePropertyChangedAuto(); } } public SelectedObjectCollection<LogCategory> SelectedLogCategories { get; set; } private String _filter; public String Filter { get { return _filter; } set { _filter = value; RaisePropertyChangedAuto(); if (RealTimePaused) { LogsViewSource.Refresh(); } } } private bool _displayDebug; /// <summary> /// Gets or sets a value indicating whether display debug logs. /// </summary> public bool DisplayDebug { get { return _displayDebug; } set { _displayDebug = value; RaisePropertyChangedAuto(); } } private LogItemBase _selectedLog; public LogItemBase SelectedLog { get { return _selectedLog; } set { _selectedLog = value; RaisePropertyChangedAuto(); OnSelectedLogChanged(); } } private ObservableCollection<DateTime> _dates; public ObservableCollection<DateTime> Dates { get { return _dates; } set { _dates = value; RaisePropertyChangedAuto(); } } private DateTime _selectedDate; public DateTime SelectedDate { get { return _selectedDate; } set { _selectedDate = value; RaisePropertyChangedAuto(); OnSelectedDateChanged(); } } private DateTime _minDate; public DateTime MinDate { get { return _minDate; } set { _minDate = value; RaisePropertyChangedAuto(); } } private DateTime _maxDate; public DateTime MaxDate { get { return _maxDate; } set { _maxDate = value; RaisePropertyChangedAuto(); } } private bool _isRealTime; public bool IsRealTime { get { return _isRealTime; } set { _isRealTime = value; RaisePropertyChangedAuto(); OnSelectedDateChanged(); } } private bool _realTimePaused; public bool RealTimePaused { get { return _realTimePaused; } set { _realTimePaused = value; RaisePropertyChangedAuto(); ApplyLogsFilter(); } } public RelayCommand NavigateToHomeCommand { get; set; } public RelayCommand ToggleRealTimePaused { get; set; } public RelayCommand ClearRealTimeLogsCommand { get; set; } public ApplicationLogsViewVM(LoggingNavigationManager navigation, INotificationProvider notification) { _notification = notification; NavigateToHomeCommand = new RelayCommand(() => navigation.NavigateTo(LoggingNavigationView.HomeView)); SelectedLogCategories = new SelectedObjectCollection<LogCategory>(new ObservableCollection<LogCategory>() { LogCategory.Info, LogCategory.Warning, LogCategory.Error, LogCategory.Critical, LogCategory.Debug, }, new ObservableCollection<LogCategory>() { LogCategory.Info, LogCategory.Warning, LogCategory.Error, LogCategory.Critical, LogCategory.Debug, }); SelectedLogCategories.SynchedSource.CollectionChanged += (_, __) => { ApplyLogsFilter(); }; _parser = new ApplicationLogFileParser(); _logFiles = _parser.GetLogFiles(); Dates = new ObservableCollection<DateTime>(_logFiles.Select(x => x.DateTime).OrderBy(x => x)); _realTimeLogs = new ControlledObservableCollection<LogItemBase>(); _pausedLogs = new List<LogItemBase>(); IsRealTime = true; RealTimePaused = true; SelectedDate = Dates.LastOrDefault(); if (Dates.Count > 0) { MinDate = Dates.Min(); MaxDate = Dates.Max(); } LogManager.NewLog += LogManager_NewLog; ToggleRealTimePaused = new RelayCommand(() => RealTimePaused = !RealTimePaused); ClearRealTimeLogsCommand = new RelayCommand(() => { _realTimeLogs.Clear(); }); _is_debug = LogManager.Categories.Contains(LogCategory.Debug); } private void ApplyLogsFilter() { if ((_realTimePaused && _isRealTime) || !_isRealTime) { LogsViewSource.Filter = (x) => { LogItemBase log = x as LogItemBase; return (SelectedLogCategories.SynchedSource.Contains(log.Category) && (String.IsNullOrWhiteSpace(Filter) || log.Message.ToLower().Contains(Filter.ToLower()))); }; } else { LogsViewSource.Filter = null; _realTimeLogs.InsertRange(0, _pausedLogs); _pausedLogs.Clear(); } } private void LogManager_NewLog(object sender, LogItemBase log) { if (log.Category == LogCategory.Debug && !DisplayDebug) return; if (!RealTimePaused) { InvokeUI(() => { _realTimeLogs.Insert(0, log); }); } else { _pausedLogs.Add(log); } } private async void OnSelectedDateChanged() { if (IsRealTime) { Logs = _realTimeLogs; } else { List<LogItemBase> logs = new List<LogItemBase>(); using (_notification.PushTaskItem("Loading application logs...")) { await Task.Factory.StartNew(() => { foreach (var logFile in _logFiles.Where(x => x.DateTime.Date == SelectedDate.Date)) { logs.AddRange(_parser.Parse(logFile)); } }); } Logs = new ControlledObservableCollection<LogItemBase>(logs); } LogsViewSource = CollectionViewSource.GetDefaultView(Logs); } private void OnSelectedLogChanged() { if (SelectedLog != null && !_dialog_shown) { _dialog_shown = true; _notification.ShowModalDialog<LogDetailsViewVM, ApplicationLogDetailsView>(new LogDetailsViewVM(SelectedLog), (x) => { }, () => { _dialog_shown = false; }); } } } }