28 Commits

Author SHA1 Message Date
a38500decb Update 'README.md'
Some checks failed
Build / Flatpak (x86_64) (push) Failing after -21s
2023-05-07 23:13:29 +00:00
09c100b6b6 Update 'README.md' 2023-05-07 23:12:52 +00:00
536f0ca9e9 po: update pot 2023-05-07 23:35:56 +02:00
ae848a5f57 doc: add press 2023-05-07 23:35:47 +02:00
2505a5bd91 fix: make ui better 2023-05-07 23:35:40 +02:00
0cc5a93463 fix: make the ui better 2023-05-07 23:35:31 +02:00
88e979e566 src: add doc for getting a token 2023-05-07 13:55:38 +02:00
artnay
25b84864db Translated using Weblate (Finnish)
Currently translated at 100.0% (23 of 23 strings)

Translation: Imaginer/Imaginer
Translate-URL: https://translate.codeberg.org/projects/imaginer/imaginer/fi/
2023-05-06 16:35:54 +00:00
artnay
9bb3407202 Added translation using Weblate (Finnish) 2023-05-06 16:29:38 +00:00
fcd56e0a9b format: using black 2023-05-06 18:03:30 +02:00
79c39894d3 fix: format 2023-05-06 18:02:51 +02:00
f9b096e624 provider: add anything 2023-05-06 17:51:41 +02:00
c6dbc3812f provider: use openjourney v4 2023-05-06 17:45:39 +02:00
a5ba733efe ui: change token title 2023-05-06 17:36:33 +02:00
2807fe6b61 src: add negative prompt 2023-05-06 17:36:12 +02:00
0xMRTT
8818931404 doc: fix github name
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-06 15:25:51 +00:00
0xMRTT
536088d261 doc: add mirror
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-06 13:49:48 +00:00
ioghjog
ed1a4fd3ca Translated using Weblate (Polish)
Currently translated at 100.0% (23 of 23 strings)

Translation: Imaginer/Imaginer
Translate-URL: https://translate.codeberg.org/projects/imaginer/imaginer/pl/
2023-05-06 12:07:46 +00:00
madokaa
715f200b91 Translated using Weblate (Chinese (Simplified))
Currently translated at 4.3% (1 of 23 strings)

Translation: Imaginer/Imaginer
Translate-URL: https://translate.codeberg.org/projects/imaginer/imaginer/zh_Hans/
2023-05-06 12:07:46 +00:00
rene-coty
dd42fceb9a Translated using Weblate (French)
Currently translated at 100.0% (23 of 23 strings)

Translation: Imaginer/Imaginer
Translate-URL: https://translate.codeberg.org/projects/imaginer/imaginer/fr/
2023-05-06 12:07:46 +00:00
ioghjog
777f225092 Added translation using Weblate (Polish) 2023-05-06 11:48:57 +00:00
madokaa
2cb815de7d Added translation using Weblate (Chinese (Simplified)) 2023-05-06 11:14:33 +00:00
albano.battistella
9891b5f324 Translated using Weblate (Italian)
Currently translated at 100.0% (23 of 23 strings)

Translation: Imaginer/Imaginer
Translate-URL: https://translate.codeberg.org/projects/imaginer/imaginer/it/
2023-05-06 00:15:34 +00:00
albano.battistella
1fc6ccbdff Translated using Weblate (Italian)
Currently translated at 95.6% (22 of 23 strings)

Translation: Imaginer/Imaginer
Translate-URL: https://translate.codeberg.org/projects/imaginer/imaginer/it/
2023-05-05 19:17:55 +00:00
albano.battistella
127cdf1f57 Added translation using Weblate (Italian) 2023-05-05 19:09:10 +00:00
0xMRTT
2d4f07cff4 fix: link in about
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-05 17:53:08 +00:00
0xMRTT
7c63ce0bd5 SRC: fix about
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-05 17:52:08 +00:00
0xMRTT
b9cdabaca6 src: add upscaler in about
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-05 17:51:21 +00:00
13 changed files with 649 additions and 62 deletions

5
PRESS.md Normal file
View File

@@ -0,0 +1,5 @@
# Where Imaginer has been saw
## Press
- https://flipboard.com/topic/ubuntu/github---imaginerapp-imaginer-imagine-with-ai/a-kQE4bZGRSPSA5jVwOPGiNA%3Aa%3A3916182973-55b80cc26d%2Fgithub.com

View File

@@ -15,7 +15,6 @@
</a>
<br>
</p>
<br>
<p align="center">
@@ -45,7 +44,7 @@
You can either use your GNOME Software and search for "Imaginer" or you can run
```
``` shell
flatpak install page.codeberg.Imaginer.Imaginer
```
@@ -79,6 +78,12 @@ The [GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct) is
You can translate Imaginer using Codeberg Translate
### Mirrors
- [GitHub](https://github.com/ImaginerApp/Imaginer)
- [Codeberg](https://github.com/Imaginer/Imaginer)
## See also
### Bavarder: Chit-Chat with AI

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-02 00:33+0200\n"
"POT-Creation-Date: 2023-05-07 23:05+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,15 +17,28 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: data/page.codeberg.Imaginer.Imaginer.desktop.in:3 src/window.blp:9
#: data/page.codeberg.Imaginer.Imaginer.desktop.in:3
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:4 src/window.blp:9
msgid "Imaginer"
msgstr ""
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:7
msgid "No description"
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:5
msgid "Imagine with AI"
msgstr ""
#: src/main.py:74
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:6
msgid "0xMRTT"
msgstr ""
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:12
msgid "Generate pictures with Artificial Intelligence and save them"
msgstr ""
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:16
msgid "Imaginer main UI"
msgstr ""
#: src/main.py:88
msgid "Choose a directory"
msgstr ""
@@ -37,74 +50,90 @@ msgstr ""
msgid "Error while querying the API"
msgstr ""
#: src/window.blp:47
#: src/window.blp:54
msgid "Prompt"
msgstr ""
#: src/window.blp:53
#: src/window.blp:58
msgid "Negative Prompt"
msgstr ""
#: src/window.blp:64
msgid "Options"
msgstr ""
#: src/window.blp:56
#: src/window.blp:67
msgid "Save Location"
msgstr ""
#: src/window.blp:72
#: src/window.blp:83
msgid "(None)"
msgstr ""
#: src/window.blp:79
#: src/window.blp:90
msgid "Provider"
msgstr ""
#: src/window.blp:84
msgid "Token"
#: src/window.blp:95
msgid "API Token"
msgstr ""
#: src/window.blp:93
#: src/window.blp:100
msgid "How to get a token"
msgstr ""
#: src/window.blp:116
msgid "_Imagine"
msgstr ""
#: src/window.blp:94
#: src/window.blp:117
msgid "Save location is missing."
msgstr ""
#: src/window.blp:128
#: src/window.blp:151
msgid "New Window"
msgstr ""
#: src/window.blp:135
#: src/window.blp:158
msgid "Keyboard Shortcuts"
msgstr ""
#: src/window.blp:140
#: src/window.blp:163
msgid "About Imaginer"
msgstr ""
#: src/window.blp:147
#: src/window.blp:170
msgid "Stable Diffusion"
msgstr ""
#: src/window.blp:147
#: src/window.blp:170
msgid "OpenAI"
msgstr ""
#: src/window.blp:147
#: src/window.blp:170
msgid "Waifu Diffusion"
msgstr ""
#: src/window.blp:147
#: src/window.blp:170
msgid "Open Journey"
msgstr ""
#: src/window.blp:147
#: src/window.blp:170
msgid "Nitro Diffusion"
msgstr ""
#: src/window.blp:147
#: src/window.blp:170
msgid "Analog Diffusion"
msgstr ""
#: src/window.blp:147
#: src/window.blp:170
msgid "Portrait Plus"
msgstr ""
#: src/window.blp:170
msgid "Anything"
msgstr ""
#: src/window.blp:175
msgid "Open the documentation to see how to get a token"
msgstr ""

View File

@@ -0,0 +1,6 @@
ru
fr
fi
pl
zh_Hans
it

112
po/fi.po Normal file
View File

@@ -0,0 +1,112 @@
# Imaginer POT file
# Copyright (C) 2023 Imaginer
# This file is distributed under the GNU GPLv3 license.
# Imaginer, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-02 00:33+0200\n"
"PO-Revision-Date: 2023-05-06 16:35+0000\n"
"Last-Translator: artnay <jiri.gronroos@iki.fi>\n"
"Language-Team: Finnish <https://translate.codeberg.org/projects/imaginer/"
"imaginer/fi/>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#: data/page.codeberg.Imaginer.Imaginer.desktop.in:3 src/window.blp:9
msgid "Imaginer"
msgstr "Imaginer"
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:7
msgid "No description"
msgstr "Ei kuvausta"
#: src/main.py:74
msgid "Choose a directory"
msgstr "Valitse kansio"
#: src/window.blp:19
msgid "Main Menu"
msgstr "Päävalikko"
#: src/window.blp:25
msgid "Error while querying the API"
msgstr "Virhe rajapintaa kyseltäessä"
#: src/window.blp:47
msgid "Prompt"
msgstr "Kehote"
#: src/window.blp:53
msgid "Options"
msgstr "Valinnat"
#: src/window.blp:56
msgid "Save Location"
msgstr "Tallennussijainti"
#: src/window.blp:72
msgid "(None)"
msgstr "(Ei mitään)"
#: src/window.blp:79
msgid "Provider"
msgstr "Palveluntarjoaja"
#: src/window.blp:84
msgid "Token"
msgstr "Poletti"
#: src/window.blp:93
msgid "_Imagine"
msgstr "_Kuvita"
#: src/window.blp:94
msgid "Save location is missing."
msgstr "Tallennussijainti puuttuu."
#: src/window.blp:128
msgid "New Window"
msgstr "Uusi ikkuna"
#: src/window.blp:135
msgid "Keyboard Shortcuts"
msgstr "Pikanäppäimet"
#: src/window.blp:140
msgid "About Imaginer"
msgstr "Tietoja - Imaginer"
#: src/window.blp:147
msgid "Stable Diffusion"
msgstr "Stable Diffusion"
#: src/window.blp:147
msgid "OpenAI"
msgstr "OpenAI"
#: src/window.blp:147
msgid "Waifu Diffusion"
msgstr "Waifu Diffusion"
#: src/window.blp:147
msgid "Open Journey"
msgstr "Open Journey"
#: src/window.blp:147
msgid "Nitro Diffusion"
msgstr "Nitro Diffusion"
#: src/window.blp:147
msgid "Analog Diffusion"
msgstr "Analog Diffusion"
#: src/window.blp:147
msgid "Portrait Plus"
msgstr "Portrait Plus"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-02 00:33+0200\n"
"PO-Revision-Date: 2023-05-01 22:59+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@proton.me>\n"
"PO-Revision-Date: 2023-05-06 12:07+0000\n"
"Last-Translator: rene-coty <irenee.thirion@e.email>\n"
"Language-Team: French <https://translate.codeberg.org/projects/imaginer/"
"imaginer/fr/>\n"
"Language: fr\n"
@@ -33,11 +33,11 @@ msgstr "Choisir un répertoire"
#: src/window.blp:19
msgid "Main Menu"
msgstr "Menu Principal"
msgstr "Menu principal"
#: src/window.blp:25
msgid "Error while querying the API"
msgstr "Erreur lors de l'interrogation de l'API"
msgstr "Erreur lors de linterrogation de lAPI"
#: src/window.blp:47
msgid "Prompt"
@@ -49,7 +49,7 @@ msgstr "Options"
#: src/window.blp:56
msgid "Save Location"
msgstr "Enregistrer l'Emplacement"
msgstr "Emplacement denregistrement"
#: src/window.blp:72
msgid "(None)"
@@ -69,11 +69,11 @@ msgstr "_Imagine"
#: src/window.blp:94
msgid "Save location is missing."
msgstr "Emplacement de sauvegarde manquant."
msgstr "Emplacement denregistrement manquant."
#: src/window.blp:128
msgid "New Window"
msgstr "Nouvelle Fenêtre"
msgstr "Nouvelle fenêtre"
#: src/window.blp:135
msgid "Keyboard Shortcuts"
@@ -81,7 +81,7 @@ msgstr "Raccourcis clavier"
#: src/window.blp:140
msgid "About Imaginer"
msgstr "À propos d'Imaginer"
msgstr "À propos dImaginer"
#: src/window.blp:147
msgid "Stable Diffusion"

112
po/it.po Normal file
View File

@@ -0,0 +1,112 @@
# Imaginer POT file
# Copyright (C) 2023 Imaginer
# This file is distributed under the GNU GPLv3 license.
# Imaginer, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-02 00:33+0200\n"
"PO-Revision-Date: 2023-05-06 00:15+0000\n"
"Last-Translator: \"albano.battistella\" <albano_battistella@hotmail.com>\n"
"Language-Team: Italian <https://translate.codeberg.org/projects/imaginer/"
"imaginer/it/>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#: data/page.codeberg.Imaginer.Imaginer.desktop.in:3 src/window.blp:9
msgid "Imaginer"
msgstr "Imaginer"
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:7
msgid "No description"
msgstr "Nessuna descrizione"
#: src/main.py:74
msgid "Choose a directory"
msgstr "Scegli una directory"
#: src/window.blp:19
msgid "Main Menu"
msgstr "Menu principale"
#: src/window.blp:25
msgid "Error while querying the API"
msgstr "Errore durante l'interrogazione dell'API"
#: src/window.blp:47
msgid "Prompt"
msgstr "Prompt"
#: src/window.blp:53
msgid "Options"
msgstr "Opzioni"
#: src/window.blp:56
msgid "Save Location"
msgstr "Salva posizione"
#: src/window.blp:72
msgid "(None)"
msgstr "(Nessuna)"
#: src/window.blp:79
msgid "Provider"
msgstr "Provider"
#: src/window.blp:84
msgid "Token"
msgstr "Token"
#: src/window.blp:93
msgid "_Imagine"
msgstr "_Immagine"
#: src/window.blp:94
msgid "Save location is missing."
msgstr "Posizione di salvataggio mancante."
#: src/window.blp:128
msgid "New Window"
msgstr "Nuova finestra"
#: src/window.blp:135
msgid "Keyboard Shortcuts"
msgstr "Scorciatoie da tastiera"
#: src/window.blp:140
msgid "About Imaginer"
msgstr "Informazioni su Imaginer"
#: src/window.blp:147
msgid "Stable Diffusion"
msgstr "Stable Diffusion"
#: src/window.blp:147
msgid "OpenAI"
msgstr "OpenAI"
#: src/window.blp:147
msgid "Waifu Diffusion"
msgstr "Waifu Diffusion"
#: src/window.blp:147
msgid "Open Journey"
msgstr "Open Journey"
#: src/window.blp:147
msgid "Nitro Diffusion"
msgstr "Nitro Diffusion"
#: src/window.blp:147
msgid "Analog Diffusion"
msgstr "Analog Diffusion"
#: src/window.blp:147
msgid "Portrait Plus"
msgstr "Portrait Plus"

113
po/pl.po Normal file
View File

@@ -0,0 +1,113 @@
# Imaginer POT file
# Copyright (C) 2023 Imaginer
# This file is distributed under the GNU GPLv3 license.
# Imaginer, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-02 00:33+0200\n"
"PO-Revision-Date: 2023-05-06 12:07+0000\n"
"Last-Translator: ioghjog <michal.d1191@gmail.com>\n"
"Language-Team: Polish <https://translate.codeberg.org/projects/imaginer/"
"imaginer/pl/>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.17\n"
#: data/page.codeberg.Imaginer.Imaginer.desktop.in:3 src/window.blp:9
msgid "Imaginer"
msgstr "Imaginer"
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:7
msgid "No description"
msgstr "Brak opisu"
#: src/main.py:74
msgid "Choose a directory"
msgstr "Wybierz katalog"
#: src/window.blp:19
msgid "Main Menu"
msgstr "Główne menu"
#: src/window.blp:25
msgid "Error while querying the API"
msgstr "Błąd podczas odpytywania API"
#: src/window.blp:47
msgid "Prompt"
msgstr "Zapytanie"
#: src/window.blp:53
msgid "Options"
msgstr "Ustawienia"
#: src/window.blp:56
msgid "Save Location"
msgstr "Lokalizacja zapisu"
#: src/window.blp:72
msgid "(None)"
msgstr "(Brak)"
#: src/window.blp:79
msgid "Provider"
msgstr "Dostawca"
#: src/window.blp:84
msgid "Token"
msgstr "Token"
#: src/window.blp:93
msgid "_Imagine"
msgstr "_Imagine"
#: src/window.blp:94
msgid "Save location is missing."
msgstr "Nie podano lokalizacji zapisu."
#: src/window.blp:128
msgid "New Window"
msgstr "Nowe okno"
#: src/window.blp:135
msgid "Keyboard Shortcuts"
msgstr "Skróty klawiszowe"
#: src/window.blp:140
msgid "About Imaginer"
msgstr "O Imaginerze"
#: src/window.blp:147
msgid "Stable Diffusion"
msgstr "Stable Diffusion"
#: src/window.blp:147
msgid "OpenAI"
msgstr "OpenAI"
#: src/window.blp:147
msgid "Waifu Diffusion"
msgstr "Waifu Diffusion"
#: src/window.blp:147
msgid "Open Journey"
msgstr "Open Journey"
#: src/window.blp:147
msgid "Nitro Diffusion"
msgstr "Nitro Diffusion"
#: src/window.blp:147
msgid "Analog Diffusion"
msgstr "Analog Diffusion"
#: src/window.blp:147
msgid "Portrait Plus"
msgstr "Portrait Plus"

112
po/zh_Hans.po Normal file
View File

@@ -0,0 +1,112 @@
# Imaginer POT file
# Copyright (C) 2023 Imaginer
# This file is distributed under the GNU GPLv3 license.
# Imaginer, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-02 00:33+0200\n"
"PO-Revision-Date: 2023-05-06 12:07+0000\n"
"Last-Translator: madokaa <valigarmanda55@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.codeberg.org/projects/"
"imaginer/imaginer/zh_Hans/>\n"
"Language: zh_Hans\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.17\n"
#: data/page.codeberg.Imaginer.Imaginer.desktop.in:3 src/window.blp:9
msgid "Imaginer"
msgstr "Imaginer"
#: data/page.codeberg.Imaginer.Imaginer.appdata.xml.in:7
msgid "No description"
msgstr ""
#: src/main.py:74
msgid "Choose a directory"
msgstr ""
#: src/window.blp:19
msgid "Main Menu"
msgstr ""
#: src/window.blp:25
msgid "Error while querying the API"
msgstr ""
#: src/window.blp:47
msgid "Prompt"
msgstr ""
#: src/window.blp:53
msgid "Options"
msgstr ""
#: src/window.blp:56
msgid "Save Location"
msgstr ""
#: src/window.blp:72
msgid "(None)"
msgstr ""
#: src/window.blp:79
msgid "Provider"
msgstr ""
#: src/window.blp:84
msgid "Token"
msgstr ""
#: src/window.blp:93
msgid "_Imagine"
msgstr ""
#: src/window.blp:94
msgid "Save location is missing."
msgstr ""
#: src/window.blp:128
msgid "New Window"
msgstr ""
#: src/window.blp:135
msgid "Keyboard Shortcuts"
msgstr ""
#: src/window.blp:140
msgid "About Imaginer"
msgstr ""
#: src/window.blp:147
msgid "Stable Diffusion"
msgstr ""
#: src/window.blp:147
msgid "OpenAI"
msgstr ""
#: src/window.blp:147
msgid "Waifu Diffusion"
msgstr ""
#: src/window.blp:147
msgid "Open Journey"
msgstr ""
#: src/window.blp:147
msgid "Nitro Diffusion"
msgstr ""
#: src/window.blp:147
msgid "Analog Diffusion"
msgstr ""
#: src/window.blp:147
msgid "Portrait Plus"
msgstr ""

View File

@@ -41,6 +41,16 @@ import re
import unicodedata
from time import gmtime, strftime
class ProvidersEnum(Enum):
STABLE_DIFFUSION = 0
OPENAI = 1
WAIFU_DIFFUSION = 2
OPENJOURNEY = 3
NITRO_DIFFUSION = 4
ANALOG_DIFFUSION = 5
PORTRAIT_PLUS = 6
ANYTHING = 7
class ImaginerApplication(Adw.Application):
"""The main application singleton class."""
@@ -57,6 +67,7 @@ class ImaginerApplication(Adw.Application):
self.create_action("imagine", self.on_imagine_action, ["<primary>Return"])
self.create_action("choose_output", self.on_file_chooser, ["<primary>s"])
self.create_action("new_window", self.on_new_window_action, ["<primary>n"])
self.create_action("open_doc", self.on_open_doc_action)
def on_quit_action(self, action, _):
"""Callback for the app.quit action."""
@@ -93,6 +104,19 @@ class ImaginerApplication(Adw.Application):
response = requests.post(url, headers=headers, json=payload)
return response.content
def on_open_doc_action(self, action, _):
"""Callback for the app.open_doc action."""
url = "https://imaginer.codeberg.page/help/"
provider = self.win.provider.props.selected
if provider == ProvidersEnum.OPENAI.value:
url += "openai.html"
else:
url += "huggingface.html"
GLib.spawn_command_line_async(f"xdg-open {url}")
def on_file_chooser(self, widget, _):
"""Callback for the app.choose_output action."""
self.file_chooser.show()
@@ -123,6 +147,13 @@ class ImaginerApplication(Adw.Application):
developers=["0xMRTT https://codeberg.org/0xMRTT"],
copyright="© 2023 0xMRTT",
)
about.add_acknowledgement_section(
"Special thanks to",
[
"Upscaler https://gitlab.com/TheEvilSkeleton/Upscaler",
],
)
about.present()
def on_get_started_action(self, widget, _):
@@ -146,19 +177,12 @@ class ImaginerApplication(Adw.Application):
self.provider = self.win.provider.props.selected
class ProvidersEnum(Enum):
STABLE_DIFFUSION = 0
OPENAI = 1
WAIFU_DIFFUSION = 2
OPENJOURNEY = 3
NITRO_DIFFUSION = 4
ANALOG_DIFFUSION = 5
PORTRAIT_PLUS = 6
prompt = self.win.prompt.get_text()
negative_prompt = self.win.negative_prompt.get_text()
self.token = self.win.token.get_text()
openai.api_key = self.token
HUGGINGFACE_API = "https://api-inference.huggingface.co/models"
def thread_run():
try:
@@ -186,50 +210,79 @@ class ImaginerApplication(Adw.Application):
image_bytes = self.query(
{
"inputs": prompt,
"negative_prompts": negative_prompt
if negative_prompt
else "",
},
"https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-2-1",
f"{HUGGINGFACE_API}/stabilityai/stable-diffusion-2-1",
)
path = f"{path}-stable-diffusion.png"
case ProvidersEnum.WAIFU_DIFFUSION.value:
image_bytes = self.query(
{
"inputs": prompt,
"negative_prompts": negative_prompt
if negative_prompt
else "",
},
"https://api-inference.huggingface.co/models/hakurei/waifu-diffusion",
f"{HUGGINGFACE_API}/hakurei/waifu-diffusion",
)
path = f"{path}-waifu-diffusion.png"
case ProvidersEnum.OPENJOURNEY.value:
image_bytes = self.query(
{
"inputs": prompt,
"negative_prompts": negative_prompt
if negative_prompt
else "",
},
"https://api-inference.huggingface.co/models/prompthero/openjourney",
f"{HUGGINGFACE_API}/prompthero/openjourney-v4",
)
path = f"{path}-openjourney.png"
case ProvidersEnum.NITRO_DIFFUSION.value:
image_bytes = self.query(
{
"inputs": prompt,
"negative_prompts": negative_prompt
if negative_prompt
else "",
},
"https://api-inference.huggingface.co/models/nitrosocke/Nitro-Diffusion",
f"{HUGGINGFACE_API}/nitrosocke/Nitro-Diffusion",
)
path = f"{path}-nitro-diffusion.png"
case ProvidersEnum.ANALOG_DIFFUSION.value:
image_bytes = self.query(
{
"inputs": prompt,
"negative_prompts": negative_prompt
if negative_prompt
else "",
},
"https://api-inference.huggingface.co/models/wavymulder/Analog-Diffusion",
f"{HUGGINGFACE_API}/wavymulder/Analog-Diffusion",
)
path = f"{path}-analog-diffusion.png"
case ProvidersEnum.PORTRAIT_PLUS.value:
image_bytes = self.query(
{
"inputs": prompt,
"negative_prompts": negative_prompt
if negative_prompt
else "",
},
"https://api-inference.huggingface.co/models/wavymulder/portraitplus",
f"{HUGGINGFACE_API}/wavymulder/portraitplus",
)
path = f"{path}-portrait-plus.png"
case ProvidersEnum.ANYTHING.value:
image_bytes = self.query(
{
"inputs": prompt,
"negative_prompts": negative_prompt
if negative_prompt
else "",
},
f"{HUGGINGFACE_API}/andite/anything-v4.0",
)
path = f"{path}-anything.png"
if image_bytes:
try:
image = Image.open(io.BytesIO(image_bytes))
@@ -250,6 +303,7 @@ class ImaginerApplication(Adw.Application):
if image:
image.save(path)
self.win.image.set_file(Gio.File.new_for_path(path))
self.win.image.set_visible(True)
t = threading.Thread(target=thread_run)
t.start()

0
src/provider/__init__.py Normal file
View File

View File

@@ -3,7 +3,7 @@ using Adw 1;
template ImaginerWindow : Adw.ApplicationWindow {
default-width: 700;
default-height: 700;
default-height: 750;
width-request: 300;
height-request: 300;
title: _("Imaginer");
@@ -37,14 +37,26 @@ template ImaginerWindow : Adw.ApplicationWindow {
child:
Adw.PreferencesPage {
Adw.PreferencesGroup {
Picture image {}
height-request: 192;
Picture image {
halign: center;
visible: false;
styles ["card"]
//content-fit: cover;
//can-shrink: true;
height-request: 200;
width-request: 200;
}
}
Adw.PreferencesGroup {
Adw.EntryRow prompt {
title: _("Prompt");
}
Adw.EntryRow negative_prompt {
title: _("Negative Prompt");
}
}
@@ -81,7 +93,19 @@ template ImaginerWindow : Adw.ApplicationWindow {
}
Adw.PasswordEntryRow token {
title: _("Token");
title: _("API Token");
[suffix]
MenuButton menu_duplicate {
valign: center;
tooltip-text: _("How to get a token");
icon-name: "info-symbolic";
popover: popover_info_token;
styles [
"flat",
]
}
}
}
@@ -144,5 +168,15 @@ menu main_menu {
}
Gtk.StringList provider_model{
strings [_("Stable Diffusion"), _("OpenAI"), _("Waifu Diffusion"), _("Open Journey"), _("Nitro Diffusion"), _("Analog Diffusion"), _("Portrait Plus")]
strings [_("Stable Diffusion"), _("OpenAI"), _("Waifu Diffusion"), _("Open Journey"), _("Nitro Diffusion"), _("Analog Diffusion"), _("Portrait Plus"), _("Anything")]
}
Popover popover_info_token {
Button {
label: _("Open the documentation to see how to get a token");
action-name: "app.open_doc";
styles [
"flat",
]
}
}

View File

@@ -34,6 +34,7 @@ class ImaginerWindow(Adw.ApplicationWindow):
label_output = Gtk.Template.Child()
banner = Gtk.Template.Child()
prompt = Gtk.Template.Child()
negative_prompt = Gtk.Template.Child()
token = Gtk.Template.Child()
provider = Gtk.Template.Child()
@@ -42,11 +43,15 @@ class ImaginerWindow(Adw.ApplicationWindow):
self.settings = Gio.Settings(schema_id="page.codeberg.Imaginer.Imaginer")
self.settings.bind("width", self, "default-width",
Gio.SettingsBindFlags.DEFAULT)
self.settings.bind("height", self, "default-height",
Gio.SettingsBindFlags.DEFAULT)
self.settings.bind("is-maximized", self, "maximized",
Gio.SettingsBindFlags.DEFAULT)
self.settings.bind("is-fullscreen", self, "fullscreened",
Gio.SettingsBindFlags.DEFAULT)
self.settings.bind(
"width", self, "default-width", Gio.SettingsBindFlags.DEFAULT
)
self.settings.bind(
"height", self, "default-height", Gio.SettingsBindFlags.DEFAULT
)
self.settings.bind(
"is-maximized", self, "maximized", Gio.SettingsBindFlags.DEFAULT
)
self.settings.bind(
"is-fullscreen", self, "fullscreened", Gio.SettingsBindFlags.DEFAULT
)