def __init__(self, *args, **kwargs): RegisterBrowser.__init__(self, *args, **kwargs) self.__dBController = None self.__limit = 100 self.__localVeto = False self.__binaryType = None self.__collator = icu.Collator.createInstance(icu.Locale('pl_PL.UTF-8'))
def _element_selected(self, elementId, notify=True): log.log("EntryRegisterBrowser._element_selected", [elementId, notify, self.__level], 0) if self.__level == "FICHE": RegisterBrowser._element_selected(self, elementId, notify=notify) else: self.__selectedElement = elementId log.log("EntryRegisterBrowser._element_selected return", [], 1)
def reset(self): log.log("EntryRegisterBrowser.reset", [], 0) RegisterBrowser.reset(self) self.__level = "ENTRY" self.__stack = [] self.__selectedElement = None log.log("EntryRegisterBrowser.reset return", [], 1)
def incrementalAdd(self, hint): log.log("HintRegisterBrowser.incrementalAdd", [hint], 0) #c = Counter() if not self._initialized: log.log("HintRegisterBrowser.incrementalAdd return", [], 2) return if not self._smart: self.reinitialize() ind = self.__binaryFind(hint) RegisterBrowser._select(self, ind, veto=True) log.log("HintRegisterBrowser.incrementalAdd return", [], 3) return ind = self.__binaryFind(hint) if ind == len(self.__hints): #self._items.append(len(self._items)) self._elements.append(stru(hint)) self._elementLabels.append(ustr(hint)) else: #self._items.insert(ind, ind) self._elements.insert(ind, stru(hint)) self._elementLabels.insert(ind, ustr(hint)) self._itemsNo += 1 #print c self._reloadSelect(ind, veto=True) log.log("HintRegisterBrowser.incrementalAdd return", [], 1)
def reset(self): log.log("WindowRegisterBrowser.reset", [], 0) RegisterBrowser.reset(self) self._window = 0 self._windowVeto = False # czy self._reg = None cos psuje? log.log("WindowRegisterBrowser.reset return", [], 1)
def _element_selected(self, elementId, notify=True): log.log("StructureRegisterBrowser._element_selected", [elementId, notify], 0) if self.__ficheLevel: RegisterBrowser._element_selected(self, elementId, notify=notify) else: self.__element = self.__register.getNodeById(elementId) log.log("StructureRegisterBrowser._element_selected return", [self.__element], 1)
def reset(self): log.log("StructreRegisterBrowser.reset", [], 0) RegisterBrowser.reset(self) self.__binaryAvailable = False self.__register = None self.__ficheLevel = False self.__element = None self.__path = "" log.log("StructureRegisterBrowser.reset return", [], 1)
def reset(self): RegisterBrowser.reset(self) self.__level = "ENTRY" self.__selectedElement = None self.__index = 0 self.__entry = None self.__next = None self.__noLocate = False self.__binaryTarget = None self.__leftTargetBinary = False
def _nextFicheNotFound(self): log.op("StructureRegisterBrowser._nextFicheNotFound", [], 0) fiche = self.__register.findNextFiche(self.__element) if fiche != None: self.__element = fiche.getParent() self.__selectStructureNode(self.__element) itemId = self._element2item[fiche.getId()] self._unselect(self._selected) self._select(itemId, veto=True) RegisterBrowser._element_selected(self, fiche.getId(), notify=False) log.op("StructureRegisterBrowser._nextFicheNotFound return", [], 1)
def _reloadSelect(self, itemId, veto=False): log.log("WindowRegisterBrowser._reloadSelect", [self._smart], 0) if not self._smart: log.log("WindowRegisterBrowser._reloadSelect return", [], 2) return # TODO: A co wtedy - chyba niepotrzebne bo i tak robimy reinitialize w incrementalAdd # jedyny problem moze sie pojawic wtedy kiedy wykaz po incrementalAdd robi sie nagle # smart? self._scrollBrowser(itemId) RegisterBrowser._select(self, itemId, veto=veto) log.log("WindowRegisterBrowser._reloadSelect return", [], 1)
def _select(self, itemId, veto=False): #mapsafe #print itemId, self._window, self.__len log.log("WindowRegisterBrowser._select", [itemId, veto, self._window, self._smart], 0) if self._smart and (itemId < self._window or itemId >= self.LIMIT() + self._window): #print "tu" self._scrollBrowser(itemId) #print "ok" RegisterBrowser._select(self, itemId, veto=veto) log.log("WindowRegisterBrowser._select return", [], 1)
def find(self, text): log.log("WindowRegisterBrowser.find", [text], 0) if not self._smart: RegisterBrowser.find(self, text) else: itemId = self._findItem(text) #assert(itemId != -1) if itemId != -1: if self._selected != None: self._unselect(self._selected) self._select(itemId) log.log("WindowRegisterBrowser.find return", [], 1)
def _elementOf(self, itemId): if not self._smart: return RegisterBrowser._elementOf(self, itemId) try: res = self._elements[itemId] return res except IndexError: return None
def setRegister(self, reg, getEntry=None): #from maleks.maleks.useful import Counter #c = Counter() #g = Counter() log.log("WindowRegisterBrowser.setRegister", [reg, getEntry], 0) #print len(reg), self.LIMIT() self._reg = reg self.__entryGetter = getEntry if len(reg) < 2 * self.LIMIT(): #TODO: !A nie obsluguje hint_browsera?" self._smart = False RegisterBrowser.setRegister(self, reg, getEntry=getEntry) else: #print "els", c self._smart = True self.reset() i = 0 #print "init", c self._itemsNo = 0 for element in reg: # dla kazdej fiszki w wykazie utworz odpowiedni element i wypelnij slowniki if i < self.LIMIT(): self.InsertStringItem(i, self._shownLabel(element)) self.SetStringItem(i, 1, "") self.SetStringItem(i, 2, "") self.SetStringItem(i, 3, self._secondColumn(element, getEntry)) self._elementLabels.append(ustr(self._label(element))) #self._items.append(i) # identyfikator elementu jest jednoczesnie jego indeksem w tablicy _items #self._item2element.setdefault(i, self._id(element)) #self._element2item.setdefault(self._id(element), i) self._itemsNo += 1 self._elements.append( self._id(element) ) # TODO: A uporzadkowac (label powyzej nie potrzebny, tu wrzucic element a id czytac przez funkcje) self._customElementInitialization(element, i) i += 1 #print i, c self._window = 0 self.SetColumnWidth( 0, wx.LIST_AUTOSIZE) # dopasuj szerokosc kolumn do self.SetColumnWidth(3, wx.LIST_AUTOSIZE) # ich zawartosci self._initialized = True #print "koniec", c #print "po", g log.log("WindowRegisterBrowser.setRegister return", [], 1)
def onSelect(self, event): #mapsafe log.op("WindowRegisterBrowser.onSelect", [self._elementOf(self._unmap(event.GetIndex())), self._smart], 0) if (not self._smart) or self._windowVeto: RegisterBrowser.onSelect(self, event) else: rawItemId = event.GetIndex() itemId = self._unmap(rawItemId) if rawItemId / float(self.LIMIT()) < 0.25 or rawItemId / float( self.LIMIT()) > 0.75: self._scrollBrowser(itemId) self._windowVeto = True self._select(itemId) self._windowVeto = False else: RegisterBrowser.onSelect(self, event) log.opr("WindowRegisterBrowser.onSelect return", [], 1)
def getNextFiche(self, entry=None): if self._selected == None: # TODO: C kiedy? return #print self.__entry, entry if (self.__entry == None and entry == "") or (self.__entry != None and (self.__entry == entry or (entry == "" and self._selected != self._items[0] and self._selected != self._items[-1]))): #print "nie trzeba" RegisterBrowser.getNextFiche(self) else: itemId = self.GetNextItem(self._selected) if itemId != -1: ficheId = self._item2element[itemId] self.locate(ficheId) #print "znaleziono fiszke" return else: #:if self.__next != None: #: self.locate(ficheId) #:else: #print "nie bylo nastepnej fiszki" self.initialize() for l in self._listeners: l.on_structure_element_selected("")
def onSelect(self, event): #print "reg select" if self._binary: #self.stopBinarySearch() for l in self._listeners: l.stop_binary_search() if self._veto: return if self.__localVeto: RegisterBrowser.onSelect(self, event) elif self.__level in ["FICHE-ENTRY", "FICHE-GAP"]: itemId = event.GetIndex() element = self._item2element[itemId] entry = None for l in self._listeners: entry = l.request_entry_change() if entry != None and not (self.__noLocate): if not ((self.__entry == None and entry == u"") or (self.__entry != None and (self.__entry == entry or (entry == u"" and self._selected != self._items[0] and self._selected != self._items[-1])))): for l in self._listeners: l.locate_needed(element) RegisterBrowser.onSelect(self, event) return ind = self.__index + self._items.index(itemId) - self.__limit / 2 if ind < 0: ind = 0 #print self._items.index(itemId), len(self._items), itemId if (self._items.index(itemId) / float(len(self._items)) < 0.25 or self._items.index(itemId) / float(len(self._items)) > 0.75) and len(self._items) > 1: if self.__level == "FICHE-GAP": (elements, self.__index, self.__next) = self.__dBController.getFichesForGap(self.__selectedElement[1], self.__selectedElement[2], self.__limit, ind, len(self._items)) else: (elements, self.__index, self.__next) = self.__dBController.getFichesForEntry(self.__selectedElement, self.__limit, ind, len(self._items)) self.DeleteAllItems() self.__fillRegister(elements) itemId = self._element2item[element] self.__localVeto = True self.__noLocate = True self._select(itemId) self.__noLocate = False self.__localVeto = False else: RegisterBrowser.onSelect(self, event) else: itemId = event.GetIndex() element = self._item2element[itemId] for l in self._listeners: l.on_structure_element_selected(self.__text(element)) RegisterBrowser.onSelect(self, event)
def DeleteAllItems(self): log.log("WindowRegisterBrowser.DeleteAllItems", [], 0) RegisterBrowser.DeleteAllItems(self) self._elements = [] self._elementLabels = [] log.log("WindowRegisterBrowser.DeleteAllItems return", [], 1)
def select(self, elementId): if self.__level in ["FICHE-ENTRY", "FICHE-GAP"]: self.__noLocate = True RegisterBrowser.select(self, elementId) self.__noLocate = False
def __init__(self, *args, **kwargs): RegisterBrowser.__init__(self, *args, **kwargs) self.__dBController = None
def __init__(self, *args, **kwargs): RegisterBrowser.__init__(self, *args, **kwargs) self._reg = None self.__entryGetter = None self._smart = True self.Bind(wx.EVT_KEY_UP, self.__onKeyUp, self)
def select(self, elementId): log.log("EntryRegisterBrowser.select", [elementId, self.__level], 0) if self.__level == "FICHE": RegisterBrowser.select(self, elementId) log.log("EntryRegisterBrowser.select return", [], 1)
def __init__(self, *args, **kwargs): RegisterBrowser.__init__(self, *args, **kwargs)
def _itemOf(self, elementId): if not self._smart: return RegisterBrowser._itemOf(self, elementId) return self._elements.index(elementId)
def _element_selected(self, element, notify=True): if self.__level in ["FICHE-ENTRY", "FICHE-GAP"]: RegisterBrowser._element_selected(self, element, notify=notify) else: self.__selectedElement = element
def select(self, elementId): log.log("StructureRegisterBrowser.select", [elementId], 0) if self.__ficheLevel: RegisterBrowser.select(self, elementId) log.log("StructureRegisterBrowser.select return", [], 1)
def onSelect(self, event): log.op("StructureRegisterBrowser.onSelect", [self._elementOf(self._unmap(event.GetIndex()))], 0) RegisterBrowser.onSelect(self, event) log.opr("StructureRegisterBrowser.onSelect return", [], 1)