Getting keyboards to show up
authorEd Page <eopage@byu.net>
Sat, 10 Jul 2010 11:51:09 +0000 (06:51 -0500)
committerEd Page <eopage@byu.net>
Sat, 10 Jul 2010 11:51:09 +0000 (06:51 -0500)
src/ejpi_qt.py
src/libraries/qtpie.py
src/libraries/qtpieboard.py

index c39411b..c3068f1 100755 (executable)
@@ -267,9 +267,7 @@ class MainWindow(object):
                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)
@@ -350,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())
@@ -404,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 = []
index 7b981c1..3f1ecec 100755 (executable)
@@ -480,6 +480,8 @@ class QPieButton(QtGui.QWidget):
        aboutToShow = QtCore.pyqtSignal()
        aboutToHide = QtCore.pyqtSignal()
 
+       BUTTON_RADIUS = 24
+
        def __init__(self, buttonSlice, parent = None):
                QtGui.QWidget.__init__(self, parent)
                self._cachedCenterPosition = self.rect().center()
@@ -490,9 +492,9 @@ class QPieButton(QtGui.QWidget):
 
                self._buttonFiling = PieFiling()
                self._buttonFiling.set_center(buttonSlice)
+               # @todo Figure out how to make the button auto-fill to content
+               self._buttonFiling.setOuterRadius(self.BUTTON_RADIUS)
                self._buttonArtist = PieArtist(self._buttonFiling)
-               centerSize = self._buttonArtist.centerSize()
-               self._buttonFiling.setOuterRadius(max(centerSize.width(), centerSize.height()))
                self._poppedUp = False
 
                self._mousePosition = None
@@ -531,6 +533,12 @@ class QPieButton(QtGui.QWidget):
        def setOuterRadius(self, radius):
                self._filing.setOuterRadius(radius)
 
+       def buttonRadius(self):
+               return self._buttonFiling.outerRadius()
+
+       def setButtonRadius(self, radius):
+               self._buttonFiling.setOuterRadius(radius)
+
        def sizeHint(self):
                return self._buttonArtist.pieSize()
 
@@ -612,7 +620,6 @@ class QPieButton(QtGui.QWidget):
 
        @misc_utils.log_exception(_moduleLogger)
        def showEvent(self, showEvent):
-               self._buttonFiling.setOuterRadius(max(self.size().width(), self.size().height()) / 2)
                self._buttonArtist.show(self.palette())
                self._cachedCenterPosition = self.rect().center()
 
index f51cbb7..bdd6e35 100755 (executable)
@@ -59,6 +59,14 @@ class PieKeyboard(object):
        def toplevel(self):
                return self._layout
 
+       def show(self):
+               for cell in self.__cells.itervalues():
+                       cell.show()
+
+       def hide(self):
+               for cell in self.__cells.itervalues():
+                       cell.hide()
+
        def add_pie(self, row, column, pieButton):
                assert len(pieButton) == 8
                self._layout.addWidget(pieButton, row, column)