##// END OF EJS Templates
Fixing subtle bug in the traitlets with This....
Fixing subtle bug in the traitlets with This. Previously subclasses This traitlets wouldn't accept superclass instances as values. I have added a this_class attribute to TraitletType that is set by the metaclass and is used later by This.validate to properly handle this case. I have also added new tests for this.

File last commit:

r2132:b4c4d45e merge
r2183:0c46f18e
Show More
platutils_win32.py
94 lines | 2.7 KiB | text/x-python | PythonLexer
ville
initialization (no svn history)
r988 # -*- coding: utf-8 -*-
""" Platform specific utility functions, win32 version
Importing this module directly is not portable - rather, import platutils
to use these functions in platform agnostic fashion.
"""
#*****************************************************************************
# Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import os
Fernando Perez
Make set_term_title() default to no-op, as it can cause problems....
r1852 ignore_termtitle = True
ville
initialization (no svn history)
r988
try:
import ctypes
Fernando Perez
Refactor of platutils for cleanup....
r1331
SetConsoleTitleW = ctypes.windll.kernel32.SetConsoleTitleW
SetConsoleTitleW.argtypes = [ctypes.c_wchar_p]
def set_term_title(title):
"""Set terminal title using ctypes to access the Win32 APIs."""
ville
initialization (no svn history)
r988 SetConsoleTitleW(title)
except ImportError:
Fernando Perez
Refactor of platutils for cleanup....
r1331 def set_term_title(title):
"""Set terminal title using the 'title' command."""
global ignore_termtitle
try:
# Cannot be on network share when issuing system commands
curr = os.getcwd()
os.chdir("C:")
ret = os.system("title " + title)
finally:
os.chdir(curr)
ville
initialization (no svn history)
r988 if ret:
Fernando Perez
Refactor of platutils for cleanup....
r1331 # non-zero return code signals error, don't try again
ignore_termtitle = True
Brian Granger
Moving find_exe -> platutils.find_cmd and making is cross platform....
r1975
Fernando Perez
Merging (slightly modified) Tom Fetherston's demo branch....
r2102
Brian Granger
Moving find_exe -> platutils.find_cmd and making is cross platform....
r1975 def find_cmd(cmd):
"""Find the full path to a .bat or .exe using the win32api module."""
try:
Fernando Perez
Add searching of .py files to find_cmd so Twisted's trial runner is found....
r2110 from win32api import SearchPath
Brian Granger
Moving find_exe -> platutils.find_cmd and making is cross platform....
r1975 except ImportError:
raise ImportError('you need to have pywin32 installed for this to work')
else:
Fernando Perez
Add searching of .py files to find_cmd so Twisted's trial runner is found....
r2110 PATH = os.environ['PATH']
extensions = ['.exe', '.com', '.bat', '.py']
path = None
for ext in extensions:
try:
path = SearchPath(PATH,cmd + ext)[0]
except:
pass
if path is None:
raise OSError("command %r not found" % cmd)
else:
return path
Administrator
Added platutils.get_long_path_name to expand paths with "~" on win32....
r1986
def get_long_path_name(path):
"""Get a long path name (expand ~) on Windows using ctypes.
Examples
--------
>>> get_long_path_name('c:\\docume~1')
u'c:\\\\Documents and Settings'
"""
try:
import ctypes
except ImportError:
raise ImportError('you need to have ctypes installed for this to work')
_GetLongPathName = ctypes.windll.kernel32.GetLongPathNameW
_GetLongPathName.argtypes = [ctypes.c_wchar_p, ctypes.c_wchar_p,
ctypes.c_uint ]
buf = ctypes.create_unicode_buffer(260)
rv = _GetLongPathName(path, buf, 260)
if rv == 0 or rv > 260:
return path
else:
return buf.value
Fernando Perez
Merging (slightly modified) Tom Fetherston's demo branch....
r2102
Tom Fetherston
rollback to working
r1939 def term_clear():
os.system('cls')