Example #1
0
 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
Example #2
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
Example #3
0
 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])
Example #4
0
 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()
Example #5
0
 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
Example #6
0
 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
Example #7
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
Example #8
0
 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