home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / SearchDialogBase.py < prev    next >
Text File  |  2003-12-30  |  4KB  |  141 lines

  1. from Tkinter import *
  2.  
  3. class SearchDialogBase:
  4.  
  5.     title = "Search Dialog"
  6.     icon = "Search"
  7.     needwrapbutton = 1
  8.  
  9.     def __init__(self, root, engine):
  10.         self.root = root
  11.         self.engine = engine
  12.         self.top = None
  13.  
  14.     def open(self, text, searchphrase=None):
  15.         self.text = text
  16.         if not self.top:
  17.             self.create_widgets()
  18.         else:
  19.             self.top.deiconify()
  20.             self.top.tkraise()
  21.         if searchphrase:
  22.             self.ent.delete(0,"end")
  23.             self.ent.insert("end",searchphrase)
  24.         self.ent.focus_set()
  25.         self.ent.selection_range(0, "end")
  26.         self.ent.icursor(0)
  27.         self.top.grab_set()
  28.  
  29.     def close(self, event=None):
  30.         if self.top:
  31.             self.top.grab_release()
  32.             self.top.withdraw()
  33.  
  34.     def create_widgets(self):
  35.         top = Toplevel(self.root)
  36.         top.bind("<Return>", self.default_command)
  37.         top.bind("<Escape>", self.close)
  38.         top.protocol("WM_DELETE_WINDOW", self.close)
  39.         top.wm_title(self.title)
  40.         top.wm_iconname(self.icon)
  41.         self.top = top
  42.  
  43.         self.row = 0
  44.         self.top.grid_columnconfigure(0, pad=2, weight=0)
  45.         self.top.grid_columnconfigure(1, pad=2, minsize=100, weight=100)
  46.  
  47.         self.create_entries()
  48.         self.create_option_buttons()
  49.         self.create_other_buttons()
  50.         return self.create_command_buttons()
  51.  
  52.     def make_entry(self, label, var):
  53.         l = Label(self.top, text=label)
  54.         l.grid(row=self.row, column=0, sticky="nw")
  55.         e = Entry(self.top, textvariable=var, exportselection=0)
  56.         e.grid(row=self.row, column=1, sticky="nwe")
  57.         self.row = self.row + 1
  58.         return e
  59.  
  60.     def make_frame(self,labeltext=None):
  61.         if labeltext:
  62.             l = Label(self.top, text=labeltext)
  63.             l.grid(row=self.row, column=0, sticky="nw")
  64.         f = Frame(self.top)
  65.         f.grid(row=self.row, column=1, columnspan=1, sticky="nwe")
  66.         self.row = self.row + 1
  67.         return f
  68.  
  69.     def make_button(self, label, command, isdef=0):
  70.         b = Button(self.buttonframe,
  71.                    text=label, command=command,
  72.                    default=isdef and "active" or "normal")
  73.         cols,rows=self.buttonframe.grid_size()
  74.         b.grid(pady=1,row=rows,column=0,sticky="ew")
  75.         self.buttonframe.grid(rowspan=rows+1)
  76.         return b
  77.  
  78.     def create_entries(self):
  79.         self.ent = self.make_entry("Find:", self.engine.patvar)
  80.  
  81.     def create_option_buttons(self):
  82.         f = self.make_frame("Options")
  83.  
  84.         btn = Checkbutton(f, anchor="w",
  85.                 variable=self.engine.revar,
  86.                 text="Regular expression")
  87.         btn.pack(side="left", fill="both")
  88.         if self.engine.isre():
  89.             btn.select()
  90.  
  91.         btn = Checkbutton(f, anchor="w",
  92.                 variable=self.engine.casevar,
  93.                 text="Match case")
  94.         btn.pack(side="left", fill="both")
  95.         if self.engine.iscase():
  96.             btn.select()
  97.  
  98.         btn = Checkbutton(f, anchor="w",
  99.                 variable=self.engine.wordvar,
  100.                 text="Whole word")
  101.         btn.pack(side="left", fill="both")
  102.         if self.engine.isword():
  103.             btn.select()
  104.  
  105.         if self.needwrapbutton:
  106.             btn = Checkbutton(f, anchor="w",
  107.                     variable=self.engine.wrapvar,
  108.                     text="Wrap around")
  109.             btn.pack(side="left", fill="both")
  110.             if self.engine.iswrap():
  111.                 btn.select()
  112.  
  113.     def create_other_buttons(self):
  114.         f = self.make_frame("Direction")
  115.  
  116.         #lbl = Label(f, text="Direction: ")
  117.         #lbl.pack(side="left")
  118.  
  119.         btn = Radiobutton(f, anchor="w",
  120.                 variable=self.engine.backvar, value=1,
  121.                 text="Up")
  122.         btn.pack(side="left", fill="both")
  123.         if self.engine.isback():
  124.             btn.select()
  125.  
  126.         btn = Radiobutton(f, anchor="w",
  127.                 variable=self.engine.backvar, value=0,
  128.                 text="Down")
  129.         btn.pack(side="left", fill="both")
  130.         if not self.engine.isback():
  131.             btn.select()
  132.  
  133.     def create_command_buttons(self):
  134.         #
  135.         # place button frame on the right
  136.         f = self.buttonframe = Frame(self.top)
  137.         f.grid(row=0,column=2,padx=2,pady=2,ipadx=2,ipady=2)
  138.  
  139.         b = self.make_button("close", self.close)
  140.         b.lower()
  141.