Getting keyboards to show up
[ejpi] / src / ejpi_qt.py
index bae3116..c3068f1 100755 (executable)
@@ -196,15 +196,18 @@ class QValueEntry(object):
 
        def __init__(self):
                self._widget = QtGui.QLineEdit("")
-               self._widget.setInputMethodHints(QtCore.Qt.ImhPreferNumbers)
-               self._actualEntryDisplay = ""
+               maeqt.mark_numbers_preferred(self._widget)
 
        @property
        def toplevel(self):
                return self._widget
 
+       @property
+       def entry(self):
+               return self._widget
+
        def get_value(self):
-               value = self._actualEntryDisplay.strip()
+               value = str(self._widget.text()).strip()
                if any(
                        0 < value.find(whitespace)
                        for whitespace in string.whitespace
@@ -220,7 +223,6 @@ class QValueEntry(object):
                        for whitespace in string.whitespace
                ):
                        raise ValueError('Invalid input "%s"' % value)
-               self._actualEntryDisplay = value
                self._widget.setText(value)
 
        def append(self, value):
@@ -258,15 +260,14 @@ class MainWindow(object):
                self._errorDisplay = QErrorDisplay()
                self._historyView = qhistory.QCalcHistory(self._errorDisplay)
                self._userEntry = QValueEntry()
+               self._userEntry.entry.returnPressed.connect(self._on_push)
 
                self._controlLayout = QtGui.QVBoxLayout()
                self._controlLayout.addLayout(self._errorDisplay.toplevel)
                self._controlLayout.addWidget(self._historyView.toplevel)
                self._controlLayout.addWidget(self._userEntry.toplevel)
 
-               self._pluginKeyboardSpot = QtGui.QVBoxLayout()
                self._inputLayout = QtGui.QVBoxLayout()
-               self._inputLayout.addLayout(self._pluginKeyboardSpot)
 
                self._layout = QtGui.QHBoxLayout()
                self._layout.addLayout(self._controlLayout)
@@ -347,12 +348,14 @@ class MainWindow(object):
                self._keyboardPlugins.enable_plugin(builtinKeyboardId)
                self._builtinPlugin = self._keyboardPlugins.keyboards["Builtin"].construct_keyboard()
                self._builtinKeyboard = self._builtinPlugin.setup(self._history, self._handler)
-               self._inputLayout.addLayout(self._builtinKeyboard.toplevel)
 
                # Plugins
                self.enable_plugin(self._keyboardPlugins.lookup_plugin("Trigonometry"))
                self.enable_plugin(self._keyboardPlugins.lookup_plugin("Computer"))
                self.enable_plugin(self._keyboardPlugins.lookup_plugin("Alphabet"))
+               self._inputLayout.addLayout(self._builtinKeyboard.toplevel)
+               for keyboardData in self._activeKeyboards:
+                       keyboardData["pluginKeyboard"].hide()
                self._set_plugin_kb(0)
 
                self.set_fullscreen(self._app.fullscreenAction.isChecked())
@@ -401,15 +404,18 @@ class MainWindow(object):
                        "plugin": plugin,
                        "pluginKeyboard": pluginKeyboard,
                })
+               self._inputLayout.addLayout(pluginKeyboard.toplevel)
 
        def _set_plugin_kb(self, pluginIndex):
                plugin = self._activeKeyboards[pluginIndex]
-               # @todo self._pluginButton.set_label(plugin["pluginName"])
 
-               for i in xrange(self._pluginKeyboardSpot.count()):
-                       self._pluginKeyboardSpot.removeItem(self._pluginKeyboardSpot.itemAt(i))
+               for keyboardData in self._activeKeyboards:
+                       if plugin["pluginName"] != keyboardData["pluginName"]:
+                               keyboardData["pluginKeyboard"].hide()
+
+               # @todo self._pluginButton.set_label(plugin["pluginName"])
                pluginKeyboard = plugin["pluginKeyboard"]
-               self._pluginKeyboardSpot.addItem(pluginKeyboard.toplevel)
+               pluginKeyboard.show()
 
        def _load_history(self):
                serialized = []