PluginAiOllama.py

Sun, 25 Aug 2024 19:44:24 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 25 Aug 2024 19:44:24 +0200
changeset 8
3118d16e526e
parent 7
eb1dec15b2f0
child 16
cb6af351310b
permissions
-rw-r--r--

Implemented some more menu actions.
- Start and Stop a local 'ollama' server in the background.
- List available models.
- List running models.
- Open the 'ollama' model library in a browser.

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
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
12 from PyQt6.QtCore import QObject, Qt, QTranslator, pyqtSignal
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
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 def pageCreationFunction(configDlg):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
54 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55 Function to create the Translator configuration page.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
56
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
57 @param configDlg reference to the configuration dialog
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
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
60 @rtype TranslatorPage
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
61 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
62 # TODO: not implemented yet
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
63 page = None # change this line to create the configuration page
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64 return page
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
65
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
66
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
67 def getConfigData():
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 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
70
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71 @return dictionary containing the relevant data
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 @rtype dict
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 # TODO: not implemented yet
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75 return {
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
76 "<unique key>": [
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
77 "<display string>",
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
78 "<pixmap filename>",
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
79 pageCreationFunction,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
80 None,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
81 None,
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
82 ],
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
83 }
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
84
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
85
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
86 def prepareUninstall():
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
88 Function to prepare for an un-installation.
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 Preferences.getSettings().remove(PluginOllamaInterface.PreferencesKey)
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 clearPrivateData():
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 clear the private data of the plug-in.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 """
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
97 if ollamaInterfacePluginObject is not None:
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
98 widget = ollamaInterfacePluginObject.getWidget()
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
99 if widget is not None:
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
100 widget.clearHistory()
1
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
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
103 class PluginOllamaInterface(QObject):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
104 """
3
ca28466a186d Implemented the ollama client object (not tested yet).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
105 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
106
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
107 @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
108 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
109 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
111 PreferencesKey = "Ollama"
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
113 preferencesChanged = pyqtSignal()
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
114
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
115 def __init__(self, ui):
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 Constructor
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
119 @param ui reference to the user interface object
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 @type UI.UserInterface
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
122 super().__init__(ui)
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 self.__ui = ui
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
124 self.__initialize()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
125
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
126 self.__defaults = {
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
127 "OllamaScheme": "http",
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
128 "OllamaHost": "localhost",
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
129 "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
130 "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
131 "OllamaHeartbeatInterval": 5, # 5 seconds heartbeat time; 0 = disabled
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
132 "StreamingChatResponse": True,
8
3118d16e526e Implemented some more menu actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
133 "OllamaModelLibraryUrl": "https://ollama.com/library",
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
134 }
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
135
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
136 self.__translator = None
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
137 self.__loadTranslator()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
138
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
139 def __initialize(self):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
140 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
141 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
142 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
143 self.__widget = None
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
144
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
145 def activate(self):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
147 Public method to activate this plug-in.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
148
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
149 @return tuple of None and activation status
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
150 @rtype bool
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
151 """
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
152 from OllamaInterface.OllamaWidget import OllamaWidget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
153
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
154 global error, ollamaInterfacePluginObject
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
155 error = "" # clear previous error
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
156 ollamaInterfacePluginObject = self
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
157
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
158 usesDarkPalette = ericApp().usesDarkPalette()
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
159 iconSuffix = "dark" if usesDarkPalette else "light"
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 self.__widget = OllamaWidget(self, fromEric=True)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
162 iconName = (
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
163 "sbOllama96"
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
164 if self.__ui.getLayoutType() == "Sidebars"
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
165 else "ollama22-{0}".format(iconSuffix)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
166 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
167 self.__ui.addSideWidget(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
168 _Side,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
169 self.__widget,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
170 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
171 self.tr("ollama AI Interface"),
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
172 )
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.__activateAct = EricAction(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
175 self.tr("ollama AI Interface"),
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
176 self.tr("ollama AI Interface"),
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
177 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
178 0,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
179 self,
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
180 "ollama_interface_activate",
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.setStatusTip(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
183 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
184 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
185 self.__activateAct.setWhatsThis(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
186 self.tr(
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
187 """<b>Activate ollama AI Interface</b>"""
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
188 """<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
189 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
190 )
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
191 self.__activateAct.triggered.connect(self.__activateWidget)
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.__ui.addEricActions([self.__activateAct], "ui")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
194 menu = self.__ui.getMenu("subwindow")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
195 menu.addAction(self.__activateAct)
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 self.__ui.preferencesChanged.connect(self.preferencesChanged)
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
198
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
199 return None, True
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
200
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
201 def deactivate(self):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
202 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
203 Public method to deactivate this plug-in.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
204 """
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
205 self.__ui.preferencesChanged.disconnect(self.preferencesChanged)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
206
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
207 menu = self.__ui.getMenu("subwindow")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
208 menu.removeAction(self.__activateAct)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
209 self.__ui.removeEricActions([self.__activateAct], "ui")
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
210 self.__ui.removeSideWidget(self.__widget)
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
211
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
212 self.__initialize()
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
213
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
214 def __loadTranslator(self):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
215 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
216 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
217 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
218 if self.__ui is not None:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
219 loc = self.__ui.getLocale()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
220 if loc and loc != "C":
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
221 locale_dir = os.path.join(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
222 os.path.dirname(__file__), "OllamaInterface", "i18n"
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 translation = "ollama_{0}".format(loc)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
225 translator = QTranslator(None)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
226 loaded = translator.load(translation, locale_dir)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
227 if loaded:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
228 self.__translator = translator
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
229 ericApp().installTranslator(self.__translator)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
230 else:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
231 print(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
232 "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
233 " loaded.".format(translation)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
234 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
235 print("Using default.")
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
236
4
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
237 def getWidget(self):
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
238 """
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
239 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
240
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
241 @return reference to the 'ollama' widget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
242 @rtype OllamaWidget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
243 """
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
244 return self.__widget
7dd1b9cd3150 Implemented most of the Chat History widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
245
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
246 def __activateWidget(self):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
247 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
248 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
249 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
250 uiLayoutType = self.__ui.getLayoutType()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
251
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
252 if uiLayoutType == "Toolboxes":
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
253 self.__ui.rToolboxDock.show()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
254 self.__ui.rToolbox.setCurrentWidget(self.__widget)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
255 elif uiLayoutType == "Sidebars":
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
256 try:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
257 self.__ui.activateLeftRightSidebarWidget(self.__widget)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
258 except AttributeError:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
259 self.__activateLeftRightSidebarWidget(self.__widget)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
260 else:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
261 self.__widget.show()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
262 self.__widget.setFocus(Qt.FocusReason.ActiveWindowFocusReason)
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
263
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
264 def getPreferences(self, key):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
265 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
266 Public method to retrieve the various settings values.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
267
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
268 @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
269 @type str
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
270 @return the requested setting value
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 @rtype Any
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
272 """
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
273 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
274 return int(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
275 Preferences.Prefs.settings.value(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
276 self.PreferencesKey + "/" + key, self.__defaults[key]
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
277 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
278 )
5
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
279 elif key in ("StreamingChatResponse",):
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
280 return Globals.toBool(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
281 Preferences.Prefs.settings.value(
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
282 self.PreferencesKey + "/" + key, self.__defaults[key]
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
283 )
6e8af43d537d Implemented the 'chat' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
284 )
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
285 else:
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
286 return Preferences.Prefs.settings.value(
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
287 self.PreferencesKey + "/" + key, self.__defaults[key]
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
288 )
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
289
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
290 return None
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
291
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
292 def setPreferences(self, key, value):
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
293 """
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
294 Public method to store the various settings values.
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
295
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
296 @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
297 @type str
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
298 @param value the value to be set
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
299 @type Any
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
300 """
2
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
301 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
302
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 ## 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
305 ############################################################################
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
306
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
307 def __activateLeftRightSidebarWidget(self, widget):
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
308 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
309 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
310 sidebar.
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
311
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
312 @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
313 @type QWidget
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
314 """
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
315 # 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
316 sidebar = (
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
317 self.__ui.leftSidebar
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
318 if Preferences.getUI("CombinedLeftRightSidebar")
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
319 else self.__ui.rightSidebar
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 sidebar.show()
fee250704d3d Filled in some of the skeleton methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
322 sidebar.setCurrentWidget(widget)
1
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
323
124e1b8f276b Created the plug-in skeleton.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
324
2
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 # eflag: noqa = M801, U200

eric ide

mercurial