/usr/share/pyshared/seascope/view/EdViewRW.py is in seascope 0.8-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 | #!/usr/bin/env python
# Copyright (c) 2010 Anil Kumar
# All rights reserved.
#
# License: BSD
import os
import re
from PyQt4 import QtGui
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from EdView import *
# inherit from EditView, add editing support.
class EditorViewRW(EditorView):
sig_file_modified = pyqtSignal(bool)
def __init__(self, parent=None):
EditorView.__init__(self, parent)
# use default settings.
EditorView.ed_settings_1(self)
def open_file(self, filename):
self.open_file_begin(filename)
## Show this file in the editor
data = open(filename).read()
try:
data = data.decode("UTF-8")
except:
pass
self.setText(data)
## process for modifiled.
self.setModified(False)
self.modificationChanged.connect(self.modifiedChanged)
## support edit
self.setReadOnly(False)
self.open_file_end()
def modifiedChanged(self):
self.sig_file_modified.emit(self.isModified())
# FIXME: too simple for big files or remote files.
def save_file(self, filename):
if(self.isModified()):
fobj = open(filename, 'w')
if (not fobj.closed):
fobj.write(str(self.text().toUtf8()))
fobj.flush()
fobj.close()
self.setModified(False)
class EditorPageRW(EditorPage):
def new_editor_view(self):
return EditorViewRW(self)
class EditorBookRW(EditorBook):
def new_editor_page(self):
return EditorPageRW()
def save_file_at_inx(self, inx):
if inx < 0:
return
page = self.widget(inx)
filename = page.get_filename()
if filename:
page.ev.save_file(filename)
page.fcv.rerun(filename)
def save_current_page(self):
inx = self.currentIndex()
self.save_file_at_inx(inx)
def save_tab_list(self, inx_list):
for inx in inx_list:
self.save_file_at_inx(inx)
def save_all_file(self):
inx_list = range(self.count())
self.save_tab_list(inx_list)
def page_modified_cb(self, isModifiled):
inx = self.currentIndex()
filename = self.tabText(inx)
# Sign modified.
if isModifiled:
self.tabBar().setTabTextColor(inx, Qt.red)
else:
self.tabBar().setTabTextColor(inx, Qt.black)
def close_cb(self, inx):
page = self.widget(self.currentIndex())
if page.ev.isModified():
if DialogManager.show_yes_no("Do you want to save file ?"):
self.save_current_page()
self.removeTab(inx)
def has_modified_file(self, inx_list):
for i in inx_list:
page = self.widget(i)
if page.ev.isModified():
return True
return False
def close_list_common(self, type):
inx_list = self.tab_list(self.currentIndex(), type)
if len(inx_list) == 0:
return
if self.has_modified_file(inx_list):
msg = 'Closing all %s.\nSave changes ?' % type
if DialogManager.show_yes_no(msg):
self.save_tab_list()
self.remove_tab_list(inx_list)
else:
msg = 'Close all %s ?' % type
if not DialogManager.show_yes_no(msg):
return
self.remove_tab_list(inx_list)
def show_file_line(self, filename, line, hist=True):
EditorBook.show_file_line(self, filename, line, hist=hist)
page = self.currentWidget()
# modified signal callback
page.ev.sig_file_modified.connect(self.page_modified_cb)
# redo editing callback
def redo_edit_cb(self):
ed = self.currentWidget()
if ed:
ed.ev.redo()
# undo editing callback
def undo_edit_cb(self):
ed = self.currentWidget()
if ed:
ed.ev.undo()
# edting callbacks
def cut_edit_cb(self):
ed = self.currentWidget()
if ed:
ed.ev.cut()
def paste_edit_cb(self):
ed = self.currentWidget()
if ed:
ed.ev.paste()
|