예제 #1
0
	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'))
예제 #2
0
	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)
예제 #3
0
	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)
예제 #4
0
 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)
예제 #6
0
	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)
예제 #7
0
	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)
예제 #8
0
	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
예제 #9
0
	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)
예제 #16
0
	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("")
예제 #17
0
	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)
예제 #19
0
	def select(self, elementId):
		if self.__level in ["FICHE-ENTRY", "FICHE-GAP"]:
			self.__noLocate = True
			RegisterBrowser.select(self, elementId)
			self.__noLocate = False
예제 #20
0
	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)
예제 #22
0
	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)	
예제 #23
0
	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)
예제 #25
0
	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
예제 #26
0
	def select(self, elementId):
		log.log("StructureRegisterBrowser.select", [elementId], 0)
		if self.__ficheLevel:
			RegisterBrowser.select(self, elementId)
		log.log("StructureRegisterBrowser.select return", [], 1)
예제 #27
0
	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)