File: readonly.py

package info (click to toggle)
gnat-gps 18-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 45,716 kB
  • sloc: ada: 362,679; python: 31,031; xml: 9,597; makefile: 1,030; ansic: 917; sh: 264; java: 17
file content (30 lines) | stat: -rw-r--r-- 884 bytes parent folder | download
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
"""This file makes every other line read-only.
   This is an example of using overlays"""

# ??? For a real production script, this script should be based
# on gps_utils.highlighter.py, which provides on-the-fly highlighting

from GPS import parse_xml, EditorBuffer

parse_xml("""
  <action name="make lines readonly">
     <shell lang="python">readonly.make_readonly()</shell>
  </action>
  <menu action="make lines readonly">
     <title>/Tests/Make Lines Readonly</title>
  </menu>
""")


def make_readonly():
    """Make every other line readonly in the current file"""
    buffer = EditorBuffer.get()
    loc = buffer.at(1, 1)

    overlay = buffer.create_overlay("readonly")
    overlay.set_property("editable", False)

    while loc < buffer.end_of_buffer():
        eol = loc.end_of_line()
        buffer.apply_overlay(overlay, loc, eol - 1)
        loc = loc.forward_line(2)