def initialize(self): self._prefix = '' self._show_calltip = None self.filterCompletions = False p = self.popup = wpf.Popup() if sys.platform == 'cli': p.PlacementTarget = wpf.get_root_visual() p.Placement = wpf.PlacementMode.Relative else: # Popup must be in tree in Silverlight grid = wpf.get_root_visual() grid.Children.Add(self.popup) self.calltip = Preferences.CallTip self.calltip_lbl = self.calltip.FindName('CallTipLabel') if not self.calltip_lbl: raise ValueError, 'No element named "CallTipLabel" in Preferences.CallTip' self.member_list = Preferences.MemberList self.member_lbx = self.member_list.FindName('MemberListBox') if not self.member_lbx: raise ValueError, 'No element named "MemberListBox" in Preferences.MemberList' self.member_lbx.SelectionChanged += self.OnSelectionChanged
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 OnFirstLayout(self, sender, e): p = self.popup if p.IsOpen: child = p.Child rv = wpf.get_root_visual() pos, end, line = utils.get_current_line(self.tbx) offset = wpf.get_position(self.tbx) sz = wpf.measure_string(self._prefix, self.tbx.FontFamily, self.tbx.FontSize) desired_sz = wpf.measure(child) p.VerticalOffset = offset.Y + (self.tbx.Text[:pos].count('\n')+1) * sz.Height if p.VerticalOffset > rv.ActualHeight/2: # Display above the line p.VerticalOffset -= desired_sz.Height + sz.Height if p.VerticalOffset < 10: child.MaxHeight = desired_sz.Height - (10 - p.VerticalOffset) p.VerticalOffset = 10 elif p.VerticalOffset + desired_sz.Height + 10 > rv.ActualHeight: child.MaxHeight = rv.ActualHeight - p.VerticalOffset - 10 p.HorizontalOffset = offset.X + sz.Width if p.HorizontalOffset + desired_sz.Width > rv.ActualWidth-10: # Display further left p.HorizontalOffset = rv.ActualWidth - 10 - desired_sz.Width if p.Child is self.member_lbx: start = end - len(line) self.update_member_list(line[:pos-start])
def __init__(self, engine, tbx): self.tbx = tbx self.tbx.TextChanged += self.OnTextChanged self.tbx.LostFocus += self.OnLostFocus if sys.platform == 'cli': wpf.get_root_visual().Deactivated += self.OnLostFocus # Must come before other handlers if sys.platform == 'cli': self.tbx.PreviewKeyDown += self.OnKeyDown else: self.tbx.KeyDown += self.OnKeyDown self.engine = engine self.re_obj = re.compile(r'(?P<obj>(?:[a-z_][a-z0-9_]*?\.)*)(?P<current>[a-z_][a-z0-9_]*?)?$', re.IGNORECASE) self.initialize()
def __init__(self, tbx, bounding_sv): self.tbx = tbx self.bounding_sv = bounding_sv # TODO: use to hide cursor when it is out of bounds self.initialize() self.tbx.GotFocus += self.OnGotFocus self.tbx.LostFocus += self.OnLostFocus self.tbx.LayoutUpdated += self.OnUpdateCursor if sys.platform == 'cli': rv = wpf.get_root_visual() rv.LocationChanged += self.OnLocationChanged rv.Deactivated += self.OnLostFocus rv.Activated += self.OnGotFocus
def Dispose(self): self._can_update = False self.sb.Stop() self.popup.IsOpen = False self.tbx.LostFocus -= self.OnLostFocus self.tbx.GotFocus -= self.OnGotFocus self.tbx.LayoutUpdated -= self.OnUpdateCursor if sys.platform == 'cli': rv = wpf.get_root_visual() rv.LocationChanged -= self.OnLocationChanged rv.Deactivated -= self.OnLostFocus rv.Activated -= self.OnGotFocus del self.tbx del self.popup del self.sb
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
def show(self): self.root.Child.Width = wpf.get_root_visual().ActualWidth - 140 self.root.Child.Height = wpf.get_root_visual().ActualHeight - 100 self.root.Child.UpdateLayout() self.root.IsOpen = True