OllamaInterface/OllamaWidget.py

changeset 13
3fd49d7004b2
parent 12
cf507e6f12d7
child 21
22245a10b118
--- a/OllamaInterface/OllamaWidget.py	Wed Aug 28 18:20:33 2024 +0200
+++ b/OllamaInterface/OllamaWidget.py	Thu Aug 29 10:53:59 2024 +0200
@@ -83,9 +83,6 @@
 
         self.mainSplitter.setSizes([200, 2000, 100])
 
-        self.newChatButton.setEnabled(False)
-        self.__handleServerStateChanged(False)
-
         self.__pullProgressDialog = None
         self.__pulling = False
 
@@ -94,9 +91,12 @@
 
         self.__availableModels = []
 
-        self.__connectClient()
+        self.__initOllamaMenu()
 
-        self.__initOllamaMenu()
+        self.newChatButton.setEnabled(False)
+        self.__handleServerStateChanged(False, "")
+
+        self.__connectClient()
 
         self.sendButton.clicked.connect(self.__sendMessage)
 
@@ -118,22 +118,6 @@
         self.__client.errorOccurred.connect(self.__handleClientError)
         self.__client.finished.connect(self.__handleClientFinished)
 
-    @pyqtSlot(bool)
-    def __handleServerStateChanged(self, ok):
-        """
-        Private slot handling a change in the 'ollama' server responsiveness.
-
-        @param ok flag indicating a responsive 'ollama' server
-        @type bool
-        """
-        if ok:
-            self.__finishSetup()
-        else:
-            self.ollamaVersionLabel.setText(
-                self.tr("<b>Error: The configured server is not responding.</b>")
-            )
-        self.setEnabled(ok)
-
     @pyqtSlot()
     def __finishSetup(self):
         """
@@ -159,10 +143,42 @@
         """
         self.newChatButton.setEnabled(bool(model))
 
+    def __setEnabledState(self, enable):
+        """
+        Private method to set the enabled state of the main widget.
+
+        @param enable enabled state
+        @type bool
+        """
+        for widget in (
+            self.reloadModelsButton,
+            self.modelComboBox,
+            self.newChatButton,
+            self.mainSplitter,
+            self.__modelMenuAct,
+        ):
+            widget.setEnabled(enable)
+
     ############################################################################
     ## Methods handling signals from the 'ollama' client.
     ############################################################################
 
+    @pyqtSlot(bool, str)
+    def __handleServerStateChanged(self, ok, msg):
+        """
+        Private slot handling a change in the 'ollama' server responsiveness.
+
+        @param ok flag indicating a responsive 'ollama' server
+        @type bool
+        @param msg status message
+        @type str
+        """
+        if ok:
+            self.__finishSetup()
+        else:
+            self.ollamaVersionLabel.setText(msg)
+        self.__setEnabledState(ok)
+
     @pyqtSlot(str)
     def __setHeaderLabel(self, version):
         """
@@ -667,7 +683,7 @@
         self.__ollamaMenu = QMenu()
         self.__ollamaMenu.addMenu(self.__chatHistoryMenu)
         self.__ollamaMenu.addSeparator()
-        self.__ollamaMenu.addMenu(self.__modelMenu)
+        self.__modelMenuAct = self.__ollamaMenu.addMenu(self.__modelMenu)
         self.__ollamaMenu.addSeparator()
         self.__ollamaMenu.addMenu(self.__localServerMenu)
         self.__ollamaMenu.addSeparator()
@@ -815,7 +831,6 @@
         Private slot to handle the start of a local server.
         """
         self.__client.setMode(True)
-        self.on_reloadModelsButton_clicked()
 
     @pyqtSlot()
     def __serverStopped(self):
@@ -823,7 +838,6 @@
         Private slot to handle the stopping of a local server.
         """
         self.__client.setMode(False)
-        self.on_reloadModelsButton_clicked()
 
     @pyqtSlot()
     def __serverDialogClosed(self):

eric ide

mercurial