feat: add custom provider
This commit is contained in:
parent
86ee96f91d
commit
fc3dba7747
|
@ -1,5 +1,6 @@
|
||||||
from .analogdiffusion import AnalogDiffusionProvider
|
from .analogdiffusion import AnalogDiffusionProvider
|
||||||
from .anything import AnythingProvider
|
from .anything import AnythingProvider
|
||||||
|
from .custom import CustomProvider
|
||||||
from .nitrodiffusion import NitroDiffusionProvider
|
from .nitrodiffusion import NitroDiffusionProvider
|
||||||
from .openai import OpenAIProvider
|
from .openai import OpenAIProvider
|
||||||
from .openjourney import OpenJourneyProvider
|
from .openjourney import OpenJourneyProvider
|
||||||
|
@ -10,6 +11,7 @@ from .waifudiffusion import WaifuDiffusionProvider
|
||||||
PROVIDERS = {
|
PROVIDERS = {
|
||||||
"analogdiffusion": AnalogDiffusionProvider,
|
"analogdiffusion": AnalogDiffusionProvider,
|
||||||
"anything": AnythingProvider,
|
"anything": AnythingProvider,
|
||||||
|
"custom": CustomProvider,
|
||||||
"nitrodiffusion": NitroDiffusionProvider,
|
"nitrodiffusion": NitroDiffusionProvider,
|
||||||
"openai": OpenAIProvider,
|
"openai": OpenAIProvider,
|
||||||
"openjourney": OpenJourneyProvider,
|
"openjourney": OpenJourneyProvider,
|
||||||
|
|
67
src/provider/custom.py
Normal file
67
src/provider/custom.py
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
from .huggingface import BaseHFProvider
|
||||||
|
|
||||||
|
from gi.repository import Gtk, Adw, GLib
|
||||||
|
|
||||||
|
class CustomProvider(BaseHFProvider):
|
||||||
|
name = "Custom Provider"
|
||||||
|
slug = "custom"
|
||||||
|
url = "https://imaginer.codeberg.page/help/custom"
|
||||||
|
|
||||||
|
def preferences(self, win):
|
||||||
|
self.expander = Adw.ExpanderRow()
|
||||||
|
self.expander.props.title = self.name
|
||||||
|
|
||||||
|
self.expander.add_action(self.about())
|
||||||
|
self.expander.add_action(self.enable_switch())
|
||||||
|
|
||||||
|
self.api_row = Adw.PasswordEntryRow()
|
||||||
|
self.api_row.connect("apply", self.on_apply)
|
||||||
|
self.api_row.props.title = "API Key"
|
||||||
|
self.api_row.props.text = self.api_key or ""
|
||||||
|
self.api_row.add_suffix(self.how_to_get_a_token())
|
||||||
|
self.api_row.set_show_apply_button(True)
|
||||||
|
self.expander.add_row(self.api_row)
|
||||||
|
|
||||||
|
self.model_row = Adw.EntryRow()
|
||||||
|
self.model_row.connect("apply", self.on_apply)
|
||||||
|
self.model_row.props.title = "Model"
|
||||||
|
if self.model:
|
||||||
|
self.model_row.props.text = str(self.model)
|
||||||
|
else:
|
||||||
|
print("No model")
|
||||||
|
self.model_row.props.text = ""
|
||||||
|
self.model_row.add_suffix(self.how_to_choose_model())
|
||||||
|
self.model_row.set_show_apply_button(True)
|
||||||
|
self.expander.add_row(self.model_row)
|
||||||
|
return self.expander
|
||||||
|
|
||||||
|
def on_apply(self, widget):
|
||||||
|
self.hide_banner()
|
||||||
|
self.api_key = self.api_row.get_text()
|
||||||
|
self.model = str(self.model_row.get_text())
|
||||||
|
self.name = self.model.split("/")[-1]
|
||||||
|
self.app.save_providers()
|
||||||
|
|
||||||
|
def how_to_choose_model(self):
|
||||||
|
about_button = Gtk.Button()
|
||||||
|
about_button.set_icon_name("dialog-information-symbolic")
|
||||||
|
about_button.set_tooltip_text("How to choose a model")
|
||||||
|
about_button.add_css_class("flat")
|
||||||
|
about_button.set_valign(Gtk.Align.CENTER)
|
||||||
|
about_button.connect("clicked", self.open_documentation)
|
||||||
|
return about_button
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
return {
|
||||||
|
"api_key": self.api_key,
|
||||||
|
"model": self.model
|
||||||
|
}
|
||||||
|
|
||||||
|
def load(self, data):
|
||||||
|
try:
|
||||||
|
if data["api_key"]:
|
||||||
|
self.api_key = data.get("api_key", "")
|
||||||
|
if data["model"]:
|
||||||
|
self.model = data.get("model", "")
|
||||||
|
except KeyError:
|
||||||
|
pass
|
Loading…
Reference in New Issue
Block a user