This file is indexed.

/usr/share/doc/python-apptools/examples/appscripting/actions.py is in python-apptools 4.3.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
#------------------------------------------------------------------------------
# Copyright (c) 2008, Riverbank Computing Limited
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in enthought/LICENSE.txt and may be redistributed only
# under the conditions described in the aforementioned license.  The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
# Thanks for using Enthought open source!
#
# Author: Riverbank Computing Limited
# Description: <Enthought application scripting package component>
#------------------------------------------------------------------------------


# Enthought library imports.
from traits.api import Any, Instance, Str, Unicode
from pyface.action.api import Action
from pyface.workbench.api import WorkbenchWindow

# Local imports.
from model import Label


class BoundAction(Action):
    """An action with a bound object.  The action is automatically disabled if
    the bound object is None."""

    #### 'BoundAction' interface ##############################################

    # The bound object.
    obj = Any

    # The optional trait on obj that we are synch'ed with.
    trait_name = Str

    ###########################################################################
    # 'object' interface.
    ###########################################################################

    def __init__(self, **traits):
        """Initialise the object."""

        super(BoundAction, self).__init__(**traits)

        # Fake an obj change to set the initial state.
        self._obj_changed(None, self.obj)

    ###########################################################################
    # Traits handlers.
    ###########################################################################

    def _obj_changed(self, old, new):
        """Invoked when the bound object changes."""

        if old is not None:
            if self.trait_name:
                # Ignore any changes to the old object.
                old.on_trait_change(self._trait_changed, self.trait_name,
                        remove=True)

        enabled = False

        if new is not None:
            if self.trait_name:
                # Check for any changes on the new object.
                new.on_trait_change(self._trait_changed, self.trait_name)

                # Get the current state.
                if getattr(new, self.trait_name):
                    enabled = True
            else:
                enabled = True

        self.enabled = enabled

    def _trait_changed(self, new):
        """Invoked when the trait on the bound object changes."""

        self.enabled = new


class BoundWorkbenchAction(BoundAction):
    """A bound action whose object is being edited in a workbench editor.  The
    action is automatically rebound when the active editor changes."""

    #### 'BoundWorkbenchAction' interface #####################################

    # The type of the object that we will be enabled for.  If it is None then
    # we will be enabled for all types.
    trait_type = Any

    # The workbench window containing the action.
    window = Instance(WorkbenchWindow)

    ###########################################################################
    # 'object' interface.
    ###########################################################################

    def __init__(self, **traits):
        """Initialise the object."""

        super(BoundWorkbenchAction, self).__init__(**traits)

        self.window.on_trait_change(self._editor_changed, 'active_editor')

        # Fake an editor change to set the initial state.
        self._editor_changed(self.window.active_editor)

    ###########################################################################
    # Traits handlers.
    ###########################################################################

    def _editor_changed(self, new):
        """Invoked when the active editor changes."""

        obj = None

        if new is not None:
            if self.trait_type is None:
                obj = new.obj
            elif isinstance(new.obj, self.trait_type):
                obj = new.obj

        self.obj = obj


class LabelAction(BoundWorkbenchAction):
    """ The LabelAction class is the base class for all actions that operate on
    a Label.
    """

    #### 'BoundWorkbenchAction' interface #####################################

    # The type of the object that we will be enabled for.
    trait_type = Label

    #### 'BoundAction' interface ##############################################

    # The bound object.
    obj = Instance(Label)


class LabelIncrementSizeAction(LabelAction):
    """ The LabelIncrementSizeAction class is a action that increases the size
    of a label's text.
    """

    #### 'Action' interface ###################################################

    # The name of the action.
    name = Unicode("&Increment size")

    ###########################################################################
    # 'Action' interface.
    ###########################################################################

    def perform(self, event):
        self.obj.increment_size(1)


class LabelDecrementSizeAction(LabelAction):
    """ The LabelDecrementSizeAction class is a action that decreases the size
    of a label's text.
    """

    #### 'Action' interface ###################################################

    # The name of the action.
    name = Unicode("&Decrement size")

    ###########################################################################
    # 'Action' interface.
    ###########################################################################

    def perform(self, event):
        self.obj.decrement_size(1)


class LabelNormalFontAction(LabelAction):
    """ The LabelNormalFontAction class is a action that sets a normal font for
    a label's text.
    """

    #### 'Action' interface ###################################################

    # The name of the action.
    name = Unicode("&Normal font")

    ###########################################################################
    # 'Action' interface.
    ###########################################################################

    def perform(self, event):
        self.obj.style = 'normal'


class LabelBoldFontAction(LabelAction):
    """ The LabelNormalFontAction class is a action that sets a bold font for a
    label's text.
    """

    #### 'Action' interface ###################################################

    # The name of the action.
    name = Unicode("&Bold font")

    ###########################################################################
    # 'Action' interface.
    ###########################################################################

    def perform(self, event):
        self.obj.style = 'bold'


class LabelItalicFontAction(LabelAction):
    """ The LabelNormalFontAction class is a action that sets an italic font
    for a label's text.
    """

    #### 'Action' interface ###################################################

    # The name of the action.
    name = Unicode("&Italic font")

    ###########################################################################
    # 'Action' interface.
    ###########################################################################

    def perform(self, event):
        self.obj.style = 'italic'