python-2.5.2/win32/Lib/idlelib/SearchDialogBase.py
changeset 0 ae805ac0140d
equal deleted inserted replaced
-1:000000000000 0:ae805ac0140d
       
     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()