PluginAiOllama.py

Sat, 26 Oct 2024 11:46:18 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Oct 2024 11:46:18 +0200
changeset 62
f5565a5417e2
parent 59
40a29731e0d0
child 65
0cf07db68753
permissions
-rw-r--r--

Modified some modal dialog use to ensure they have a valid parent.

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,
62
f5565a5417e2 Modified some modal dialog use to ensure they have a valid parent.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
36 "version": "10.1.6",
1
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",
23
d807aa8c1bd8 Corrected a typo.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
39 "shortDescription": "Graphical 'ollama' client for eric-ide.",
1
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,
24
f4d5108e90fe Added some menu entries to access various 'ollama' URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
44 "hasCompiledForms": True,
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45 "pyqtApi": 2,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
46 }
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
47 # End-Of-Header
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
48
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
49 error = "" # noqa: U200
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
50
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
51 ollamaInterfacePluginObject = None
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
52
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
54 def createOllamaPage(_configDlg):
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55 """
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
56 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
57
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
58 @param _configDlg reference to the configuration dialog
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
59 @type ConfigurationWidget
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
60 @return reference to the configuration page
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
61 @rtype OllamaPage
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
62 """
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
63 from OllamaInterface.ConfigurationPage.OllamaPage import OllamaPage
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
64
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
65 global ollamaInterfacePluginObject
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
66
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
67 page = OllamaPage(ollamaInterfacePluginObject)
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
68 return page
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
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71 def getConfigData():
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
73 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
74
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75 @return dictionary containing the relevant data
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
76 @rtype dict
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
77 """
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
78 usesDarkPalette = ericApp().usesDarkPalette()
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
79 iconSuffix = "dark" if usesDarkPalette else "light"
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
80
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
81 return {
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
82 "ollamaPage": [
17
43b1396fe72f Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
83 QCoreApplication.translate("PluginOllamaInterface", "ollama AI Interface"),
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
84 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
85 createOllamaPage,
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
86 None,
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 ],
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 def prepareUninstall():
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
93 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 Function to prepare for an un-installation.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 Preferences.getSettings().remove(PluginOllamaInterface.PreferencesKey)
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
97
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 def clearPrivateData():
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
100 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
101 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
102 """
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
103 if ollamaInterfacePluginObject is not None:
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
104 widget = ollamaInterfacePluginObject.getWidget()
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
105 if widget is not None:
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
106 widget.clearHistory()
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
107
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 class PluginOllamaInterface(QObject):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 """
3
ca28466a186d Implemented the ollama client object (not tested yet).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
111 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
112
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
113 @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
114 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
115 """
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 PreferencesKey = "Ollama"
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
119 preferencesChanged = pyqtSignal()
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
120
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 def __init__(self, ui):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
122 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 Constructor
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
124
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
125 @param ui reference to the user interface object
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
126 @type UI.UserInterface
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
127 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
128 super().__init__(ui)
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
129 self.__ui = ui
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
130 self.__initialize()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
131
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
132 self.__defaults = {
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
133 "OllamaScheme": "http",
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
134 "OllamaHost": "localhost",
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
135 "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
136 "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
137 "OllamaHeartbeatInterval": 5, # 5 seconds heartbeat time; 0 = disabled
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
138 "StreamingChatResponse": True,
8
3118d16e526e Implemented some more menu actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
139 "OllamaModelLibraryUrl": "https://ollama.com/library",
24
f4d5108e90fe Added some menu entries to access various 'ollama' URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
140 "OllamaDownloadUrl": "https://ollama.com/download",
f4d5108e90fe Added some menu entries to access various 'ollama' URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
141 "OllamaBlogUrl": "https://ollama.com/blog",
2
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
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
144 self.__translator = None
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
145 self.__loadTranslator()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
146
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
147 def __initialize(self):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
148 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
149 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
150 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
151 self.__widget = None
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
153 def activate(self):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
154 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
155 Public method to activate this plug-in.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
156
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
157 @return tuple of None and activation status
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
158 @rtype bool
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
159 """
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
160 from OllamaInterface.OllamaWidget import OllamaWidget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
161
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
162 global error, ollamaInterfacePluginObject
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
163 error = "" # clear previous error
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
164 ollamaInterfacePluginObject = self
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
165
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
166 usesDarkPalette = ericApp().usesDarkPalette()
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
167 iconSuffix = "dark" if usesDarkPalette else "light"
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
168
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
169 self.__widget = OllamaWidget(self, fromEric=True)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
170 iconName = (
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
171 "sbOllama96"
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
172 if self.__ui.getLayoutType() == "Sidebars"
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
173 else "ollama22-{0}".format(iconSuffix)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
174 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
175 self.__ui.addSideWidget(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
176 _Side,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
177 self.__widget,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
178 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
179 self.tr("ollama AI Interface"),
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
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
182 self.__activateAct = EricAction(
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 self.tr("ollama AI Interface"),
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
185 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
186 0,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
187 self,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
188 "ollama_interface_activate",
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
189 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
190 self.__activateAct.setStatusTip(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
191 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
192 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
193 self.__activateAct.setWhatsThis(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
194 self.tr(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
195 """<b>Activate ollama AI Interface</b>"""
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
196 """<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
197 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
198 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
199 self.__activateAct.triggered.connect(self.__activateWidget)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
200
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
201 self.__ui.addEricActions([self.__activateAct], "ui")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
202 menu = self.__ui.getMenu("subwindow")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
203 menu.addAction(self.__activateAct)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
204
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
205 self.__ui.preferencesChanged.connect(self.preferencesChanged)
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
206
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
207 return None, True
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
208
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
209 def deactivate(self):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
210 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
211 Public method to deactivate this plug-in.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
212 """
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
213 self.__ui.preferencesChanged.disconnect(self.preferencesChanged)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
214
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
215 menu = self.__ui.getMenu("subwindow")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
216 menu.removeAction(self.__activateAct)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
217 self.__ui.removeEricActions([self.__activateAct], "ui")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
218 self.__ui.removeSideWidget(self.__widget)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
219
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
220 self.__initialize()
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
221
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
222 def __loadTranslator(self):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
223 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
224 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
225 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
226 if self.__ui is not None:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
227 loc = self.__ui.getLocale()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
228 if loc and loc != "C":
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
229 locale_dir = os.path.join(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
230 os.path.dirname(__file__), "OllamaInterface", "i18n"
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
231 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
232 translation = "ollama_{0}".format(loc)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
233 translator = QTranslator(None)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
234 loaded = translator.load(translation, locale_dir)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
235 if loaded:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
236 self.__translator = translator
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
237 ericApp().installTranslator(self.__translator)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
238 else:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
239 print(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
240 "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
241 " loaded.".format(translation)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
242 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
243 print("Using default.")
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
244
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
245 def getWidget(self):
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
246 """
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
247 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
248
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
249 @return reference to the 'ollama' widget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
250 @rtype OllamaWidget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
251 """
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
252 return self.__widget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
253
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
254 def __activateWidget(self):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
255 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
256 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
257 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
258 uiLayoutType = self.__ui.getLayoutType()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
259
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
260 if uiLayoutType == "Toolboxes":
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
261 self.__ui.rToolboxDock.show()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
262 self.__ui.rToolbox.setCurrentWidget(self.__widget)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
263 elif uiLayoutType == "Sidebars":
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
264 try:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
265 self.__ui.activateLeftRightSidebarWidget(self.__widget)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
266 except AttributeError:
59
40a29731e0d0 Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 58
diff changeset
267 # backward compatibility with eric < 24.9.
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
268 self.__activateLeftRightSidebarWidget(self.__widget)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
269 else:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
270 self.__widget.show()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
271 self.__widget.setFocus(Qt.FocusReason.ActiveWindowFocusReason)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
272
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
273 def getPreferences(self, key):
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 Public method to retrieve the various settings values.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
276
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
277 @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
278 @type str
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
279 @return the requested setting value
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
280 @rtype Any
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
281 """
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
282 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
283 return int(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
284 Preferences.Prefs.settings.value(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
285 self.PreferencesKey + "/" + key, self.__defaults[key]
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
286 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
287 )
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
288 elif key in ("StreamingChatResponse",):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
289 return Globals.toBool(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
290 Preferences.Prefs.settings.value(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
291 self.PreferencesKey + "/" + key, self.__defaults[key]
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
292 )
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
293 )
24
f4d5108e90fe Added some menu entries to access various 'ollama' URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
294 elif key in (
f4d5108e90fe Added some menu entries to access various 'ollama' URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
295 "OllamaHost",
f4d5108e90fe Added some menu entries to access various 'ollama' URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
296 "OllamaModelLibraryUrl",
f4d5108e90fe Added some menu entries to access various 'ollama' URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
297 "OllamaDownloadUrl",
f4d5108e90fe Added some menu entries to access various 'ollama' URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
298 "OllamaBlogUrl",
f4d5108e90fe Added some menu entries to access various 'ollama' URLs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
299 ):
16
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
300 value = Preferences.Prefs.settings.value(
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
301 self.PreferencesKey + "/" + key, self.__defaults[key]
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
302 )
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
303 if not value:
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
304 # use default value if empty
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
305 value = self.__defaults[key]
cb6af351310b Implemented the 'ollama' interface configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
306 return value
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
307 else:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
308 return Preferences.Prefs.settings.value(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
309 self.PreferencesKey + "/" + key, self.__defaults[key]
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
310 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
311
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
312 return None
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
313
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
314 def setPreferences(self, key, value):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
315 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
316 Public method to store the various settings values.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
317
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
318 @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
319 @type str
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
320 @param value the value to be set
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
321 @type Any
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
322 """
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
323 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
324
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
325 ############################################################################
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
326 ## 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
327 ############################################################################
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
328
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
329 def __activateLeftRightSidebarWidget(self, widget):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
330 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
331 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
332 sidebar.
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
333
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
334 @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
335 @type QWidget
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
336 """
59
40a29731e0d0 Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 58
diff changeset
337 # backward compatibility with eric < 24.9.
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
338 sidebar = (
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
339 self.__ui.leftSidebar
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
340 if Preferences.getUI("CombinedLeftRightSidebar")
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
341 else self.__ui.rightSidebar
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
342 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
343 sidebar.show()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
344 sidebar.setCurrentWidget(widget)
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
345
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
346
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
347 #
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
348 # eflag: noqa = M801, U200

eric ide

mercurial