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
|
import os.path
from pyface.api import PythonEditor
from pyface.tasks.api import TaskPane, TraitsDockPane
from traits.api import Event, File, Instance, List, Str
from traitsui.api import View, Item, FileEditor
class FileBrowserPane(TraitsDockPane):
""" A simple file browser pane.
"""
# TaskPane interface ---------------------------------------------------
id = "example.file_browser_pane"
name = "File Browser"
# FileBrowserPane interface --------------------------------------------
# Fired when a file is double-clicked.
activated = Event()
# The list of wildcard filters for filenames.
filters = List(Str)
# The currently selected file.
selected_file = File(os.path.expanduser("~"))
# The view used to construct the dock pane's widget.
view = View(
Item(
"selected_file",
editor=FileEditor(dclick_name="activated", filter_name="filters"),
style="custom",
show_label=False,
),
resizable=True,
)
class PythonScriptBrowserPane(FileBrowserPane):
""" A file browser pane restricted to Python scripts.
"""
# TaskPane interface ---------------------------------------------------
id = "example.python_script_browser_pane"
name = "Script Browser"
# FileBrowserPane interface --------------------------------------------
filters = ["*.py"]
class PythonEditorPane(TaskPane):
""" A wrapper around the Pyface Python editor.
"""
# TaskPane interface ---------------------------------------------------
id = "example.python_editor_pane"
name = "Python Editor"
# PythonEditorPane interface -------------------------------------------
editor = Instance(PythonEditor)
# ------------------------------------------------------------------------
# 'ITaskPane' interface.
# ------------------------------------------------------------------------
def create(self, parent):
self.editor = PythonEditor(parent)
self.control = self.editor.control
def destroy(self):
self.editor.destroy()
self.control = self.editor = None
|