provider: add about to openai
This commit is contained in:
parent
c65f3b4c11
commit
11b3e79234
|
@ -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",
|
||||
],
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Reference in a new issue