@@ -70,7 +70,6 @@ def __init__(self, program, keyboardType, receiverLayout, receivers, caller = No
70
70
self .program = program
71
71
self .keyboardType = keyboardType
72
72
self .receivers = receivers
73
- self .selectedReceiver = receivers [0 ]
74
73
75
74
dialog = QDialog (caller )
76
75
self .dialog = dialog
@@ -80,7 +79,6 @@ def __init__(self, program, keyboardType, receiverLayout, receivers, caller = No
80
79
dialog .setModal (True )
81
80
dialog .setFixedWidth (500 )
82
81
dialog .setStyleSheet ('background-color: white;border:1px solid black;' )
83
- self .originalText = self .selectedReceiver .getContent ()
84
82
85
83
# Add drop shadow
86
84
shadow = QGraphicsDropShadowEffect (dialog )
@@ -96,7 +94,18 @@ def __init__(self, program, keyboardType, receiverLayout, receivers, caller = No
96
94
border .iconClicked .connect (self .reject )
97
95
layout .addWidget (border )
98
96
layout .addLayout (receiverLayout )
99
- layout .addWidget (VirtualKeyboard (keyboardType , 42 , self .selectedReceiver , dialog .accept ))
97
+ self .vk = VirtualKeyboard (keyboardType , 42 , receivers [0 ], dialog .accept )
98
+ layout .addWidget (self .vk )
99
+
100
+ restore = []
101
+ index = 0
102
+ for receiver in receivers :
103
+ receiver .field .setContainer (self )
104
+ receiver .index = index
105
+ restore .append (receiver .getContent ())
106
+ index += 1
107
+ self .restore = restore
108
+ self .selectedReceiver = receivers [0 ]
100
109
101
110
# Position at bottom of parent window
102
111
dialog .show () # Ensure geometry is calculated
@@ -108,8 +117,24 @@ def __init__(self, program, keyboardType, receiverLayout, receivers, caller = No
108
117
109
118
dialog .exec ()
110
119
120
+ def setClickSource (self , field ):
121
+ receivers = self .receivers
122
+ index = 0
123
+ for receiver in receivers :
124
+ if receiver .field == field :
125
+ self .selectedReceiver = receiver
126
+ break
127
+ index += 1
128
+
111
129
def reject (self ):
112
- self .selectedReceiver .setContent (self .originalText )
130
+ selectedReceiver = self .selectedReceiver
131
+ receivers = self .receivers
132
+ index = 0
133
+ for receiver in receivers :
134
+ if receiver == selectedReceiver :
135
+ break
136
+ index += 1
137
+ receiver .setContent (self .restore [index ])
113
138
self .dialog .reject ()
114
139
115
140
class TextReceiver ():
@@ -185,11 +210,11 @@ def __init__(self, rows):
185
210
self .addLayout (row )
186
211
187
212
class VirtualKeyboard (QStackedWidget ):
188
- def __init__ (self , keyboardType , buttonHeight , textField , onFinished ):
213
+ def __init__ (self , keyboardType , buttonHeight , receiver , onFinished ):
189
214
super ().__init__ ()
190
215
self .keyboardType = keyboardType
191
216
self .buttonHeight = buttonHeight
192
- self .textField = textField
217
+ self .receiver = receiver
193
218
self .onFinished = onFinished
194
219
self .setStyleSheet ('background-color: #ccc;border:none;' )
195
220
@@ -410,11 +435,14 @@ def addKeyboardLayout3(self):
410
435
container = QWidget ()
411
436
container .setLayout (keyboardView )
412
437
self .addWidget (container )
438
+
439
+ def setClickSource (self , receiver ):
440
+ self .receiver = receiver
413
441
414
442
# Callback functions
415
443
def onClickChar (self ,keycode ):
416
444
# print(f"Key pressed: {keycode}")
417
- self .textField .addCharacter (keycode )
445
+ self .receiver .addCharacter (keycode )
418
446
419
447
def onClickShift (self ,keycode ):
420
448
# print("Shift pressed")
@@ -437,13 +465,13 @@ def onClickSymbols(self,keycode):
437
465
438
466
def onClickBack (self ,keycode ):
439
467
# print("Backspace pressed")
440
- self .textField .backspace ()
468
+ self .receiver .backspace ()
441
469
442
470
def onClickSpace (self ,keycode ):
443
471
# print("Space pressed")
444
- self .textField .addCharacter (' ' )
472
+ self .receiver .addCharacter (' ' )
445
473
446
474
def onClickEnter (self ,keycode ):
447
475
# print("Enter pressed")
448
- if self .keyboardType == 'multiline' : self .textField .addCharacter ('\n ' )
476
+ if self .keyboardType == 'multiline' : self .receiver .addCharacter ('\n ' )
449
477
else : self .onFinished ()
0 commit comments