Exemplo n.º 1
0
 def initialize(self):
     self._can_update = False
     
     p = self.popup = wpf.Popup()
     if sys.platform == 'cli':
         p.PlacementTarget = wpf.get_root_visual()
         p.Placement = wpf.PlacementMode.Relative
         
     self.cursor = wpf.Rectangle()
     sz = wpf.measure_string('|', Preferences.FontFamily, Preferences.FontSize)
     self.cursor.Width = 2
     self.cursor.Height = sz.Height
     self.cursor.Fill = wpf.brush('#ffffff')
     
     p.Child = self.cursor
     
     self.sb = wpf.Storyboard()
             
     self.sb.AutoReverse = True
     self.sb.RepeatBehavior = wpf.RepeatBehavior.Forever
     
     anim = Preferences.CursorAnimation
     
     if sys.platform == 'silverlight':
         wpf.Storyboard.SetTarget(anim, self.cursor)
     
     self.sb.Children.Add(anim)
     
     self.popup.Opened += self.OnPopupOpened
Exemplo n.º 2
0
    def initialize(self):
        prefs = Preferences

        self.ignore_text_changed = False

        g = self.root = wpf.Grid()

        cd = wpf.ColumnDefinition()
        cd.Width = wpf.GridLength(1, wpf.GridUnitType.Star)
        g.ColumnDefinitions.Add(cd)
        cd = wpf.ColumnDefinition()
        cd.Width = wpf.GridLength(0, wpf.GridUnitType.Auto)
        g.ColumnDefinitions.Add(cd)

        self.canvas = wpf.Create(
            wpf.Canvas,
            Grid_Row=0,
            Grid_Column=1,
            Background=wpf.brush(wpf.Colors.White),
            Margin=wpf.Thickness(5, 0, 0, 0),
        )
        g.Children.Add(self.canvas)

        self.sv = wpf.Create(wpf.ScrollViewer, Grid_Row=0, Grid_Column=0, Padding=wpf.Thickness(5))
        g.Children.Add(self.sv)

        g.Children.Add(
            wpf.Create(
                wpf.GridSplitter,
                Grid_Row=0,
                Grid_Column=1,
                Width=5,
                HorizontalAlignment=wpf.HorizontalAlignment.Left,
                VerticalAlignment=wpf.VerticalAlignment.Stretch,
                Background=wpf.brush(wpf.Colors.MidnightBlue),
            )
        )

        prefs.apply_to(g, "BackgroundImage", "Background")
        prefs.apply_to(self.sv, "BackgroundMask", "Background")

        g = self.sv.Content = wpf.Grid()

        rd = wpf.RowDefinition()
        rd.Height = wpf.GridLength(0, wpf.GridUnitType.Auto)
        g.RowDefinitions.Add(rd)
        rd = wpf.RowDefinition()
        rd.Height = wpf.GridLength(1, wpf.GridUnitType.Auto)
        g.RowDefinitions.Add(rd)

        cd = wpf.ColumnDefinition()
        cd.Width = wpf.GridLength(0, wpf.GridUnitType.Auto)
        g.ColumnDefinitions.Add(cd)
        cd = wpf.ColumnDefinition()
        cd.Width = wpf.GridLength(1, wpf.GridUnitType.Star)
        g.ColumnDefinitions.Add(cd)

        self.buffer = wpf.TextBox()
        self.prompt = wpf.TextBox()
        self.ps = wpf.TextBlock()
        self.ps.Text = sys.ps1

        self.buffer.AcceptsReturn = self.prompt.AcceptsReturn = True
        self.buffer.TextWrapping = wpf.TextWrapping.Wrap
        self.buffer.IsReadOnly = True

        if sys.platform == "silverlight":
            self.prompt.SelectionForeground = self.buffer.SelectionForeground = wpf.brush("#000000")
            self.prompt.SelectionBackground = self.buffer.SelectionBackground = wpf.brush("#00ffff")
        else:
            self.ps.Margin = wpf.Thickness(2, 0, 0, 0)

        prefs.apply_style_to(self.buffer, "TextBoxStyle")
        prefs.apply_style_to(self.prompt, "TextBoxStyle")

        for tbx in (self.buffer, self.prompt, self.ps):
            prefs.apply_to(tbx, "FontSize")
            prefs.apply_to(tbx, "FontFamily")
            prefs.apply_to(tbx, "FontWeight")
            prefs.apply_to(tbx, "Foreground")

        wpf.Grid.SetColumn(self.buffer, 0)
        wpf.Grid.SetColumnSpan(self.buffer, 2)
        wpf.Grid.SetRow(self.buffer, 0)
        g.Children.Add(self.buffer)

        wpf.Grid.SetColumn(self.ps, 0)
        wpf.Grid.SetRow(self.ps, 1)
        g.Children.Add(self.ps)

        wpf.Grid.SetColumn(self.prompt, 1)
        wpf.Grid.SetRow(self.prompt, 1)
        g.Children.Add(self.prompt)

        pnl = wpf.Create(
            wpf.StackPanel,
            Grid_Row=0,
            Grid_Column=1,
            Orientation=wpf.Orientation.Vertical,
            HorizontalAlignment=wpf.HorizontalAlignment.Right,
            VerticalAlignment=wpf.VerticalAlignment.Top,
        )

        btn = wpf.Create(wpf.Button, Content="Preferences")
        prefs.apply_style_to(btn, "ButtonStyle")
        btn.Click += self.OnPreferencesClick
        pnl.Children.Add(btn)

        btn = wpf.Create(wpf.Button, Content=("Background Thread" if prefs.BackgroundExecution else "UI Thread"))
        prefs.apply_style_to(btn, "ButtonStyle")
        btn.Click += self.OnChangeThread
        pnl.Children.Add(btn)

        g.Children.Add(pnl)

        self.redirect_stdstreams()

        self.cursor = Cursor(self.prompt, self.sv)

        self.intellisense = Intellisense(self.engine, self.prompt)  # Must come before other KeyDown handlers
        if sys.platform == "cli":
            self.prompt.PreviewKeyDown += self.OnKeyDown
        else:
            self.prompt.KeyDown += self.OnKeyDown

        self.prompt.TextChanged += self.OnTextChanged
Exemplo n.º 3
0
from silvershell import utils

# Execute code on UI thread or on background thread
BackgroundExecution = False
# Show CLR tracebacks?
ExceptionDetail = False
# Settings this higher will display more members in the completion list, but will hurt performance
# If the completion list takes too long too show, set this lower.
MaxCompletions = 100

# Setting any of these preferences to None will result in them not being applied

FontSize = 14
FontFamily = wpf.FontFamily('Courier New')
FontWeight = wpf.FontWeights.Bold
Foreground = wpf.brush('#ffffff')
BackgroundMask = wpf.brush('#cc000000')
BackgroundImage = None

TextBoxStyle = utils.load_xaml('''
<Style TargetType="TextBox"
    xmlns="%(client_ns)s"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="Padding" Value="0" />
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="TextBox">
                <Border x:Name="ContentElement" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" />
Exemplo n.º 4
0
from silvershell import utils

# Execute code on UI thread or on background thread
BackgroundExecution = False
# Show CLR tracebacks?
ExceptionDetail = False
# Settings this higher will display more members in the completion list, but will hurt performance
# If the completion list takes too long too show, set this lower.
MaxCompletions = 100

# Setting any of these preferences to None will result in them not being applied

FontSize = 14
FontFamily = wpf.FontFamily('Courier New')
FontWeight = wpf.FontWeights.Bold
Foreground = wpf.brush('#ffff00')
BackgroundMask = wpf.brush('#1a000000')
BackgroundImage = wpf.image_brush('/silverlight.jpg')

TextBoxStyle = utils.load_xaml('''
<Style TargetType="TextBox"
    xmlns="%%(client_ns)s"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="Padding" Value="0" />
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="TextBox">
                <Border x:Name="%s" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" />
Exemplo n.º 5
0
    def initialize(self):
        p = self.root = wpf.Popup()

        p.Child = utils.load_xaml(
            """
            <Border 
                xmlns="%(client_ns)s"
                Background="Black"
                BorderThickness="2"
                >
                <Border.BorderBrush>
                    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                        <GradientStop Color="#B2FFFFFF" Offset="0"/>
                        <GradientStop Color="#66FFFFFF" Offset="0.325"/>
                        <GradientStop Color="#1EFFFFFF" Offset="0.325"/>
                        <GradientStop Color="#51FFFFFF" Offset="1"/>
                    </LinearGradientBrush>
                </Border.BorderBrush>
            </Border>"""
        )

        self.prefs = wpf.TextBox()
        self.prefs.AcceptsReturn = True
        self.prefs.TextWrapping = wpf.TextWrapping.Wrap
        self.prefs.VerticalScrollBarVisibility = wpf.ScrollBarVisibility.Auto
        self.prefs.FontSize = 14
        self.prefs.FontFamily = wpf.FontFamily("Courier New")
        self.prefs.FontWeight = wpf.FontWeights.Bold

        g = self.grid = self.root.Child.Child = wpf.Grid()
        g.Background = wpf.brush("#ffffff")

        rd = wpf.RowDefinition()
        rd.Height = wpf.GridLength(1, wpf.GridUnitType.Star)
        g.RowDefinitions.Add(rd)
        rd = wpf.RowDefinition()
        rd.Height = wpf.GridLength(0, wpf.GridUnitType.Auto)
        g.RowDefinitions.Add(rd)

        cd = wpf.ColumnDefinition()
        cd.Width = wpf.GridLength(0, wpf.GridUnitType.Auto)
        g.ColumnDefinitions.Add(cd)
        cd = wpf.ColumnDefinition()
        cd.Width = wpf.GridLength(1, wpf.GridUnitType.Star)
        g.ColumnDefinitions.Add(cd)
        cd = wpf.ColumnDefinition()
        cd.Width = wpf.GridLength(1, wpf.GridUnitType.Star)
        g.ColumnDefinitions.Add(cd)
        cd = wpf.ColumnDefinition()
        cd.Width = wpf.GridLength(0, wpf.GridUnitType.Auto)
        g.ColumnDefinitions.Add(cd)

        m = wpf.Thickness(5)

        b = wpf.Button()
        b.Margin = m
        b.Content = "Restore Defaults"
        b.Click += self.OnRestoreDefaultsClick

        wpf.Grid.SetColumn(b, 0)
        wpf.Grid.SetRow(b, 1)
        g.Children.Add(b)

        b = wpf.Button()
        b.Margin = m
        b.Content = "Apply & Save"
        b.Width = 120
        b.HorizontalAlignment = wpf.HorizontalAlignment.Center
        b.Click += self.OnApplyAndSaveClick

        wpf.Grid.SetColumn(b, 1)
        wpf.Grid.SetRow(b, 1)
        g.Children.Add(b)

        b = wpf.Button()
        b.Margin = m
        b.Content = "Load Theme"
        b.Width = 120
        b.HorizontalAlignment = wpf.HorizontalAlignment.Center
        # b.Click += self.OnLoadThemeClick

        wpf.Grid.SetColumn(b, 2)
        wpf.Grid.SetRow(b, 1)
        g.Children.Add(b)

        b = wpf.Button()
        b.Margin = m
        b.Content = "Close"
        b.Click += self.OnCloseClick

        wpf.Grid.SetColumn(b, 3)
        wpf.Grid.SetRow(b, 1)
        g.Children.Add(b)

        wpf.Grid.SetColumn(self.prefs, 0)
        wpf.Grid.SetRow(self.prefs, 0)
        wpf.Grid.SetColumnSpan(self.prefs, 4)
        g.Children.Add(self.prefs)

        # Center popup
        if sys.platform == "silverlight":
            p.Opened += self.OnPopupOpened
        else:
            p.PlacementTarget = wpf.get_root_visual()
            p.Placement = wpf.PlacementMode.Center