PluginAiOllama.py

Thu, 29 Aug 2024 13:11:59 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 29 Aug 2024 13:11:59 +0200
changeset 16
cb6af351310b
parent 8
3118d16e526e
child 17
43b1396fe72f
permissions
-rw-r--r--

Implemented the 'ollama' interface configuration page.

1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
1 # -*- coding: utf-8 -*-
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
2
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
3 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
4 #
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
5
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
6 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
7 Module implementing the ollama Interface plug-in.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
8 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
9
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
10 import os
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
11
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
12 from PyQt6.QtCore import QCoreApplication, QObject, Qt, QTranslator, pyqtSignal
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
13 from PyQt6.QtGui import QKeySequence
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
14
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
15 from eric7 import Globals, Preferences
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
16 from eric7.EricGui import EricPixmapCache
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
17 from eric7.EricGui.EricAction import EricAction
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
18 from eric7.EricWidgets.EricApplication import ericApp
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
20 try:
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
21 from eric7.UI.UserInterface import UserInterfaceSide
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
22
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
23 _Side = UserInterfaceSide.Right
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
24 except ImportError:
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
25 # backward compatibility for eric < 24.2
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
26 from eric7.UI.UserInterface import UserInterface
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
27
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
28 _Side = UserInterface.RightSide
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
29
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
30 # Start-Of-Header
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
31 __header__ = {
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
32 "name": "ollama Interface",
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
33 "author": "Detlev Offenbach <detlev@die-offenbachs.de>",
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
34 "autoactivate": True,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
35 "deactivateable": True,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
36 "version": "10.0.0",
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
37 "className": "PluginOllamaInterface",
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
38 "packageName": "OllamaInterface",
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
39 "shortDescription": "Grapgical 'ollama' client for eric-ide.",
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
40 "longDescription": (
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
41 "Plug-in implementing an 'ollama' client and interface widgets."
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
42 ),
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43 "needsRestart": False,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
44 "pyqtApi": 2,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45 }
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
46 # End-Of-Header
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
47
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
48 error = "" # noqa: U200
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
49
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
50 ollamaInterfacePluginObject = None
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
51
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
52
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
53 def createOllamaPage(_configDlg):
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
54 """
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
55 Function to create the 'ollama' interface' configuration page.
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
56
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
57 @param _configDlg reference to the configuration dialog
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
58 @type ConfigurationWidget
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
59 @return reference to the configuration page
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
60 @rtype OllamaPage
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
61 """
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
62 from OllamaInterface.ConfigurationPage.OllamaPage import OllamaPage
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
63
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
64 global ollamaInterfacePluginObject
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
65
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
66 page = OllamaPage(ollamaInterfacePluginObject)
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
67 return page
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
68
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
69
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
70 def getConfigData():
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 Function returning data as required by the configuration dialog.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
73
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
74 @return dictionary containing the relevant data
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75 @rtype dict
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
76 """
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
77 usesDarkPalette = ericApp().usesDarkPalette()
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
78 iconSuffix = "dark" if usesDarkPalette else "light"
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
79
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
80 return {
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
81 "ollamaPage": [
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
82 QCoreApplication.translate(
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
83 "PluginOllamaInterface", "ollama AI Interface"
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
84 ),
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
85 os.path.join("OllamaInterface", "icons", "ollama22-{0}".format(iconSuffix)),
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
86 createOllamaPage,
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87 None,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
88 None,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
89 ],
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
90 }
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
93 def prepareUninstall():
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 Function to prepare for an un-installation.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
97 Preferences.getSettings().remove(PluginOllamaInterface.PreferencesKey)
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
98
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
99
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
100 def clearPrivateData():
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
101 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
102 Function to clear the private data of the plug-in.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
103 """
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
104 if ollamaInterfacePluginObject is not None:
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
105 widget = ollamaInterfacePluginObject.getWidget()
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
106 if widget is not None:
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
107 widget.clearHistory()
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
108
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
109
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 class PluginOllamaInterface(QObject):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
111 """
3
ca28466a186d Implemented the ollama client object (not tested yet).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
112 Class implementing the ollama Interface plug-in.
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
113
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
114 @signal preferencesChanged() emitted to signal a change of preferences. This
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
115 signal is simply relayed from the main UI.
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
117
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118 PreferencesKey = "Ollama"
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
119
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
120 preferencesChanged = pyqtSignal()
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
121
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
122 def __init__(self, ui):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
124 Constructor
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
125
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
126 @param ui reference to the user interface object
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
127 @type UI.UserInterface
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
128 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
129 super().__init__(ui)
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
130 self.__ui = ui
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
131 self.__initialize()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
132
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
133 self.__defaults = {
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
134 "OllamaScheme": "http",
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
135 "OllamaHost": "localhost",
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
136 "OllamaPort": 11434,
7
eb1dec15b2f0 Implemented a menu, dialog and actions to start a local 'ollama' server with the capability to monitor its log output.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
137 "OllamaLocalPort": 11435, # port for locally started ollama server
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
138 "OllamaHeartbeatInterval": 5, # 5 seconds heartbeat time; 0 = disabled
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
139 "StreamingChatResponse": True,
8
3118d16e526e Implemented some more menu actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
140 "OllamaModelLibraryUrl": "https://ollama.com/library",
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
141 }
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
142
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
143 self.__translator = None
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
144 self.__loadTranslator()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
145
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
146 def __initialize(self):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
147 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
148 Private slot to (re)initialize the plugin.
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
149 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
150 self.__widget = None
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
151
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152 def activate(self):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
153 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
154 Public method to activate this plug-in.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
155
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
156 @return tuple of None and activation status
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
157 @rtype bool
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
158 """
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
159 from OllamaInterface.OllamaWidget import OllamaWidget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
160
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
161 global error, ollamaInterfacePluginObject
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
162 error = "" # clear previous error
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
163 ollamaInterfacePluginObject = self
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
164
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
165 usesDarkPalette = ericApp().usesDarkPalette()
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
166 iconSuffix = "dark" if usesDarkPalette else "light"
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
167
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
168 self.__widget = OllamaWidget(self, fromEric=True)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
169 iconName = (
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
170 "sbOllama96"
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
171 if self.__ui.getLayoutType() == "Sidebars"
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
172 else "ollama22-{0}".format(iconSuffix)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
173 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
174 self.__ui.addSideWidget(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
175 _Side,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
176 self.__widget,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
177 EricPixmapCache.getIcon(os.path.join("OllamaInterface", "icons", iconName)),
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
178 self.tr("ollama AI Interface"),
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
179 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
180
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
181 self.__activateAct = EricAction(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
182 self.tr("ollama AI Interface"),
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
183 self.tr("ollama AI Interface"),
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
184 QKeySequence(self.tr("Ctrl+Alt+Shift+O")),
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
185 0,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
186 self,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
187 "ollama_interface_activate",
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
188 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
189 self.__activateAct.setStatusTip(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
190 self.tr("Switch the input focus to the ollama AI window.")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
191 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
192 self.__activateAct.setWhatsThis(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
193 self.tr(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
194 """<b>Activate ollama AI Interface</b>"""
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
195 """<p>This switches the input focus to the ollama AI window.</p>"""
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
196 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
197 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
198 self.__activateAct.triggered.connect(self.__activateWidget)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
199
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
200 self.__ui.addEricActions([self.__activateAct], "ui")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
201 menu = self.__ui.getMenu("subwindow")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
202 menu.addAction(self.__activateAct)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
203
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
204 self.__ui.preferencesChanged.connect(self.preferencesChanged)
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
205
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
206 return None, True
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
207
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
208 def deactivate(self):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
209 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
210 Public method to deactivate this plug-in.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
211 """
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
212 self.__ui.preferencesChanged.disconnect(self.preferencesChanged)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
213
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
214 menu = self.__ui.getMenu("subwindow")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
215 menu.removeAction(self.__activateAct)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
216 self.__ui.removeEricActions([self.__activateAct], "ui")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
217 self.__ui.removeSideWidget(self.__widget)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
218
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
219 self.__initialize()
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
220
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
221 def __loadTranslator(self):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
222 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
223 Private method to load the translation file.
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
224 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
225 if self.__ui is not None:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
226 loc = self.__ui.getLocale()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
227 if loc and loc != "C":
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
228 locale_dir = os.path.join(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
229 os.path.dirname(__file__), "OllamaInterface", "i18n"
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
230 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
231 translation = "ollama_{0}".format(loc)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
232 translator = QTranslator(None)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
233 loaded = translator.load(translation, locale_dir)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
234 if loaded:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
235 self.__translator = translator
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
236 ericApp().installTranslator(self.__translator)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
237 else:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
238 print(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
239 "Warning: translation file '{0}' could not be"
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
240 " loaded.".format(translation)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
241 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
242 print("Using default.")
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
243
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
244 def getWidget(self):
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
245 """
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
246 Public method to get a reference to the 'ollama' widget.
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
247
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
248 @return reference to the 'ollama' widget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
249 @rtype OllamaWidget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
250 """
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
251 return self.__widget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
252
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
253 def __activateWidget(self):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
254 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
255 Private slot to handle the activation of the pipx interface.
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
256 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
257 uiLayoutType = self.__ui.getLayoutType()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
258
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
259 if uiLayoutType == "Toolboxes":
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
260 self.__ui.rToolboxDock.show()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
261 self.__ui.rToolbox.setCurrentWidget(self.__widget)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
262 elif uiLayoutType == "Sidebars":
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
263 try:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
264 self.__ui.activateLeftRightSidebarWidget(self.__widget)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
265 except AttributeError:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
266 self.__activateLeftRightSidebarWidget(self.__widget)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
267 else:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
268 self.__widget.show()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
269 self.__widget.setFocus(Qt.FocusReason.ActiveWindowFocusReason)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
270
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 def getPreferences(self, key):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
272 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
273 Public method to retrieve the various settings values.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
274
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
275 @param key the key of the value to get
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
276 @type str
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
277 @return the requested setting value
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
278 @rtype Any
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
279 """
7
eb1dec15b2f0 Implemented a menu, dialog and actions to start a local 'ollama' server with the capability to monitor its log output.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
280 if key in ("OllamaPort", "OllamaLocalPort", "OllamaHeartbeatInterval"):
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
281 return int(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
282 Preferences.Prefs.settings.value(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
283 self.PreferencesKey + "/" + key, self.__defaults[key]
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
284 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
285 )
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
286 elif key in ("StreamingChatResponse",):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
287 return Globals.toBool(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
288 Preferences.Prefs.settings.value(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
289 self.PreferencesKey + "/" + key, self.__defaults[key]
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
290 )
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
291 )
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
292 elif key in ("OllamaHost", "OllamaModelLibraryUrl"):
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
293 value = Preferences.Prefs.settings.value(
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
294 self.PreferencesKey + "/" + key, self.__defaults[key]
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
295 )
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
296 if not value:
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
297 # use default value if empty
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
298 value = self.__defaults[key]
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
299 return value
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
300 else:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
301 return Preferences.Prefs.settings.value(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
302 self.PreferencesKey + "/" + key, self.__defaults[key]
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
303 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
304
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
305 return None
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
306
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
307 def setPreferences(self, key, value):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
308 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
309 Public method to store the various settings values.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
310
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
311 @param key the key of the setting to be set
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
312 @type str
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
313 @param value the value to be set
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
314 @type Any
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
315 """
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
316 Preferences.Prefs.settings.setValue(self.PreferencesKey + "/" + key, value)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
317
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
318 ############################################################################
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
319 ## Methods for backward compatibility with eric-ide < 24.9
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
320 ############################################################################
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
321
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
322 def __activateLeftRightSidebarWidget(self, widget):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
323 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
324 Private method to activate the given widget in the left or right
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
325 sidebar.
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
326
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
327 @param widget reference to the widget to be activated
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
328 @type QWidget
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
329 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
330 # This is for backward compatibility with eric-ide < 24.9.
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
331 sidebar = (
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
332 self.__ui.leftSidebar
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
333 if Preferences.getUI("CombinedLeftRightSidebar")
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
334 else self.__ui.rightSidebar
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
335 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
336 sidebar.show()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
337 sidebar.setCurrentWidget(widget)
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
338
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
339
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
340 #
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
341 # eflag: noqa = M801, U200

eric ide

mercurial