123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- # -*- 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
|