PluginAiOllama.py

changeset 2
fee250704d3d
parent 1
124e1b8f276b
child 3
ca28466a186d
--- a/PluginAiOllama.py	Sat Aug 03 18:30:37 2024 +0200
+++ b/PluginAiOllama.py	Sat Aug 03 19:54:43 2024 +0200
@@ -7,9 +7,12 @@
 Module implementing the ollama Interface plug-in.
 """
 
-from PyQt6.QtCore import QObject
+import os
+
+from PyQt6.QtCore import QObject, Qt, QTranslator
 
 from eric7 import Preferences
+from eric7.EricWidgets.EricApplication import ericApp
 
 # Start-Of-Header
 __header__ = {
@@ -31,6 +34,8 @@
 
 error = ""  # noqa: U200
 
+ollamaInterfacePluginObject = None
+
 
 def pageCreationFunction(configDlg):
     """
@@ -96,7 +101,22 @@
         """
         super().__init__(ui)
         self.__ui = ui
-        # TODO: not implemented yet
+        self.__initialize()
+
+        self.__defaults = {
+            "OllamaScheme": "http",
+            "OllamaHost": "localhost",
+            "OllamaPort": 11434,
+        }
+
+        self.__translator = None
+        self.__loadTranslator()
+
+    def __initialize(self):
+        """
+        Private slot to (re)initialize the plugin.
+        """
+        self.__widget = None
 
     def activate(self):
         """
@@ -118,6 +138,47 @@
         # TODO: not implemented yet
         pass
 
+    def __loadTranslator(self):
+        """
+        Private method to load the translation file.
+        """
+        if self.__ui is not None:
+            loc = self.__ui.getLocale()
+            if loc and loc != "C":
+                locale_dir = os.path.join(
+                    os.path.dirname(__file__), "OllamaInterface", "i18n"
+                )
+                translation = "ollama_{0}".format(loc)
+                translator = QTranslator(None)
+                loaded = translator.load(translation, locale_dir)
+                if loaded:
+                    self.__translator = translator
+                    ericApp().installTranslator(self.__translator)
+                else:
+                    print(
+                        "Warning: translation file '{0}' could not be"
+                        " loaded.".format(translation)
+                    )
+                    print("Using default.")
+
+    def __activateWidget(self):
+        """
+        Private slot to handle the activation of the pipx interface.
+        """
+        uiLayoutType = self.__ui.getLayoutType()
+
+        if uiLayoutType == "Toolboxes":
+            self.__ui.rToolboxDock.show()
+            self.__ui.rToolbox.setCurrentWidget(self.__widget)
+        elif uiLayoutType == "Sidebars":
+            try:
+                self.__ui.activateLeftRightSidebarWidget(self.__widget)
+            except AttributeError:
+                self.__activateLeftRightSidebarWidget(self.__widget)
+        else:
+            self.__widget.show()
+        self.__widget.setFocus(Qt.FocusReason.ActiveWindowFocusReason)
+
     def getPreferences(self, key):
         """
         Public method to retrieve the various settings values.
@@ -127,7 +188,17 @@
         @return the requested setting value
         @rtype Any
         """
-        # TODO: not implemented yet
+        if key in ("OllamaPort",):
+            return int(
+                Preferences.Prefs.settings.value(
+                    self.PreferencesKey + "/" + key, self.__defaults[key]
+                )
+            )
+        else:
+            return Preferences.Prefs.settings.value(
+                self.PreferencesKey + "/" + key, self.__defaults[key]
+            )
+
         return None
 
     def setPreferences(self, key, value):
@@ -139,8 +210,28 @@
         @param value the value to be set
         @type Any
         """
-        # TODO: not implemented yet
-        pass
+        Preferences.Prefs.settings.setValue(self.PreferencesKey + "/" + key, value)
+
+    ############################################################################
+    ## Methods for backward compatibility with eric-ide < 24.9
+    ############################################################################
+
+    def __activateLeftRightSidebarWidget(self, widget):
+        """
+        Private method to activate the given widget in the left or right
+        sidebar.
+
+        @param widget reference to the widget to be activated
+        @type QWidget
+        """
+        # This is for backward compatibility with eric-ide < 24.9.
+        sidebar = (
+            self.__ui.leftSidebar
+            if Preferences.getUI("CombinedLeftRightSidebar")
+            else self.__ui.rightSidebar
+        )
+        sidebar.show()
+        sidebar.setCurrentWidget(widget)
 
 
 def installDependencies(pipInstall):
@@ -152,3 +243,7 @@
     """
     # TODO: not implemented yet
     pass
+
+
+#
+# eflag: noqa = M801, U200

eric ide

mercurial