Browse Source

Improved List to support Tlogg features

pull/17/head 0.4.0a
Eugenio Parodi 5 years ago
parent
commit
49cb8ddd58
  1. 2
      TermTk/TTkCore/filebuffer.py
  2. 5
      TermTk/TTkCore/helper.py
  3. 7
      TermTk/TTkCore/signal.py
  4. 2
      TermTk/TTkWidgets/TTkPickers/colorpicker.py
  5. 5
      TermTk/TTkWidgets/lineedit.py
  6. 13
      TermTk/TTkWidgets/list.py
  7. 54
      TermTk/TTkWidgets/listwidget.py

2
TermTk/TTkCore/filebuffer.py

@ -159,7 +159,7 @@ class TTkFileBuffer():
rr = re.compile(regex)
with open(self._filename,'r') as infile:
for line in infile:
ma = rr.match(line)
ma = rr.serch(line)
if ma:
indexes.append(id)
id += 1

5
TermTk/TTkCore/helper.py

@ -71,6 +71,11 @@ class TTkHelper:
sc._widget.shortcutEvent()
return
@staticmethod
def updateAll():
if TTkHelper._rootWidget:
TTkHelper._rootWidget.update(repaint=True, updateLayout=True)
@staticmethod
def addUpdateWidget(widget):
if not widget.isVisible(): return

7
TermTk/TTkCore/signal.py

@ -117,4 +117,9 @@ class _pyTTkSignal_obj():
slot(*args, **kwargs)
def clear(self):
self._connected_slots = []
self._connected_slots = []
def forward(self):
def _ret(*args, **kwargs):
self.emit(*args, **kwargs)
return _ret

2
TermTk/TTkWidgets/TTkPickers/colorpicker.py

@ -447,6 +447,6 @@ class TTkColorButtonPicker(_TTkColorButton):
def _colorClicked(self):
colorPicker = TTkColorDialogPicker(pos = (3,3), size=(75,24), color=self._textColor, title="Test Color Picker", border=True)
colorPicker.colorSelected.connect(self.setColor)
colorPicker.colorSelected.connect(lambda c:self.colorSelected.emit(c))
colorPicker.colorSelected.connect(self.colorSelected.emit)
TTkHelper.overlay(self, colorPicker, -1,-1)

5
TermTk/TTkWidgets/lineedit.py

@ -103,6 +103,7 @@ class TTkLineEdit(TTkWidget):
def keyEvent(self, evt):
w = self.width()
baseText = self._text
if evt.type == TTkK.SpecialKey:
# Don't Handle the special tab key
if evt.key == TTkK.Key_Tab:
@ -156,6 +157,8 @@ class TTkLineEdit(TTkWidget):
if self._cursorPos - self._offset > w:
self._offset += 1
self._pushCursor()
# Emit event only if the text changed
if baseText != self._text:
self.textEdited.emit(self._text)
return True
@ -164,4 +167,4 @@ class TTkLineEdit(TTkWidget):
def focusOutEvent(self):
TTkHelper.hideCursor()
self.update()
self.update()

13
TermTk/TTkWidgets/list.py

@ -33,7 +33,10 @@ class TTkList(TTkAbstractScrollArea):
__slots__ = (
'_listView', 'itemClicked', 'textClicked',
# Forwarded Methods
'addItem', 'setSelectionMode', 'selectedLabels', 'setCurrentRow', 'setCurrentItem' )
'items', 'addItem', 'addItemAt', 'indexOf', 'itemAt',
'moveItem', 'removeAt', 'removeItem',
'setSelectionMode', 'selectedItems', 'selectedLabels',
'setCurrentRow', 'setCurrentItem', )
def __init__(self, *args, **kwargs):
TTkAbstractScrollArea.__init__(self, *args, **kwargs)
@ -46,8 +49,16 @@ class TTkList(TTkAbstractScrollArea):
# self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
# Forwearded Methods
self.items = self._listView.items
self.indexOf = self._listView.indexOf
self.itemAt = self._listView.itemAt
self.moveItem = self._listView.moveItem
self.removeAt = self._listView.removeAt
self.removeItem = self._listView.removeItem
self.addItem = self._listView.addItem
self.addItemAt = self._listView.addItemAt
self.setSelectionMode = self._listView.setSelectionMode
self.selectedItems = self._listView.selectedItems
self.selectedLabels = self._listView.selectedLabels
self.setCurrentRow = self._listView.setCurrentRow
self.setCurrentItem = self._listView.setCurrentItem

54
TermTk/TTkWidgets/listwidget.py

@ -143,6 +143,9 @@ class TTkListWidget(TTkAbstractScrollView):
def setSelectionMode(self, mode):
self._selectionMode = mode
def selectedItems(self):
return self._selectedItems
def selectedLabels(self):
return [i.text for i in self._selectedItems]
@ -167,22 +170,53 @@ class TTkListWidget(TTkAbstractScrollView):
return self.size()
def addItem(self, item, data=None):
self.addItemAt(item, len(self._items), data)
def _placeItems(self):
minw = self.width()
for item in self._items:
minw = max(minw,item.minimumWidth())
for y,item in enumerate(self._items):
item.setGeometry(0,y,minw,1)
self.viewChanged.emit()
def addItemAt(self, item, pos, data=None):
if isinstance(item, str):
#label = TTkAbstractListItem(text=item, width=max(len(item),self.width()))
label = TTkAbstractListItem(text=item, data=data)
label.listItemClicked.connect(self._labelSelectedHandler)
return self.addItem(label)
return self.addItemAt(label,pos)
# item.listItemClicked.connect(self._labelSelectedHandler)
self._items.append(item)
_,y,_,h = self.layout().fullWidgetAreaGeometry()
self._items.insert(pos,item)
self.addWidget(item)
item.move(0,y+h)
_,_,fw,_ = self.layout().fullWidgetAreaGeometry()
w = self.width()
for item in self.layout().children():
x,y,_,h = item.geometry()
item.setGeometry(x,y,max(w-1,fw),h)
self.viewChanged.emit()
self._placeItems()
def indexOf(self, item):
for i, it in enumerate(self._items):
if it == item:
return i
return -1
def itemAt(self, pos):
return self._items[pos]
def moveItem(self, fr, to):
fr = max(min(fr,len(self._items)-1),0)
to = max(min(to,len(self._items)-1),0)
tmp = self._items[to]
self._items[to] = self._items[fr]
self._items[fr] = tmp
self._placeItems()
def removeItem(self, item):
self.removeWidget(item)
self._items.remove(item)
if item in self._selectedItems:
self._selectedItems.remove(item)
self._placeItems()
def removeAt(self, pos):
self.removeItem(self._items[pos])
def setCurrentRow(self, row):
if row<len(self._items):

Loading…
Cancel
Save