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 wdc = menu.Append(wx.ID_ANY, u"Nuage de mots")
320 menu.AppendSeparator()
321 self.Bind(wx.EVT_MENU, self.OnAlceste, alceste)
322 self.Bind(wx.EVT_MENU, self.OnPam, pam)
323 self.Bind(wx.EVT_MENU, self.OnStat, stat)
324 self.Bind(wx.EVT_MENU, self.OnSpec, spec)
325 self.Bind(wx.EVT_MENU, self.OnSimiTxt, simi)
326 self.Bind(wx.EVT_MENU, self.OnWordCloud, wdc)
328 itemdelete = menu.Append(wx.ID_ANY, "Supprimer de l'historique")
329 if item == self.GetRootItem():
330 itemdelete.Enable(False)
331 #item11 = menu.Append(wx.ID_ANY, "Prepend An Item")
332 #item12 = menu.Append(wx.ID_ANY, "Append An Item")
334 #self.Bind(wx.EVT_MENU, self.OnItemBackground, item1)
335 #self.Bind(wx.EVT_MENU, self.OnItemForeground, item2)
336 #self.Bind(wx.EVT_MENU, self.OnItemBold, item3)
337 #self.Bind(wx.EVT_MENU, self.OnItemFont, item4)
338 #self.Bind(wx.EVT_MENU, self.OnItemHyperText, item5)
339 #self.Bind(wx.EVT_MENU, self.OnEnableWindow, item6)
340 #self.Bind(wx.EVT_MENU, self.OnDisableItem, item7)
341 #self.Bind(wx.EVT_MENU, self.OnItemIcons, item8)
342 self.Bind(wx.EVT_MENU, self.OnItemInfo, info)
343 self.Bind(wx.EVT_MENU, self.OnItemDelete, itemdelete)
344 #self.Bind(wx.EVT_MENU, self.OnItemPrepend, item11)
345 #self.Bind(wx.EVT_MENU, self.OnItemAppend, item12)
350 def getcorpus(self, itemdict):
351 if itemdict['pydata']['uuid'] in self.parent.history.openedcorpus :
352 return copycorpus(self.parent.history.openedcorpus[itemdict['pydata']['uuid']])
354 return Corpus(self.parent, parametres = DoConf(itemdict['pydata']['ira']).getoptions('corpus'), read = True)
356 def OnSpec(self, evt) :
357 self.parent.OnTextSpec(evt, self.getcorpus(self.itemdict))
359 def OnStat(self, evt) :
360 self.parent.OnTextStat(evt, self.getcorpus(self.itemdict))
362 def OnAlceste(self, evt) :
363 self.parent.OnTextAlceste(evt, self.getcorpus(self.itemdict))
365 def OnPam(self, evt) :
368 def OnSimiTxt(self, evt) :
369 self.parent.OnSimiTxt(evt, self.getcorpus(self.itemdict))
371 def OnWordCloud(self, evt) :
372 self.parent.OnWordCloud(evt, self.getcorpus(self.itemdict))
374 def OnItemBackground(self, event):
376 colourdata = wx.ColourData()
377 colourdata.SetColour(self.itemdict["back"])
378 dlg = wx.ColourDialog(self, colourdata)
380 dlg.GetColourData().SetChooseFull(True)
382 if dlg.ShowModal() == wx.ID_OK:
383 data = dlg.GetColourData()
384 col1 = data.GetColour().Get()
385 self.SetItemBackgroundColour(self.current, col1)
389 def OnItemForeground(self, event):
391 colourdata = wx.ColourData()
392 colourdata.SetColour(self.itemdict["fore"])
393 dlg = wx.ColourDialog(self, colourdata)
395 dlg.GetColourData().SetChooseFull(True)
397 if dlg.ShowModal() == wx.ID_OK:
398 data = dlg.GetColourData()
399 col1 = data.GetColour().Get()
400 self.SetItemTextColour(self.current, col1)
404 def OnItemBold(self, event):
406 self.SetItemBold(self.current, not self.itemdict["isbold"])
409 def OnItemFont(self, event):
412 font = self.itemdict["font"]
415 font = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
417 data.SetInitialFont(font)
419 dlg = wx.FontDialog(self, data)
421 if dlg.ShowModal() == wx.ID_OK:
422 data = dlg.GetFontData()
423 font = data.GetChosenFont()
424 self.SetItemFont(self.current, font)
429 def OnItemHyperText(self, event):
431 self.SetItemHyperText(self.current, not self.itemdict["ishtml"])
434 def OnEnableWindow(self, event):
436 enable = self.GetItemWindowEnabled(self.current)
437 self.SetItemWindowEnabled(self.current, not enable)
440 def OnDisableItem(self, event):
442 self.EnableItem(self.current, False)
445 def OnItemIcons(self, event):
447 bitmaps = [self.itemdict["normal"], self.itemdict["selected"],
448 self.itemdict["expanded"], self.itemdict["selexp"]]
451 dlg = TreeIcons(self, -1, bitmaps=bitmaps)
456 def SetNewIcons(self, bitmaps):
458 self.SetItemImage(self.current, bitmaps[0], CT.TreeItemIcon_Normal)
459 self.SetItemImage(self.current, bitmaps[1], CT.TreeItemIcon_Selected)
460 self.SetItemImage(self.current, bitmaps[2], CT.TreeItemIcon_Expanded)
461 self.SetItemImage(self.current, bitmaps[3], CT.TreeItemIcon_SelectedExpanded)
464 def OnItemInfo(self, event):
466 itemtext = self.itemdict["text"]
467 numchildren = str(self.itemdict["children"])
468 itemtype = self.itemdict["itemtype"]
469 pydata = self.itemdict['pydata']
470 if 'analyses' in pydata :
471 toshow = dict([[val, pydata[val]] for val in pydata if val not in['analyses', 'isload']])
474 pydata = DoConf().totext(toshow)
479 itemtype = "CheckBox"
481 itemtype = "RadioButton"
483 strs = "Information On Selected Item:\n\n" + "Text: " + itemtext + "\n" \
484 "Number Of Children: " + numchildren + "\n" \
485 "Item Type: " + itemtype + "\n" \
486 "Item Data Type: " + pydata + "\n"
488 dlg = wx.MessageDialog(self, strs, "CustomTreeCtrlDemo Info", wx.OK | wx.ICON_INFORMATION)
494 def OnItemDelete(self, event):
496 strs = "Are You Sure You Want To Delete Item " + self.GetItemText(self.current) + "?"
497 dlg = wx.MessageDialog(None, strs, 'Deleting Item', wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_QUESTION)
499 if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
505 pydata = self.itemdict['pydata']
506 if 'corpus_name' in pydata :
507 self.history.delete(pydata['uuid'], True)
509 self.history.delete(pydata['uuid'])
510 self.DeleteChildren(self.current)
511 self.Delete(self.current)
516 def OnItemPrepend(self, event):
518 dlg = wx.TextEntryDialog(self, "Please Enter The New Item Name", 'Item Naming', 'Python')
520 if dlg.ShowModal() == wx.ID_OK:
521 newname = dlg.GetValue()
522 newitem = self.PrependItem(self.current, newname)
523 self.EnsureVisible(newitem)
527 def AddAnalyse(self, parametres, itemParent = None) :
528 uuid = parametres['corpus']
529 if itemParent is None :
530 itemParent = self.root
531 child, cookie = self.GetFirstChild(itemParent)
533 pydata = self.GetPyData(child)
534 if pydata['uuid'] == uuid :
537 self.GiveFocus(child, uuid)
538 child, cookie = self.GetNextChild(itemParent, cookie)
539 item = self.AppendItem(corpus, parametres['name'])
540 self.SetPyData(item, parametres)
541 self.SetItemImage(item, 24, CT.TreeItemIcon_Normal)
542 self.SetItemImage(item, 13, CT.TreeItemIcon_Expanded)
543 self.SetItemBold(item, True)
545 def OnItemAppend(self, item):
546 child = self.AppendItem(self.root, item['corpus_name'])
547 self.SetPyData(child, item)
548 self.history.addtab(item)
549 self.SetItemImage(child, 24, CT.TreeItemIcon_Normal)
550 self.SetItemImage(child, 13, CT.TreeItemIcon_Expanded)
551 self.SetItemBold(child, True)
553 #dlg = wx.TextEntryDialog(self, "Please Enter The New Item Name", 'Item Naming', 'Python')
555 #if dlg.ShowModal() == wx.ID_OK:
556 # newname = dlg.GetValue()
557 # newitem = self.AppendItem(self.current, newname)
558 # self.EnsureVisible(newitem)
564 def OnBeginEdit(self, event):
566 #self.log.info("OnBeginEdit" + "\n")
567 # show how to prevent edit...
568 item = event.GetItem()
569 if item and self.GetItemText(item) == "The Root Item":
571 #self.log.info("You can't edit this one..." + "\n")
573 # Lets just see what's visible of its children
575 root = event.GetItem()
576 (child, cookie) = self.GetFirstChild(root)
579 #self.log.info("Child [%s] visible = %d" % (self.GetItemText(child), self.IsVisible(child)) + "\n")
580 (child, cookie) = self.GetNextChild(root, cookie)
585 def OnEndEdit(self, event):
587 #self.log.info("OnEndEdit: %s %s" %(event.IsEditCancelled(), event.GetLabel()))
588 # show how to reject edit, we'll not allow any digits
589 for x in event.GetLabel():
590 if x in string.digits:
591 #self.log.info(", You can't enter digits..." + "\n")
598 def OnLeftDClick(self, event):
600 pt = event.GetPosition()
601 item, flags = self.HitTest(pt)
602 pydata = self.GetPyData(item)
603 if pydata['uuid'] in self.parent.history.opened :
604 for i in range(self.parent.nb.GetPageCount()) :
605 page = self.parent.nb.GetPage(i)
606 if 'parametres' in dir(page) :
607 if page.parametres['uuid'] == pydata['uuid'] :
608 self.parent.nb.SetSelection(i)
611 OpenAnalyse(self.parent, pydata)
612 self.SetItemBold(item, True)
613 #if item and (flags & CT.TREE_HITTEST_ONITEMLABEL):
614 # if self.GetAGWWindowStyleFlag() & CT.TR_EDIT_LABELS:
615 # self.log.info("OnLeftDClick: %s (manually starting label edit)"% self.GetItemText(item) + "\n")
617 #self.EditLabel(item)
619 # pydata = self.GetPyData(item)
621 # self.log.info("OnLeftDClick: Cannot Start Manual Editing, Missing Style TR_EDIT_LABELS\n")
626 def OnItemExpanded(self, event):
628 item = event.GetItem()
630 self.log.info("OnItemExpanded: %s" % self.GetItemText(item) + "\n")
633 def OnItemExpanding(self, event):
635 item = event.GetItem()
637 self.log.info("OnItemExpanding: %s" % self.GetItemText(item) + "\n")
642 def OnItemCollapsed(self, event):
644 item = event.GetItem()
646 self.log.info("OnItemCollapsed: %s" % self.GetItemText(item) + "\n")
649 def OnItemCollapsing(self, event):
651 item = event.GetItem()
653 self.log.info("OnItemCollapsing: %s" % self.GetItemText(item) + "\n")
658 def OnSelChanged(self, event):
659 item = event.GetItem()
660 pydata = self.GetPyData(item)
661 if pydata is not None :
662 if pydata['uuid'] in self.parent.history.opened :
663 for i in range(self.parent.nb.GetPageCount()) :
664 page = self.parent.nb.GetPage(i)
665 if 'parametres' in dir(page) :
666 if page.parametres['uuid'] == pydata['uuid'] :
667 self.parent.nb.SetSelection(i)
670 #self.item = event.GetItem()
673 #self.log.info("OnSelChanged: %s" % self.GetItemText(self.item))
674 # if wx.Platform == '__WXMSW__':
675 # self.log.info(", BoundingRect: %s" % self.GetBoundingRect(self.item, True) + "\n")
680 def OnSelChanging(self, event):
682 item = event.GetItem()
683 olditem = event.GetOldItem()
689 olditemtext = self.GetItemText(olditem)
690 self.log.info("OnSelChanging: From %s" % olditemtext + " To %s" % self.GetItemText(item) + "\n")
695 def OnBeginDrag(self, event):
697 self.item = event.GetItem()
699 self.log.info("Beginning Drag..." + "\n")
704 def OnBeginRDrag(self, event):
706 self.item = event.GetItem()
708 self.log.info("Beginning Right Drag..." + "\n")
713 def OnEndDrag(self, event):
715 self.item = event.GetItem()
717 self.log.info("Ending Drag!" + "\n")
722 def OnDeleteItem(self, event):
724 item = event.GetItem()
729 self.log.info("Deleting Item: %s" % self.GetItemText(item) + "\n")
733 def OnItemCheck(self, event):
735 item = event.GetItem()
736 self.log.info("Item " + self.GetItemText(item) + " Has Been Checked!\n")
740 def OnItemChecking(self, event):
742 item = event.GetItem()
743 self.log.info("Item " + self.GetItemText(item) + " Is Being Checked...\n")
747 def OnToolTip(self, event):
749 item = event.GetItem()
751 event.SetToolTip(wx.ToolTip(self.GetItemText(item)))
754 def OnItemMenu(self, event):
756 item = event.GetItem()
758 self.log.info("OnItemMenu: %s" % self.GetItemText(item) + "\n")
763 def OnKey(self, event):
765 keycode = event.GetKeyCode()
766 keyname = keyMap.get(keycode, None)
768 if keycode == wx.WXK_BACK:
769 self.log.info("OnKeyDown: HAHAHAHA! I Vetoed Your Backspace! HAHAHAHA\n")
773 if "unicode" in wx.PlatformInfo:
774 keycode = event.GetUnicodeKey()
776 keycode = event.GetKeyCode()
777 keyname = "\"" + unichr(event.GetUnicodeKey()) + "\""
779 keyname = "Ctrl-%s" % chr(ord('A') + keycode-1)
785 keyname = "Ctrl-%s" % chr(ord('A') + keycode-1)
787 keyname = "\"%s\"" % chr(keycode)
789 keyname = "unknown (%s)" % keycode
791 self.log.info("OnKeyDown: You Pressed '" + keyname + "'\n")
796 def OnActivate(self, event):
799 self.log.info("OnActivate: %s" % self.GetItemText(self.item) + "\n")
804 def OnHyperLink(self, event):
806 item = event.GetItem()
808 self.log.info("OnHyperLink: %s" % self.GetItemText(self.item) + "\n")
811 def OnTextCtrl(self, event):
813 char = chr(event.GetKeyCode())
814 self.log.info("EDITING THE TEXTCTRL: You Wrote '" + char + \
815 "' (KeyCode = " + str(event.GetKeyCode()) + ")\n")
819 def OnComboBox(self, event):
821 selection = event.GetEventObject().GetValue()
822 self.log.info("CHOICE FROM COMBOBOX: You Chose '" + selection + "'\n")