[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1785] contrib/py/scripts/addons/ text_editor_pasteall.py: fix for linux.
Dalai Felinto
dfelinto at gmail.com
Tue Apr 5 03:06:39 CEST 2011
Revision: 1785
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1785
Author: dfelinto
Date: 2011-04-05 01:06:36 +0000 (Tue, 05 Apr 2011)
Log Message:
-----------
fix for linux. copied the webbrowser hack over from wm.py Thanks Daniel Salazar for the report and test over IRC
Modified Paths:
--------------
contrib/py/scripts/addons/text_editor_pasteall.py
Modified: contrib/py/scripts/addons/text_editor_pasteall.py
===================================================================
--- contrib/py/scripts/addons/text_editor_pasteall.py 2011-04-04 22:04:13 UTC (rev 1784)
+++ contrib/py/scripts/addons/text_editor_pasteall.py 2011-04-05 01:06:36 UTC (rev 1785)
@@ -109,6 +109,7 @@
if context.scene.use_webbrowser:
try:
+ _webbrowser_bug_fix()
webbrowser.open_new_tab(page)
except:
self.report('WARNING', "Error in opening the page %s." % (page))
@@ -217,4 +218,67 @@
bpy.utils.unregister_module(__name__)
if __name__ == "__main__":
- register()
\ No newline at end of file
+ register()
+
+def _webbrowser_bug_fix():
+ """hack copied from wm.py"""
+ # test for X11
+ import os
+
+ if os.environ.get("DISPLAY"):
+
+ # BSD licenced code copied from python, temp fix for bug
+ # http://bugs.python.org/issue11432, XXX == added code
+ def _invoke(self, args, remote, autoraise):
+ # XXX, added imports
+ import io
+ import subprocess
+ import time
+
+ raise_opt = []
+ if remote and self.raise_opts:
+ # use autoraise argument only for remote invocation
+ autoraise = int(autoraise)
+ opt = self.raise_opts[autoraise]
+ if opt:
+ raise_opt = [opt]
+
+ cmdline = [self.name] + raise_opt + args
+
+ if remote or self.background:
+ inout = io.open(os.devnull, "r+")
+ else:
+ # for TTY browsers, we need stdin/out
+ inout = None
+ # if possible, put browser in separate process group, so
+ # keyboard interrupts don't affect browser as well as Python
+ setsid = getattr(os, 'setsid', None)
+ if not setsid:
+ setsid = getattr(os, 'setpgrp', None)
+
+ p = subprocess.Popen(cmdline, close_fds=True, # XXX, stdin=inout,
+ stdout=(self.redirect_stdout and inout or None),
+ stderr=inout, preexec_fn=setsid)
+ if remote:
+ # wait five secons. If the subprocess is not finished, the
+ # remote invocation has (hopefully) started a new instance.
+ time.sleep(1)
+ rc = p.poll()
+ if rc is None:
+ time.sleep(4)
+ rc = p.poll()
+ if rc is None:
+ return True
+ # if remote call failed, open() will try direct invocation
+ return not rc
+ elif self.background:
+ if p.poll() is None:
+ return True
+ else:
+ return False
+ else:
+ return not p.wait()
+
+ import webbrowser
+ webbrowser.UnixBrowser._invoke = _invoke
+
More information about the Bf-extensions-cvs
mailing list