diff -r cf507e6f12d7 -r 3fd49d7004b2 OllamaInterface/OllamaWidget.py --- 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):