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
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
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}" />
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}" />
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