-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStreamTextEdit.py
More file actions
108 lines (85 loc) · 3.73 KB
/
StreamTextEdit.py
File metadata and controls
108 lines (85 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import PyQt5
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtGui import QKeySequence
from nldslfuncs import nldslparser
from importlib import reload
import sys
import traceback
import threading
class UpdateThread(QtCore.QThread):
data_downloaded = QtCore.pyqtSignal(object)
def __init__(self,sql=False):
self.inputtext: str = ""
self.inputfield: QtWidgets.QTextEdit
self.sql = sql
self.result = ""
self.refreshcounter = 0
QtCore.QThread.__init__(self)
def run(self):
while(False):
self.msleep(500)
print("refreshing " + str(self.refreshcounter))
self.refreshcounter += 1
nldslfuncs = reload(nldslparser)
result = nldslparser.nldslparse(self.inputfield.toPlainText(),self.sql)
self.data_downloaded.emit(result)
class StreamTextEdit(QtWidgets.QTextEdit):
def __init__(self, parent,sql=False):
self.lastselectedIndex: int = 0 # shows the first entry as default
self.refreshcounter: int = 0
self.outputfeld: QtWidgets.QTextEdit
self.suggestlist: QtWidgets.QListWidget
self.currentsuggestions = []
self.currentinput: str = ""
self.refreshthread: UpdateThread
self.sql = sql
super().__init__(parent=parent)
self.setSizePolicy(PyQt5.QtWidgets.QSizePolicy.Expanding, PyQt5.QtWidgets.QSizePolicy.Expanding)
self.show()
def setSuggestlist(self,liste : QtWidgets.QListWidget):
self.suggestlist = liste
self.suggestlist.itemSelectionChanged.connect(self.showSelectedSuggestion)
def showSelectedSuggestion(self):
#read the current selected index. If there is one, change the last selected index
if len(self.suggestlist.selectedIndexes()) != 0:
self.lastselectedIndex = self.suggestlist.selectedIndexes()[0].row()
try:
#it can happen, that the last selected doesnt exist anymore:
if self.lastselectedIndex +1 > len(self.currentsuggestions):
self.lastselectedIndex = len(self.currentsuggestions) -1
self.outputfeld.setText(str(self.currentsuggestions[self.lastselectedIndex]["result"]))
# self.outputfeld.setText(self.outputfeld.toPlainText() + " " + str(self.refreshcounter))
except:
exc_type, exc_value, exc_traceback = sys.exc_info()
traceback.print_exc(file=sys.stdout)
self.outputfeld.setText(traceback.format_exc())
def startBackgroundThread(self):
self.refreshthread = UpdateThread()
self.refreshthread.inputfield = self
self.refreshthread.data_downloaded.connect(self.refreshViews)
self.refreshthread.start()
# self.refreshthread = threading.Thread(target=self.reloadData)
# self.refreshthread.start()
def reloadData(self):
# print("refreshing " + str(self.refreshcounter))
self.refreshcounter += 1
nldslfuncs = reload(nldslparser)
self.currentsuggestions = nldslparser.nldslparse(self.toPlainText(),self.sql)
def refreshViews(self,daten=None):
if daten is not None:
self.currentsuggestions = daten
self.suggestlist.clear()
for eintrag in self.currentsuggestions:
self.suggestlist.addItem(eintrag["suggestion"] + " " + str(eintrag["chance"]))
self.showSelectedSuggestion() # default is index 0
def refreshPage(self):
#refresh
self.reloadData()
self.refreshViews()
def keyReleaseEvent(self, event):
self.refreshPage()
if event.key() == 16777220: #PyQt5.QtCore.Qt.Key_Enter:
print("enter gedrück")
# self.get_and_send()
# else:
super().keyReleaseEvent(event)