[meld: 4/63] filediff, meldbuffer: Make BufferData do our writability check
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld: 4/63] filediff, meldbuffer: Make BufferData do our writability check
- Date: Wed, 16 Dec 2015 21:19:18 +0000 (UTC)
commit 92be30fdff89241890d3ef500bb33bc0a8180946
Author: Kai Willadsen <kai willadsen gmail com>
Date: Sun Jul 19 08:09:27 2015 +1000
filediff, meldbuffer: Make BufferData do our writability check
meld/filediff.py | 21 ++++-----------------
meld/meldbuffer.py | 14 +++++++++++++-
2 files changed, 17 insertions(+), 18 deletions(-)
---
diff --git a/meld/filediff.py b/meld/filediff.py
index 6d68f3a..8ba80ef 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -983,10 +983,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
buf = self.textbuffer[1]
buf.data.savefile = os.path.abspath(filename)
buf.data.label = filename
- writable = True
- if os.path.exists(buf.data.savefile):
- writable = os.access(buf.data.savefile, os.W_OK)
- self.set_buffer_writable(buf, writable)
+ self.update_buffer_writable(buf)
self.fileentry[1].set_filename(buf.data.savefile)
self.recompute_label()
@@ -1108,26 +1105,16 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
add_dismissable_msg(
pane, Gtk.STOCK_DIALOG_ERROR, primary, err.message)
- def is_writable(gfile):
- try:
- info = gfile.query_info(Gio.FILE_ATTRIBUTE_ACCESS_CAN_WRITE, 0, None)
- except GLib.GError:
- return False
- return info.get_attribute_boolean(Gio.FILE_ATTRIBUTE_ACCESS_CAN_WRITE)
-
buf = loader.get_buffer()
- writable = False
if success:
- write_file = Gio.File.new_for_path(buf.data.savefile) if buf.data.savefile else gfile
- writable = is_writable(write_file)
buf.data.encoding = loader.get_encoding()
# TODO: Remove handling for mixed newlines in other places, or add
# mixed newline support to GtkSourceFile.
buf.data.newlines = loader.get_newline_type()
- self.set_buffer_writable(buf, writable)
+ self.update_buffer_writable(buf)
self.undosequence.checkpoint(buf)
buf.data.update_mtime()
@@ -1612,8 +1599,8 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
dialog = patchdialog.PatchDialog(self)
dialog.run()
- def set_buffer_writable(self, buf, writable):
- buf.data.writable = writable
+ def update_buffer_writable(self, buf):
+ writable = buf.data.writable
self.recompute_label()
index = self.textbuffer.index(buf)
self.readonlytoggle[index].props.visible = not writable
diff --git a/meld/meldbuffer.py b/meld/meldbuffer.py
index 46d25ba..3236d87 100644
--- a/meld/meldbuffer.py
+++ b/meld/meldbuffer.py
@@ -119,7 +119,6 @@ class MeldBufferData(GObject.GObject):
def reset(self):
self.loaded = False
self.modified = False
- self.writable = True
self.editable = True
self._monitor = None
self._mtime = None
@@ -185,6 +184,19 @@ class MeldBufferData(GObject.GObject):
self.update_mtime()
self._connect_monitor()
+ @property
+ def writable(self):
+ path = self.savefile or self._filename
+ if not path:
+ return False
+ gfile = Gio.File.new_for_path(path)
+ try:
+ info = gfile.query_info(
+ Gio.FILE_ATTRIBUTE_ACCESS_CAN_WRITE, 0, None)
+ except GLib.GError:
+ return False
+ return info.get_attribute_boolean(Gio.FILE_ATTRIBUTE_ACCESS_CAN_WRITE)
+
def update_mtime(self):
if self._filename:
gfile = Gio.File.new_for_path(self._filename)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]