2 # -*- coding: utf-8 -*-
3 #Author: Pierre Ratinaud
4 #Copyright (c) 2012, Pierre Ratinaud
8 import wx.lib.agw.customtreectrl as CT
10 from openanalyse import OpenAnalyse
11 from corpusNG import Corpus, copycorpus
12 from functions import DoConf
15 log = logging.getLogger('iramuteq.tree')
16 #from agw import customtreectrl as CT
18 class LeftTree(CT.CustomTreeCtrl):
20 def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
22 style=wx.SUNKEN_BORDER|wx.WANTS_CHARS,
23 agwStyle=CT.TR_HAS_BUTTONS|CT.TR_HAS_VARIABLE_ROW_HEIGHT):
25 CT.CustomTreeCtrl.__init__(self, parent, id, pos, size, style, agwStyle)
31 if data.startswith("TR_"):
32 treestyles.append(data)
33 elif data.startswith("EVT_"):
37 self.styles = treestyles
40 il = wx.ImageList(16, 16)
42 # for items in ArtIDs[1:-1]:
43 # bmp = wx.ArtProvider_GetBitmap(eval(items), wx.ART_TOOLBAR, (16, 16))
46 # smileidx = il.Add(images.Smiles.GetBitmap())
47 # numicons = il.GetImageCount()
49 self.AssignImageList(il)
53 self.history = parent.history
54 self.h = self.history.history
55 self.root = self.AddRoot("Iramuteq")
57 if not(self.GetAGWWindowStyleFlag() & CT.TR_HIDE_ROOT):
58 self.SetPyData(self.root, None)
59 self.SetItemImage(self.root, 24, CT.TreeItemIcon_Normal)
60 self.SetItemImage(self.root, 13, CT.TreeItemIcon_Expanded)
62 #textctrl = wx.TextCtrl(self, -1, "I Am A Simple\nMultiline wx.TexCtrl", style=wx.TE_MULTILINE)
63 #self.gauge = wx.Gauge(self, -1, 50, style=wx.GA_HORIZONTAL|wx.GA_SMOOTH)
64 #self.gauge.SetValue(0)
65 #combobox = wx.ComboBox(self, -1, choices=["That", "Was", "A", "Nice", "Holyday!"], style=wx.CB_READONLY|wx.CB_DROPDOWN)
67 #textctrl.Bind(wx.EVT_CHAR, self.OnTextCtrl)
68 #combobox.Bind(wx.EVT_COMBOBOX, self.OnComboBox)
69 #lenArtIds = len(ArtIDs) - 2
70 for x in range(len(self.h)) :
71 if 'corpus_name' in self.h[self.history.order[x]] :
75 child = self.AppendItem(self.root, self.h[self.history.order[x]][key])
77 # child = self.AppendItem(self.root, "Item %d" % x + "\nHello World\nHappy wxPython-ing!")
78 # self.SetItemBold(child, True)
80 # child = self.AppendItem(self.root, "Item %d" % x)
81 self.SetPyData(child, self.h[self.history.order[x]])
82 self.SetItemImage(child, 24, CT.TreeItemIcon_Normal)
83 self.SetItemImage(child, 13, CT.TreeItemIcon_Expanded)
85 #if random.randint(0, 3) == 0:
86 # self.SetItemLeftImage(child, random.randint(0, lenArtIds))
89 # if y == 0 and x == 1:
90 # last = self.AppendItem(child, "item %d-%s" % (x, chr(ord("a")+y)), ct_type=2, wnd=self.gauge)
91 # elif y == 1 and x == 2:
92 # last = self.AppendItem(child, "Item %d-%s" % (x, chr(ord("a")+y)), ct_type=1, wnd=textctrl)
93 # if random.randint(0, 3) == 1:
94 # self.SetItem3State(last, True)
97 # last = self.AppendItem(child, "item %d-%s" % (x, chr(ord("a")+y)))
98 # elif y == 4 and x == 1:
99 # last = self.AppendItem(child, "item %d-%s" % (x, chr(ord("a")+y)), wnd=combobox)
101 if 'corpus_name' in self.h[self.history.order[x]] :
102 if 'analyses' in self.h[self.history.order[x]] :
103 for y in self.h[self.history.order[x]]['analyses'] :
104 last = self.AppendItem(child, y['name'], ct_type=0)
106 self.SetPyData(last, y)
107 self.SetItemImage(last, 24, CT.TreeItemIcon_Normal)
108 self.SetItemImage(last, 13, CT.TreeItemIcon_Expanded)
110 # if random.randint(0, 3) == 0:
111 # self.SetItemLeftImage(last, random.randint(0, lenArtIds))
113 #for z in range(len(self.history[x]) - 1):
116 # item = self.AppendItem(last, "item %d-%s-%d" % (x, chr(ord("a")+y), z), ct_type=0)
117 # #if random.randint(0, 3) == 1:
118 # # self.SetItem3State(item, True)
120 # item = self.AppendItem(last, "item %d-%s-%d" % (x, chr(ord("a")+y), z), ct_type=0)
122 # item = self.AppendItem(last, "item %d-%s-%d" % (x, chr(ord("a")+y), z))
123 # #self.SetItemHyperText(item, True)
124 # self.SetPyData(item, None)
125 # self.SetItemImage(item, 28, CT.TreeItemIcon_Normal)
126 # self.SetItemImage(item, 28, CT.TreeItemIcon_Selected)
128 # if random.randint(0, 3) == 0:
129 # self.SetItemLeftImage(item, random.randint(0, lenArtIds))
131 self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick)
132 #self.Bind(wx.EVT_IDLE, self.OnIdle)
134 self.eventdict = {'EVT_TREE_BEGIN_DRAG': self.OnBeginDrag, 'EVT_TREE_BEGIN_LABEL_EDIT': self.OnBeginEdit,
135 'EVT_TREE_BEGIN_RDRAG': self.OnBeginRDrag, 'EVT_TREE_DELETE_ITEM': self.OnDeleteItem,
136 'EVT_TREE_END_DRAG': self.OnEndDrag, 'EVT_TREE_END_LABEL_EDIT': self.OnEndEdit,
137 'EVT_TREE_ITEM_ACTIVATED': self.OnActivate, 'EVT_TREE_ITEM_CHECKED': self.OnItemCheck,
138 'EVT_TREE_ITEM_CHECKING': self.OnItemChecking, 'EVT_TREE_ITEM_COLLAPSED': self.OnItemCollapsed,
139 'EVT_TREE_ITEM_COLLAPSING': self.OnItemCollapsing, 'EVT_TREE_ITEM_EXPANDED': self.OnItemExpanded,
140 'EVT_TREE_ITEM_EXPANDING': self.OnItemExpanding, 'EVT_TREE_ITEM_GETTOOLTIP': self.OnToolTip,
141 'EVT_TREE_ITEM_MENU': self.OnItemMenu, 'EVT_TREE_ITEM_RIGHT_CLICK': self.OnRightDown,
142 'EVT_TREE_KEY_DOWN': self.OnKey, 'EVT_TREE_SEL_CHANGED': self.OnSelChanged,
143 'EVT_TREE_SEL_CHANGING': self.OnSelChanging, "EVT_TREE_ITEM_HYPERLINK": self.OnHyperLink}
145 mainframe = wx.GetTopLevelParent(self)
147 if not hasattr(mainframe, "leftpanel"):
148 self.Bind(CT.EVT_TREE_ITEM_EXPANDED, self.OnItemExpanded)
149 self.Bind(CT.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollapsed)
150 self.Bind(CT.EVT_TREE_SEL_CHANGED, self.OnSelChanged)
151 self.Bind(CT.EVT_TREE_SEL_CHANGING, self.OnSelChanging)
152 self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)
153 self.Bind(wx.EVT_RIGHT_UP, self.OnRightUp)
155 for combos in mainframe.treeevents:
156 self.BindEvents(combos)
158 if hasattr(mainframe, "leftpanel"):
159 self.ChangeStyle(mainframe.treestyles)
161 if not(self.GetAGWWindowStyleFlag() & CT.TR_HIDE_ROOT):
162 self.SelectItem(self.root)
163 self.Expand(self.root)
166 def BindEvents(self, choice, recreate=False):
168 value = choice.GetValue()
169 text = choice.GetLabel()
172 binder = self.eventdict[text]
175 if evt == "CT.EVT_TREE_BEGIN_RDRAG":
176 self.Bind(wx.EVT_RIGHT_DOWN, None)
177 self.Bind(wx.EVT_RIGHT_UP, None)
178 self.Bind(eval(evt), binder)
180 self.Bind(eval(evt), None)
181 if evt == "CT.EVT_TREE_BEGIN_RDRAG":
182 self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)
183 self.Bind(wx.EVT_RIGHT_UP, self.OnRightUp)
186 def ChangeStyle(self, combos):
190 if combo.GetValue() == 1:
191 style = style | eval("CT." + combo.GetLabel())
193 if self.GetAGWWindowStyleFlag() != style:
194 self.SetAGWWindowStyleFlag(style)
197 def OnCompareItems(self, item1, item2):
199 t1 = self.GetItemText(item1)
200 t2 = self.GetItemText(item2)
211 def OnIdle(self, event):
215 # if self.gauge.IsEnabled() and self.gauge.IsShown():
216 # self.count = self.count + 1
218 # if self.count >= 50:
221 # self.gauge.SetValue(self.count)
229 def CloseItem(self, itemParent = None, uuid = None) :
230 if itemParent is None :
231 itemParent = self.root
232 child, cookie = self.GetFirstChild(itemParent)
234 pydata = self.GetPyData(child)
235 if pydata['uuid'] == uuid :
236 self.SetItemBold(child, False)
238 self.CloseItem(child, uuid)
239 child, cookie = self.GetNextChild(itemParent, cookie)
241 def GiveFocus(self, itemParent = None, uuid = None) :
242 if itemParent is None :
243 itemParent = self.root
244 child, cookie = self.GetFirstChild(itemParent)
246 pydata = self.GetPyData(child)
247 if pydata['uuid'] == uuid :
248 self.SelectItem(child)
250 self.GiveFocus(child, uuid)
251 child, cookie = self.GetNextChild(itemParent, cookie)
253 def OnRightDown(self, event):
255 pt = event.GetPosition()
256 item, flags = self.HitTest(pt)
260 #self.log.info("OnRightClick: %s, %s, %s" % (self.GetItemText(item), type(item), item.__class__) + "\n")
261 self.SelectItem(item)
264 def OnRightUp(self, event):
272 if not self.IsItemEnabled(item):
276 # Item Text Appearance
277 ishtml = self.IsItemHyperText(item)
278 back = self.GetItemBackgroundColour(item)
279 fore = self.GetItemTextColour(item)
280 isbold = self.IsBold(item)
281 font = self.GetItemFont(item)
284 normal = self.GetItemImage(item, CT.TreeItemIcon_Normal)
285 selected = self.GetItemImage(item, CT.TreeItemIcon_Selected)
286 expanded = self.GetItemImage(item, CT.TreeItemIcon_Expanded)
287 selexp = self.GetItemImage(item, CT.TreeItemIcon_SelectedExpanded)
289 # Enabling/Disabling Windows Associated To An Item
290 haswin = self.GetItemWindow(item)
292 # Enabling/Disabling Items
293 enabled = self.IsItemEnabled(item)
295 # Generic Item's Info
296 children = self.GetChildrenCount(item)
297 itemtype = self.GetItemType(item)
298 text = self.GetItemText(item)
299 pydata = self.GetPyData(item)
302 self.itemdict = {"ishtml": ishtml, "back": back, "fore": fore, "isbold": isbold,
303 "font": font, "normal": normal, "selected": selected, "expanded": expanded,
304 "selexp": selexp, "haswin": haswin, "children": children,
305 "itemtype": itemtype, "text": text, "pydata": pydata, "enabled": enabled}
308 info = menu.Append(wx.ID_ANY, "Informations")
309 menu.AppendSeparator()
311 if 'corpus_name' in pydata :
312 stat = menu.Append(wx.ID_ANY, u"Statistiques")
313 spec = menu.Append(wx.ID_ANY, u"Spécificté et AFC")
314 classification = wx.Menu()
315 alceste = classification.Append(wx.ID_ANY, u"Méthode ALCESTE")
316 pam = classification.Append(wx.ID_ANY, u"Par matrice des distances")
317 menu.AppendMenu(-1, u"Classification", classification)
318 simi = menu.Append(wx.ID_ANY, u"Analyse de similitude")
319 menu.AppendSeparator()
320 self.Bind(wx.EVT_MENU, self.OnAlceste, alceste)
321 self.Bind(wx.EVT_MENU, self.OnPam, pam)
322 self.Bind(wx.EVT_MENU, self.OnStat, stat)
323 self.Bind(wx.EVT_MENU, self.OnSpec, spec)
324 self.Bind(wx.EVT_MENU, self.OnSimiTxt, simi)
326 itemdelete = menu.Append(wx.ID_ANY, "Supprimer de l'historique")
327 if item == self.GetRootItem():
328 itemdelete.Enable(False)
329 #item11 = menu.Append(wx.ID_ANY, "Prepend An Item")
330 #item12 = menu.Append(wx.ID_ANY, "Append An Item")
332 #self.Bind(wx.EVT_MENU, self.OnItemBackground, item1)
333 #self.Bind(wx.EVT_MENU, self.OnItemForeground, item2)
334 #self.Bind(wx.EVT_MENU, self.OnItemBold, item3)
335 #self.Bind(wx.EVT_MENU, self.OnItemFont, item4)
336 #self.Bind(wx.EVT_MENU, self.OnItemHyperText, item5)
337 #self.Bind(wx.EVT_MENU, self.OnEnableWindow, item6)
338 #self.Bind(wx.EVT_MENU, self.OnDisableItem, item7)
339 #self.Bind(wx.EVT_MENU, self.OnItemIcons, item8)
340 self.Bind(wx.EVT_MENU, self.OnItemInfo, info)
341 self.Bind(wx.EVT_MENU, self.OnItemDelete, itemdelete)
342 #self.Bind(wx.EVT_MENU, self.OnItemPrepend, item11)
343 #self.Bind(wx.EVT_MENU, self.OnItemAppend, item12)
348 def getcorpus(self, itemdict):
349 if itemdict['pydata']['uuid'] in self.parent.history.openedcorpus :
350 return copycorpus(self.parent.history.openedcorpus[itemdict['pydata']['uuid']])
352 return Corpus(self.parent, parametres = DoConf(itemdict['pydata']['ira']).getoptions('corpus'), read = True)
354 def OnSpec(self, evt) :
355 self.parent.OnTextSpec(evt, self.getcorpus(self.itemdict))
357 def OnStat(self, evt) :
358 self.parent.OnTextStat(evt, self.getcorpus(self.itemdict))
360 def OnAlceste(self, evt) :
361 self.parent.OnTextAlceste(evt, self.getcorpus(self.itemdict))
363 def OnPam(self, evt) :
366 def OnSimiTxt(self, evt) :
367 self.parent.OnSimiTxt(evt, self.getcorpus(self.itemdict))
369 def OnItemBackground(self, event):
371 colourdata = wx.ColourData()
372 colourdata.SetColour(self.itemdict["back"])
373 dlg = wx.ColourDialog(self, colourdata)
375 dlg.GetColourData().SetChooseFull(True)
377 if dlg.ShowModal() == wx.ID_OK:
378 data = dlg.GetColourData()
379 col1 = data.GetColour().Get()
380 self.SetItemBackgroundColour(self.current, col1)
384 def OnItemForeground(self, event):
386 colourdata = wx.ColourData()
387 colourdata.SetColour(self.itemdict["fore"])
388 dlg = wx.ColourDialog(self, colourdata)
390 dlg.GetColourData().SetChooseFull(True)
392 if dlg.ShowModal() == wx.ID_OK:
393 data = dlg.GetColourData()
394 col1 = data.GetColour().Get()
395 self.SetItemTextColour(self.current, col1)
399 def OnItemBold(self, event):
401 self.SetItemBold(self.current, not self.itemdict["isbold"])
404 def OnItemFont(self, event):
407 font = self.itemdict["font"]
410 font = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
412 data.SetInitialFont(font)
414 dlg = wx.FontDialog(self, data)
416 if dlg.ShowModal() == wx.ID_OK:
417 data = dlg.GetFontData()
418 font = data.GetChosenFont()
419 self.SetItemFont(self.current, font)
424 def OnItemHyperText(self, event):
426 self.SetItemHyperText(self.current, not self.itemdict["ishtml"])
429 def OnEnableWindow(self, event):
431 enable = self.GetItemWindowEnabled(self.current)
432 self.SetItemWindowEnabled(self.current, not enable)
435 def OnDisableItem(self, event):
437 self.EnableItem(self.current, False)
440 def OnItemIcons(self, event):
442 bitmaps = [self.itemdict["normal"], self.itemdict["selected"],
443 self.itemdict["expanded"], self.itemdict["selexp"]]
446 dlg = TreeIcons(self, -1, bitmaps=bitmaps)
451 def SetNewIcons(self, bitmaps):
453 self.SetItemImage(self.current, bitmaps[0], CT.TreeItemIcon_Normal)
454 self.SetItemImage(self.current, bitmaps[1], CT.TreeItemIcon_Selected)
455 self.SetItemImage(self.current, bitmaps[2], CT.TreeItemIcon_Expanded)
456 self.SetItemImage(self.current, bitmaps[3], CT.TreeItemIcon_SelectedExpanded)
459 def OnItemInfo(self, event):
461 itemtext = self.itemdict["text"]
462 numchildren = str(self.itemdict["children"])
463 itemtype = self.itemdict["itemtype"]
464 pydata = self.itemdict['pydata']
465 if 'analyses' in pydata :
466 toshow = dict([[val, pydata[val]] for val in pydata if val not in['analyses', 'isload']])
469 pydata = DoConf().totext(toshow)
474 itemtype = "CheckBox"
476 itemtype = "RadioButton"
478 strs = "Information On Selected Item:\n\n" + "Text: " + itemtext + "\n" \
479 "Number Of Children: " + numchildren + "\n" \
480 "Item Type: " + itemtype + "\n" \
481 "Item Data Type: " + pydata + "\n"
483 dlg = wx.MessageDialog(self, strs, "CustomTreeCtrlDemo Info", wx.OK | wx.ICON_INFORMATION)
489 def OnItemDelete(self, event):
491 strs = "Are You Sure You Want To Delete Item " + self.GetItemText(self.current) + "?"
492 dlg = wx.MessageDialog(None, strs, 'Deleting Item', wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_QUESTION)
494 if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
500 pydata = self.itemdict['pydata']
501 if 'corpus_name' in pydata :
502 self.history.delete(pydata['uuid'], True)
504 self.history.delete(pydata['uuid'])
505 self.DeleteChildren(self.current)
506 self.Delete(self.current)
511 def OnItemPrepend(self, event):
513 dlg = wx.TextEntryDialog(self, "Please Enter The New Item Name", 'Item Naming', 'Python')
515 if dlg.ShowModal() == wx.ID_OK:
516 newname = dlg.GetValue()
517 newitem = self.PrependItem(self.current, newname)
518 self.EnsureVisible(newitem)
522 def AddAnalyse(self, parametres, itemParent = None) :
523 uuid = parametres['corpus']
524 if itemParent is None :
525 itemParent = self.root
526 child, cookie = self.GetFirstChild(itemParent)
528 pydata = self.GetPyData(child)
529 if pydata['uuid'] == uuid :
532 self.GiveFocus(child, uuid)
533 child, cookie = self.GetNextChild(itemParent, cookie)
534 item = self.AppendItem(corpus, parametres['name'])
535 self.SetPyData(item, parametres)
536 self.SetItemImage(item, 24, CT.TreeItemIcon_Normal)
537 self.SetItemImage(item, 13, CT.TreeItemIcon_Expanded)
538 self.SetItemBold(item, True)
540 def OnItemAppend(self, item):
541 child = self.AppendItem(self.root, item['corpus_name'])
542 self.SetPyData(child, item)
543 self.history.addtab(item)
544 self.SetItemImage(child, 24, CT.TreeItemIcon_Normal)
545 self.SetItemImage(child, 13, CT.TreeItemIcon_Expanded)
546 self.SetItemBold(child, True)
548 #dlg = wx.TextEntryDialog(self, "Please Enter The New Item Name", 'Item Naming', 'Python')
550 #if dlg.ShowModal() == wx.ID_OK:
551 # newname = dlg.GetValue()
552 # newitem = self.AppendItem(self.current, newname)
553 # self.EnsureVisible(newitem)
559 def OnBeginEdit(self, event):
561 #self.log.info("OnBeginEdit" + "\n")
562 # show how to prevent edit...
563 item = event.GetItem()
564 if item and self.GetItemText(item) == "The Root Item":
566 #self.log.info("You can't edit this one..." + "\n")
568 # Lets just see what's visible of its children
570 root = event.GetItem()
571 (child, cookie) = self.GetFirstChild(root)
574 #self.log.info("Child [%s] visible = %d" % (self.GetItemText(child), self.IsVisible(child)) + "\n")
575 (child, cookie) = self.GetNextChild(root, cookie)
580 def OnEndEdit(self, event):
582 #self.log.info("OnEndEdit: %s %s" %(event.IsEditCancelled(), event.GetLabel()))
583 # show how to reject edit, we'll not allow any digits
584 for x in event.GetLabel():
585 if x in string.digits:
586 #self.log.info(", You can't enter digits..." + "\n")
593 def OnLeftDClick(self, event):
595 pt = event.GetPosition()
596 item, flags = self.HitTest(pt)
597 pydata = self.GetPyData(item)
598 if pydata['uuid'] in self.parent.history.opened :
599 for i in range(self.parent.nb.GetPageCount()) :
600 page = self.parent.nb.GetPage(i)
601 if 'parametres' in dir(page) :
602 if page.parametres['uuid'] == pydata['uuid'] :
603 self.parent.nb.SetSelection(i)
606 OpenAnalyse(self.parent, pydata)
607 self.SetItemBold(item, True)
608 #if item and (flags & CT.TREE_HITTEST_ONITEMLABEL):
609 # if self.GetAGWWindowStyleFlag() & CT.TR_EDIT_LABELS:
610 # self.log.info("OnLeftDClick: %s (manually starting label edit)"% self.GetItemText(item) + "\n")
612 #self.EditLabel(item)
614 # pydata = self.GetPyData(item)
616 # self.log.info("OnLeftDClick: Cannot Start Manual Editing, Missing Style TR_EDIT_LABELS\n")
621 def OnItemExpanded(self, event):
623 item = event.GetItem()
625 self.log.info("OnItemExpanded: %s" % self.GetItemText(item) + "\n")
628 def OnItemExpanding(self, event):
630 item = event.GetItem()
632 self.log.info("OnItemExpanding: %s" % self.GetItemText(item) + "\n")
637 def OnItemCollapsed(self, event):
639 item = event.GetItem()
641 self.log.info("OnItemCollapsed: %s" % self.GetItemText(item) + "\n")
644 def OnItemCollapsing(self, event):
646 item = event.GetItem()
648 self.log.info("OnItemCollapsing: %s" % self.GetItemText(item) + "\n")
653 def OnSelChanged(self, event):
654 item = event.GetItem()
655 pydata = self.GetPyData(item)
656 if pydata is not None :
657 if pydata['uuid'] in self.parent.history.opened :
658 for i in range(self.parent.nb.GetPageCount()) :
659 page = self.parent.nb.GetPage(i)
660 if 'parametres' in dir(page) :
661 if page.parametres['uuid'] == pydata['uuid'] :
662 self.parent.nb.SetSelection(i)
665 #self.item = event.GetItem()
668 #self.log.info("OnSelChanged: %s" % self.GetItemText(self.item))
669 # if wx.Platform == '__WXMSW__':
670 # self.log.info(", BoundingRect: %s" % self.GetBoundingRect(self.item, True) + "\n")
675 def OnSelChanging(self, event):
677 item = event.GetItem()
678 olditem = event.GetOldItem()
684 olditemtext = self.GetItemText(olditem)
685 self.log.info("OnSelChanging: From %s" % olditemtext + " To %s" % self.GetItemText(item) + "\n")
690 def OnBeginDrag(self, event):
692 self.item = event.GetItem()
694 self.log.info("Beginning Drag..." + "\n")
699 def OnBeginRDrag(self, event):
701 self.item = event.GetItem()
703 self.log.info("Beginning Right Drag..." + "\n")
708 def OnEndDrag(self, event):
710 self.item = event.GetItem()
712 self.log.info("Ending Drag!" + "\n")
717 def OnDeleteItem(self, event):
719 item = event.GetItem()
724 self.log.info("Deleting Item: %s" % self.GetItemText(item) + "\n")
728 def OnItemCheck(self, event):
730 item = event.GetItem()
731 self.log.info("Item " + self.GetItemText(item) + " Has Been Checked!\n")
735 def OnItemChecking(self, event):
737 item = event.GetItem()
738 self.log.info("Item " + self.GetItemText(item) + " Is Being Checked...\n")
742 def OnToolTip(self, event):
744 item = event.GetItem()
746 event.SetToolTip(wx.ToolTip(self.GetItemText(item)))
749 def OnItemMenu(self, event):
751 item = event.GetItem()
753 self.log.info("OnItemMenu: %s" % self.GetItemText(item) + "\n")
758 def OnKey(self, event):
760 keycode = event.GetKeyCode()
761 keyname = keyMap.get(keycode, None)
763 if keycode == wx.WXK_BACK:
764 self.log.info("OnKeyDown: HAHAHAHA! I Vetoed Your Backspace! HAHAHAHA\n")
768 if "unicode" in wx.PlatformInfo:
769 keycode = event.GetUnicodeKey()
771 keycode = event.GetKeyCode()
772 keyname = "\"" + unichr(event.GetUnicodeKey()) + "\""
774 keyname = "Ctrl-%s" % chr(ord('A') + keycode-1)
780 keyname = "Ctrl-%s" % chr(ord('A') + keycode-1)
782 keyname = "\"%s\"" % chr(keycode)
784 keyname = "unknown (%s)" % keycode
786 self.log.info("OnKeyDown: You Pressed '" + keyname + "'\n")
791 def OnActivate(self, event):
794 self.log.info("OnActivate: %s" % self.GetItemText(self.item) + "\n")
799 def OnHyperLink(self, event):
801 item = event.GetItem()
803 self.log.info("OnHyperLink: %s" % self.GetItemText(self.item) + "\n")
806 def OnTextCtrl(self, event):
808 char = chr(event.GetKeyCode())
809 self.log.info("EDITING THE TEXTCTRL: You Wrote '" + char + \
810 "' (KeyCode = " + str(event.GetKeyCode()) + ")\n")
814 def OnComboBox(self, event):
816 selection = event.GetEventObject().GetValue()
817 self.log.info("CHOICE FROM COMBOBOX: You Chose '" + selection + "'\n")