##// END OF EJS Templates
Manage and propagate argv correctly....
Manage and propagate argv correctly. All Application objects should take argv in their constructor, akin to how the standard signature of C programs is "main(int argc, char *argv)". This makes it possible to initialize them from code with different command-line options (otherwise, they end up directly accessing sys.argv[1:] via argparse).

File last commit:

r2204:737ad9d6
r2391:1d7c11a4
Show More
platutils_win32.py
95 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)
Brian Granger
More work on InteractiveShell and ipmaker. It works!
r2204
ville
initialization (no svn history)
r988 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')