provider: add about to openai

This commit is contained in:
0xMRTT 2023-05-01 11:22:43 +02:00
parent c65f3b4c11
commit 11b3e79234
Signed by: 0xmrtt
GPG key ID: 19C1449A774028BD
4 changed files with 39 additions and 10 deletions

View file

@ -39,7 +39,6 @@ from tempfile import NamedTemporaryFile
from .provider import PROVIDERS
class BavarderApplication(Adw.Application):
"""The main application singleton class."""
@ -153,7 +152,7 @@ class BavarderApplication(Adw.Application):
)
about.add_acknowledgement_section(
_("Special thanks to"),
"Special thanks to",
[
"Telegraph https://apps.gnome.org/app/io.github.fkinoshita.Telegraph",
],

View file

@ -34,6 +34,6 @@ class Preferences(Adw.PreferencesWindow):
def setup_providers(self):
for provider in self.app.providers.values():
try:
self.provider_group.add(provider.preferences())
self.provider_group.add(provider.preferences(self))
except TypeError: # no prefs
pass

View file

@ -1,5 +1,7 @@
from gettext import gettext as _
from gi.repository import Gtk, Adw
class BavarderProvider:
name = None
slug = None
@ -47,11 +49,27 @@ class BavarderProvider:
def hide_banner(self):
self.win.banner.set_revealed(False)
def about(self):
def about(self, *args):
raise NotImplementedError()
def no_preferences(self):
pass
def no_preferences(self, win):
self.pref_win = win
self.expander = Adw.ExpanderRow()
self.expander.props.title = self.name
about_button = Gtk.Button()
about_button.set_label("About")
about_button.connect("clicked", self.about)
about_button.set_valign(Gtk.Align.CENTER)
self.expander.add_action(about_button) # TODO: in Adw 1.4, use add_suffix
self.no_pref_row = Adw.ActionRow()
self.no_pref_row.props.title = "No preferences available"
self.expander.add_row(self.no_pref_row)
return self.expander
def save(self):
raise NotImplementedError()

View file

@ -10,10 +10,12 @@ class BaseOpenAIProvider(BavarderProvider):
name = None
slug = None
model = None
version = "0.1.0"
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
self.chat = openai.ChatCompletion
self.pref_win = None
def ask(self, prompt):
try:
@ -41,10 +43,19 @@ class BaseOpenAIProvider(BavarderProvider):
def require_api_key(self):
return True
def preferences(self):
def preferences(self, win):
self.pref_win = win
self.expander = Adw.ExpanderRow()
self.expander.props.title = self.name
about_button = Gtk.Button()
about_button.set_label("About")
about_button.connect("clicked", self.about)
about_button.set_valign(Gtk.Align.CENTER)
self.expander.add_action(about_button) # TODO: in Adw 1.4, use add_suffix
self.api_row = Adw.PasswordEntryRow()
self.api_row.connect("apply", self.on_apply)
self.api_row.props.title = "API Key"
@ -59,16 +70,17 @@ class BaseOpenAIProvider(BavarderProvider):
print(api_key)
openai.api_key = api_key
def about(self):
def about(self, *args):
about = Adw.AboutWindow(
transient_for=self.props.active_window,
transient_for=self.pref_win,
application_name=self.name,
developer_name="OpenAI",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=version,
version=self.version,
copyright="© 2023 0xMRTT",
)
about.present()
def save(self):
return {"api_key": openai.api_key}