[meld] Move file cleanup from quit event to atexit handler (closes bgo#686494)
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] Move file cleanup from quit event to atexit handler (closes bgo#686494)
- Date: Sun, 2 Dec 2012 21:25:41 +0000 (UTC)
commit 7e82eb0056258c53ac529cc9844e6d32c229f031
Author: Kai Willadsen <kai willadsen gmail com>
Date: Sat Nov 10 07:38:22 2012 +1000
Move file cleanup from quit event to atexit handler (closes bgo#686494)
meld/vcview.py | 49 +++++++++++++++++++++++++++++++++++--------------
1 files changed, 35 insertions(+), 14 deletions(-)
---
diff --git a/meld/vcview.py b/meld/vcview.py
index 27bae2e..62b15c5 100644
--- a/meld/vcview.py
+++ b/meld/vcview.py
@@ -16,9 +16,13 @@
### Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
### USA.
+from __future__ import print_function
+
+import atexit
import tempfile
import shutil
import os
+import sys
from gettext import gettext as _
import gtk
@@ -45,6 +49,34 @@ def _commonprefix(files):
workdir = os.path.dirname(files[0]) or "."
return workdir
+
+def cleanup_temp():
+ temp_location = tempfile.gettempdir()
+ # The strings below will probably end up as debug log, and are deliberately
+ # not marked for translation.
+ for f in _temp_files:
+ try:
+ assert os.path.exists(f) and os.path.isabs(f) and \
+ os.path.dirname(f) == temp_location
+ os.remove(f)
+ except:
+ except_str = "{0[0]}: \"{0[1]}\"".format(sys.exc_info())
+ print("File \"{0}\" not removed due to".format(f), except_str,
+ file=sys.stderr)
+ for f in _temp_dirs:
+ try:
+ assert os.path.exists(f) and os.path.isabs(f) and \
+ os.path.dirname(f) == temp_location
+ shutil.rmtree(f, ignore_errors=1)
+ except:
+ except_str = "{0[0]}: \"{0[1]}\"".format(sys.exc_info())
+ print("Directory \"{0}\" not removed due to".format(f), except_str,
+ file=sys.stderr)
+
+_temp_dirs, _temp_files = [], []
+atexit.register(cleanup_temp)
+
+
################################################################################
#
# CommitDialog
@@ -155,8 +187,6 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
"VcShowIgnored", "VcResolved"):
button = self.actiongroup.get_action(action)
button.props.icon_name = button.props.stock_id
- self.tempdirs = []
- self.temp_files = set()
self.model = VcTreeStore()
self.widget.connect("style-set", self.model.on_style_set)
self.treeview.set_model(self.model)
@@ -377,17 +407,8 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
path = fileentry.get_full_path()
self.set_location(path)
- def on_quit_event(self):
- self.scheduler.remove_all_tasks()
- for f in self.tempdirs:
- if os.path.exists(f):
- shutil.rmtree(f, ignore_errors=1)
- for f in self.temp_files:
- if os.path.exists(f):
- os.remove(f)
-
def on_delete_event(self, appquit=0):
- self.on_quit_event()
+ self.scheduler.remove_all_tasks()
return gtk.RESPONSE_OK
def on_row_activated(self, treeview, path, tvc):
@@ -435,7 +456,7 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
try:
for path in path_list:
comp_path = self.vc.get_repo_file_path(path)
- self.temp_files.add(comp_path)
+ _temp_files.append(comp_path)
self.emit("create-diff", [comp_path, path])
except NotImplementedError:
for path in path_list:
@@ -587,7 +608,7 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
return False
tmpdir = tempfile.mkdtemp("-meld")
- self.tempdirs.append(tmpdir)
+ _temp_dirs.append(tmpdir)
diffs = []
for fname in self.vc.get_patch_files(patch):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]