aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Dialogs/NewProjectView.xaml
blob: 20a334f3b675d8fda28b94dcca1213d29f6dee62 (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
132
133
134
135
136
137
138
139
<UserControl x:Class="Tango.Scripting.IDE.Dialogs.NewProjectView"
             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"
             d:DesignHeight="450" d:DesignWidth="800" 
             Width="800" Height="600"
             >
    <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 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}"/>

                <TextBlock Grid.Column="0" Grid.Row="2" Text="Location"/>
                <Border Background="{DynamicResource ListBorder}" Grid.Column="1" Grid.Row="2" Margin="0,2,0,2" BorderBrush="{DynamicResource Button.Static.Border}" >
                    <ComboBox Style="{DynamicResource TangoComboboxStyle}"  VerticalAlignment="Stretch" SelectedItem="{Binding ProjectLocation}" ItemsSource="{Binding Locations}" HorizontalAlignment="Stretch"  BorderBrush="Transparent"/>
                </Border>
                <Button Style="{DynamicResource TangoButtonStyle}" Grid.Column="2" Grid.Row="2" Width="80" HorizontalAlignment="Left" Margin="20,0,0,0"  Content="Browse..." Command="{Binding BrowseFileCommand}"/>
                <TextBlock Grid.Column="0" Grid.Row="4"  Text="Solution name:"/>
                <TextBox Grid.Column="1" Grid.Row="4" VerticalAlignment="Center" Text="{Binding SolutionName}" />

            </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>
span class="w"> EventArgs e) { context.Deactivate(new SnippetEventArgs(DeactivateReason.Deleted)); } public void OnInsertionCompleted() { // anchors must be created in OnInsertionCompleted because they should move only // due to user insertions, not due to insertions of other snippet parts start = context.Document.CreateAnchor(startOffset); start.MovementType = AnchorMovementType.BeforeInsertion; end = context.Document.CreateAnchor(endOffset); end.MovementType = AnchorMovementType.AfterInsertion; start.Deleted += AnchorDeleted; end.Deleted += AnchorDeleted; // Be careful with references from the document to the editing/snippet layer - use weak events // to prevent memory leaks when the text area control gets dropped from the UI while the snippet is active. // The InsertionContext will keep us alive as long as the snippet is in interactive mode. TextDocumentWeakEventManager.TextChanged.AddListener(context.Document, this); background = new Renderer { Layer = KnownLayer.Background, element = this }; foreground = new Renderer { Layer = KnownLayer.Text, element = this }; context.TextArea.TextView.BackgroundRenderers.Add(background); context.TextArea.TextView.BackgroundRenderers.Add(foreground); context.TextArea.Caret.PositionChanged += Caret_PositionChanged; Caret_PositionChanged(null, null); this.Text = GetText(); } public void Deactivate(SnippetEventArgs e) { TextDocumentWeakEventManager.TextChanged.RemoveListener(context.Document, this); context.TextArea.TextView.BackgroundRenderers.Remove(background); context.TextArea.TextView.BackgroundRenderers.Remove(foreground); context.TextArea.Caret.PositionChanged -= Caret_PositionChanged; } bool isCaretInside; void Caret_PositionChanged(object sender, EventArgs e) { ISegment s = this.Segment; if (s != null) { bool newIsCaretInside = s.Contains(context.TextArea.Caret.Offset); if (newIsCaretInside != isCaretInside) { isCaretInside = newIsCaretInside; context.TextArea.TextView.InvalidateLayer(foreground.Layer); } } } Renderer background, foreground; public string Text { get; private set; } string GetText() { if (start.IsDeleted || end.IsDeleted) return string.Empty; else return context.Document.GetText(start.Offset, Math.Max(0, end.Offset - start.Offset)); } public event EventHandler TextChanged; bool IWeakEventListener.ReceiveWeakEvent(Type managerType, object sender, EventArgs e) { if (managerType == typeof(TextDocumentWeakEventManager.TextChanged)) { string newText = GetText(); if (this.Text != newText) { this.Text = newText; if (TextChanged != null) TextChanged(this, e); } return true; } return false; } public bool IsEditable { get { return true; } } public ISegment Segment { get { if (start.IsDeleted || end.IsDeleted) return null; else return new SimpleSegment(start.Offset, Math.Max(0, end.Offset - start.Offset)); } } sealed class Renderer : IBackgroundRenderer { static readonly Brush backgroundBrush = CreateBackgroundBrush(); static readonly Pen activeBorderPen = CreateBorderPen(); static Brush CreateBackgroundBrush() { SolidColorBrush b = new SolidColorBrush(Colors.LimeGreen); b.Opacity = 0.4; b.Freeze(); return b; } static Pen CreateBorderPen() { Pen p = new Pen(Brushes.Black, 1); p.DashStyle = DashStyles.Dot; p.Freeze(); return p; } internal ReplaceableActiveElement element; public KnownLayer Layer { get; set; } public void Draw(TextView textView, System.Windows.Media.DrawingContext drawingContext) { ISegment s = element.Segment; if (s != null) { BackgroundGeometryBuilder geoBuilder = new BackgroundGeometryBuilder(); geoBuilder.AlignToMiddleOfPixels = true; if (Layer == KnownLayer.Background) { geoBuilder.AddSegment(textView, s); drawingContext.DrawGeometry(backgroundBrush, null, geoBuilder.CreateGeometry()); } else { // draw foreground only if active if (element.isCaretInside) { geoBuilder.AddSegment(textView, s); foreach (BoundActiveElement boundElement in element.context.ActiveElements.OfType<BoundActiveElement>()) { if (boundElement.targetElement == element) { geoBuilder.AddSegment(textView, boundElement.Segment); geoBuilder.CloseFigure(); } } drawingContext.DrawGeometry(null, activeBorderPen, geoBuilder.CreateGeometry()); } } } } } } }