diff -r 000000000000 -r ae805ac0140d python-2.5.2/win32/tcl/tix8.4/pref/WmDefault.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python-2.5.2/win32/tcl/tix8.4/pref/WmDefault.py Fri Apr 03 17:19:34 2009 +0100 @@ -0,0 +1,96 @@ +# -*- mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- +# +# $Id: WmDefault.py,v 1.2 2001/12/09 05:03:09 idiscovery Exp $ +# + + +"""One of the bad things about Tk/Tkinter is that it does not pick up +the current color and font scheme from the prevailing CDE/KDE/GNOME/Windows +window manager scheme. + +One of the good things about Tk/Tkinter is that it is not tied to one +particular widget set so it could pick up the current color and font scheme +from the prevailing CDE/KDE/GNOME/Windows window manager scheme. + +The WmDefault package is for making Tk/Tkinter applications use the +prevailing CDE/KDE/GNOME/Windows scheme. It tries to find the files +and/or settings that the current window manager is using, and then +sets the Tk options database accordingly. + +Download the latest version of wm_default from http://tix.sourceforge.net +either as a part of the standard Tix distribution, or as a part of the +Tix Applications: http://tix.sourceforge.net/Tide. wm_default does not +require Tix, but is Tix enabled. +""" + +import os, sys, traceback, string +import tkMessageBox + +def setup(root, wm=''): + """1) find the files and/or settings (::wm_default::setup). + Takes one optional argument: wm, the name of the window manager + as a string, if known. One of: windows gnome kde1 kde2 cde kde. + """ + try: + try: + # Make sure Tcl/Tk knows wm_default is installed + root.tk.eval("package require wm_default") + except: + # Try again with this directory on the Tcl/Tk path + dir = os.path.dirname (self.__file__) + root.tk.eval('global auto_path; lappend auto_path {%s}' % dir) + root.tk.eval("package require wm_default") + except: + t, v, tb = sys.exc_info() + text = "Error loading WmDefault\n" + for line in traceback.format_exception(t,v,tb): text = text + line + '\n' + try: + tkMessageBox.showerror ('WmDefault Error', text) + except: + sys.stderr.write( text ) + + return root.tk.call('::wm_default::setup', wm) + +def addoptions(root, cnf=None, **kw): + """2) Setting the Tk options database (::wm_default::addoptions). + You can override the settings in 1) by adding your values to the + call to addoptions(). + """ + if cnf is None: + return root.tk.splitlist(root.tk.call('::wm_default::addoptions')) + return root.tk.splitlist( + apply(root.tk.call, + ('::wm_default::addoptions',) + root._options(cnf,kw))) + +def getoptions(root): + """Returns the current settings, as a dictionary. + """ + words = root.tk.splitlist(root.tk.call('::wm_default::getoptions')) + dict = {} + for i in range(0, len(words), 2): + key = words[i] + value = words[i+1] + dict[key] = value + return dict + +def parray(root): + """Returns a string of the current settings, one value-pair per line. + """ + return root.tk.call('::wm_default::parray') + +if __name__ == "__main__": + dir = "" + if len(sys.argv) > 0: + # Assume the name of the file containing the tixinspect Tcl source + # is the same as argument on the command line with .tcl + dir = os.path.dirname(sys.argv[0]) + if not dir or not os.path.isdir(dir) or not os.path.isabs(dir): + # Or, assume it's in the same directory as this one: + dir = os.getcwd() + import Tkinter + root = Tkinter.Tk() + setup(root) + addoptions(root, {'foreground': 'red'}) + retval = getoptions(root) + print retval +