Lines Matching refs:self

86     def __init__(self, canvas, parent, item):
87 self.canvas = canvas
88 self.parent = parent
89 self.item = item
90 self.state = 'collapsed'
91 self.selected = False
92 self.children = []
93 self.x = self.y = None
94 self.iconimages = {} # cache of PhotoImage instances for icons
96 def destroy(self):
97 for c in self.children[:]:
98 self.children.remove(c)
100 self.parent = None
102 def geticonimage(self, name):
104 return self.iconimages[name]
110 image = PhotoImage(master=self.canvas, file=fullname)
111 self.iconimages[name] = image
114 def select(self, event=None):
115 if self.selected:
117 self.deselectall()
118 self.selected = True
119 self.canvas.delete(self.image_id)
120 self.drawicon()
121 self.drawtext()
123 def deselect(self, event=None):
124 if not self.selected:
126 self.selected = False
127 self.canvas.delete(self.image_id)
128 self.drawicon()
129 self.drawtext()
131 def deselectall(self):
132 if self.parent:
133 self.parent.deselectall()
135 self.deselecttree()
137 def deselecttree(self):
138 if self.selected:
139 self.deselect()
140 for child in self.children:
143 def flip(self, event=None):
144 if self.state == 'expanded':
145 self.collapse()
147 self.expand()
148 self.item.OnDoubleClick()
151 def expand(self, event=None):
152 if not self.item._IsExpandable():
154 if self.state != 'expanded':
155 self.state = 'expanded'
156 self.update()
157 self.view()
159 def collapse(self, event=None):
160 if self.state != 'collapsed':
161 self.state = 'collapsed'
162 self.update()
164 def view(self):
165 top = self.y - 2
166 bottom = self.lastvisiblechild().y + 17
168 visible_top = self.canvas.canvasy(0)
169 visible_height = self.canvas.winfo_height()
170 visible_bottom = self.canvas.canvasy(visible_height)
173 x0, y0, x1, y1 = self.canvas._getints(self.canvas['scrollregion'])
179 self.canvas.yview_moveto(fraction)
181 def lastvisiblechild(self):
182 if self.children and self.state == 'expanded':
183 return self.children[-1].lastvisiblechild()
185 return self
187 def update(self):
188 if self.parent:
189 self.parent.update()
191 oldcursor = self.canvas['cursor']
192 self.canvas['cursor'] = "watch"
193 self.canvas.update()
194 self.canvas.delete(ALL) # XXX could be more subtle
195 self.draw(7, 2)
196 x0, y0, x1, y1 = self.canvas.bbox(ALL)
197 self.canvas.configure(scrollregion=(0, 0, x1, y1))
198 self.canvas['cursor'] = oldcursor
200 def draw(self, x, y):
203 self.x, self.y = x, y
204 self.drawicon()
205 self.drawtext()
206 if self.state != 'expanded':
209 if not self.children:
210 sublist = self.item._GetSubList()
215 child = self.__class__(self.canvas, self, item)
216 self.children.append(child)
220 for child in self.children:
222 self.canvas.create_line(x+9, cy+7, cx, cy+7, fill="gray50")
231 image = self.geticonimage(iconname)
232 id = self.canvas.create_image(x+9, cylast+7, image=image)
234 self.canvas.tag_bind(id, "<1>", callback)
235 self.canvas.tag_bind(id, "<Double-1>", lambda x: None)
236 id = self.canvas.create_line(x+9, y+10, x+9, cylast+7,
239 self.canvas.tag_lower(id) # XXX .lower(id) before Python 1.5.2
242 def drawicon(self):
243 if self.selected:
244 imagename = (self.item.GetSelectedIconName() or
245 self.item.GetIconName() or
248 imagename = self.item.GetIconName() or "folder"
249 image = self.geticonimage(imagename)
250 id = self.canvas.create_image(self.x, self.y, anchor="nw", image=image)
251 self.image_id = id
252 self.canvas.tag_bind(id, "<1>", self.select)
253 self.canvas.tag_bind(id, "<Double-1>", self.flip)
255 def drawtext(self):
256 textx = self.x+20-1
257 texty = self.y-4
258 labeltext = self.item.GetLabelText()
260 id = self.canvas.create_text(textx, texty, anchor="nw",
262 self.canvas.tag_bind(id, "<1>", self.select)
263 self.canvas.tag_bind(id, "<Double-1>", self.flip)
264 x0, y0, x1, y1 = self.canvas.bbox(id)
266 text = self.item.GetText() or "<no text>"
268 self.entry
272 self.edit_finish()
274 self.label
277 self.label = Label(self.canvas, text=text, bd=0, padx=2, pady=2)
279 if self.selected:
280 self.label.configure(idleConf.GetHighlight(theme, 'hilite'))
282 self.label.configure(idleConf.GetHighlight(theme, 'normal'))
283 id = self.canvas.create_window(textx, texty,
284 anchor="nw", window=self.label)
285 self.label.bind("<1>", self.select_or_edit)
286 self.label.bind("<Double-1>", self.flip)
287 self.label.bind("<MouseWheel>", lambda e: wheel_event(e, self.canvas))
288 self.label.bind("<Button-4>", lambda e: wheel_event(e, self.canvas))
289 self.label.bind("<Button-5>", lambda e: wheel_event(e, self.canvas))
290 self.text_id = id
292 def select_or_edit(self, event=None):
293 if self.selected and self.item.IsEditable():
294 self.edit(event)
296 self.select(event)
298 def edit(self, event=None):
299 self.entry = Entry(self.label, bd=0, highlightthickness=1, width=0)
300 self.entry.insert(0, self.label['text'])
301 self.entry.selection_range(0, END)
302 self.entry.pack(ipadx=5)
303 self.entry.focus_set()
304 self.entry.bind("<Return>", self.edit_finish)
305 self.entry.bind("<Escape>", self.edit_cancel)
307 def edit_finish(self, event=None):
309 entry = self.entry
310 del self.entry
315 if text and text != self.item.GetText():
316 self.item.SetText(text)
317 text = self.item.GetText()
318 self.label['text'] = text
319 self.drawtext()
320 self.canvas.focus_set()
322 def edit_cancel(self, event=None):
324 entry = self.entry
325 del self.entry
329 self.drawtext()
330 self.canvas.focus_set()
342 def __init__(self):
345 def GetText(self):
348 def GetLabelText(self):
353 def _IsExpandable(self):
355 if self.expandable is None:
356 self.expandable = self.IsExpandable()
357 return self.expandable
359 def IsExpandable(self):
363 def _GetSubList(self):
365 if not self.IsExpandable():
367 sublist = self.GetSubList()
369 self.expandable = 0
372 def IsEditable(self):
375 def SetText(self, text):
378 def GetIconName(self):
381 def GetSelectedIconName(self):
384 def GetSubList(self):
387 def OnDoubleClick(self):
397 def __init__(self, path):
398 self.path = path
400 def GetText(self):
401 return os.path.basename(self.path) or self.path
403 def IsEditable(self):
404 return os.path.basename(self.path) != ""
406 def SetText(self, text):
407 newpath = os.path.dirname(self.path)
409 if os.path.dirname(newpath) != os.path.dirname(self.path):
412 os.rename(self.path, newpath)
413 self.path = newpath
417 def GetIconName(self):
418 if not self.IsExpandable():
421 def IsExpandable(self):
422 return os.path.isdir(self.path)
424 def GetSubList(self):
426 names = os.listdir(self.path)
432 item = FileTreeItem(os.path.join(self.path, name))
441 def __init__(self, master, **opts):
444 self.master = master
445 self.frame = Frame(master)
446 self.frame.rowconfigure(0, weight=1)
447 self.frame.columnconfigure(0, weight=1)
448 self.canvas = Canvas(self.frame, **opts)
449 self.canvas.grid(row=0, column=0, sticky="nsew")
450 self.vbar = Scrollbar(self.frame, name="vbar")
451 self.vbar.grid(row=0, column=1, sticky="nse")
452 self.hbar = Scrollbar(self.frame, name="hbar", orient="horizontal")
453 self.hbar.grid(row=1, column=0, sticky="ews")
454 self.canvas['yscrollcommand'] = self.vbar.set
455 self.vbar['command'] = self.canvas.yview
456 self.canvas['xscrollcommand'] = self.hbar.set
457 self.hbar['command'] = self.canvas.xview
458 self.canvas.bind("<Key-Prior>", self.page_up)
459 self.canvas.bind("<Key-Next>", self.page_down)
460 self.canvas.bind("<Key-Up>", self.unit_up)
461 self.canvas.bind("<Key-Down>", self.unit_down)
462 self.canvas.bind("<MouseWheel>", wheel_event)
463 self.canvas.bind("<Button-4>", wheel_event)
464 self.canvas.bind("<Button-5>", wheel_event)
466 self.canvas.bind("<Alt-Key-2>", self.zoom_height)
467 self.canvas.focus_set()
468 def page_up(self, event):
469 self.canvas.yview_scroll(-1, "page")
471 def page_down(self, event):
472 self.canvas.yview_scroll(1, "page")
474 def unit_up(self, event):
475 self.canvas.yview_scroll(-1, "unit")
477 def unit_down(self, event):
478 self.canvas.yview_scroll(1, "unit")
480 def zoom_height(self, event):
481 zoomheight.zoom_height(self.master)