symbian-qemu-0.9.1-12/python-2.6.1/Demo/tix/samples/DirList.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
       
     2 #
       
     3 #       $Id: DirList.py 36560 2004-07-18 06:16:08Z tim_one $
       
     4 #
       
     5 # Tix Demostration Program
       
     6 #
       
     7 # This sample program is structured in such a way so that it can be
       
     8 # executed from the Tix demo program "tixwidgets.py":  it must have a
       
     9 # procedure called "RunSample". It should also have the "if" statment
       
    10 # at the end of this file so that it can be run as a standalone
       
    11 # program using tixwish.
       
    12 
       
    13 # This file demonstrates the use of the tixDirList widget -- you can
       
    14 # use it for the user to select a directory. For example, an installation
       
    15 # program can use the tixDirList widget to ask the user to select the
       
    16 # installation directory for an application.
       
    17 #
       
    18 
       
    19 import Tix, os, copy
       
    20 from Tkconstants import *
       
    21 
       
    22 TCL_ALL_EVENTS          = 0
       
    23 
       
    24 def RunSample (root):
       
    25     dirlist = DemoDirList(root)
       
    26     dirlist.mainloop()
       
    27     dirlist.destroy()
       
    28 
       
    29 class DemoDirList:
       
    30     def __init__(self, w):
       
    31         self.root = w
       
    32         self.exit = -1
       
    33 
       
    34         z = w.winfo_toplevel()
       
    35         z.wm_protocol("WM_DELETE_WINDOW", lambda self=self: self.quitcmd())
       
    36 
       
    37         # Create the tixDirList and the tixLabelEntry widgets on the on the top
       
    38         # of the dialog box
       
    39 
       
    40         # bg = root.tk.eval('tix option get bg')
       
    41         # adding bg=bg crashes Windows pythonw tk8.3.3 Python 2.1.0
       
    42 
       
    43         top = Tix.Frame( w, relief=RAISED, bd=1)
       
    44 
       
    45         # Create the DirList widget. By default it will show the current
       
    46         # directory
       
    47         #
       
    48         #
       
    49         top.dir = Tix.DirList(top)
       
    50         top.dir.hlist['width'] = 40
       
    51 
       
    52         # When the user presses the ".." button, the selected directory
       
    53         # is "transferred" into the entry widget
       
    54         #
       
    55         top.btn = Tix.Button(top, text = "  >>  ", pady = 0)
       
    56 
       
    57         # We use a LabelEntry to hold the installation directory. The user
       
    58         # can choose from the DirList widget, or he can type in the directory
       
    59         # manually
       
    60         #
       
    61         top.ent = Tix.LabelEntry(top, label="Installation Directory:",
       
    62                                   labelside = 'top',
       
    63                                   options = '''
       
    64                                   entry.width 40
       
    65                                   label.anchor w
       
    66                                   ''')
       
    67 
       
    68         font = self.root.tk.eval('tix option get fixed_font')
       
    69         # font = self.root.master.tix_option_get('fixed_font')
       
    70         top.ent.entry['font'] = font
       
    71 
       
    72         self.dlist_dir = copy.copy(os.curdir)
       
    73         # This should work setting the entry's textvariable
       
    74         top.ent.entry['textvariable'] = self.dlist_dir
       
    75         top.btn['command'] = lambda dir=top.dir, ent=top.ent, self=self: \
       
    76                              self.copy_name(dir,ent)
       
    77 
       
    78         # top.ent.entry.insert(0,'tix'+repr(self))
       
    79         top.ent.entry.bind('<Return>', lambda self=self: self.okcmd () )
       
    80 
       
    81         top.pack( expand='yes', fill='both', side=TOP)
       
    82         top.dir.pack( expand=1, fill=BOTH, padx=4, pady=4, side=LEFT)
       
    83         top.btn.pack( anchor='s', padx=4, pady=4, side=LEFT)
       
    84         top.ent.pack( expand=1, fill=X, anchor='s', padx=4, pady=4, side=LEFT)
       
    85 
       
    86         # Use a ButtonBox to hold the buttons.
       
    87         #
       
    88         box = Tix.ButtonBox (w, orientation='horizontal')
       
    89         box.add ('ok', text='Ok', underline=0, width=6,
       
    90                      command = lambda self=self: self.okcmd () )
       
    91         box.add ('cancel', text='Cancel', underline=0, width=6,
       
    92                      command = lambda self=self: self.quitcmd () )
       
    93 
       
    94         box.pack( anchor='s', fill='x', side=BOTTOM)
       
    95 
       
    96     def copy_name (self, dir, ent):
       
    97         # This should work as it is the entry's textvariable
       
    98         self.dlist_dir = dir.cget('value')
       
    99         # but it isn't so I'll do it manually
       
   100         ent.entry.delete(0,'end')
       
   101         ent.entry.insert(0, self.dlist_dir)
       
   102 
       
   103     def okcmd (self):
       
   104         # tixDemo:Status "You have selected the directory" + self.dlist_dir
       
   105         self.quitcmd()
       
   106 
       
   107     def quitcmd (self):
       
   108         self.exit = 0
       
   109 
       
   110     def mainloop(self):
       
   111         while self.exit < 0:
       
   112             self.root.tk.dooneevent(TCL_ALL_EVENTS)
       
   113 
       
   114     def destroy (self):
       
   115         self.root.destroy()
       
   116 
       
   117 # This "if" statement makes it possible to run this script file inside or
       
   118 # outside of the main demo program "tixwidgets.py".
       
   119 #
       
   120 if __name__== '__main__' :
       
   121     import tkMessageBox, traceback
       
   122 
       
   123     try:
       
   124         root=Tix.Tk()
       
   125         RunSample(root)
       
   126     except:
       
   127         t, v, tb = sys.exc_info()
       
   128         text = "Error running the demo script:\n"
       
   129         for line in traceback.format_exception(t,v,tb):
       
   130             text = text + line + '\n'
       
   131             d = tkMessageBox.showerror ( 'Tix Demo Error', text)