diff --git a/src/window.blp b/src/window.blp new file mode 100644 index 0000000..e6a7385 --- /dev/null +++ b/src/window.blp @@ -0,0 +1,148 @@ +using Gtk 4.0; +using Adw 1; + +template ImaginerWindow : Adw.ApplicationWindow { + default-width: 700; + default-height: 600; + width-request: 300; + height-request: 300; + title: _("Imaginer"); + + Box { + orientation: vertical; + + Adw.HeaderBar { + [end] + MenuButton { + icon-name: "open-menu-symbolic"; + menu-model: main_menu; + tooltip-text: _("Main Menu"); + } + + } + + Adw.Banner banner { + title: _("Error while querying the API"); + revealed: false; + } + + Adw.ToastOverlay toast { + Stack stack_imaginer { + transition-type: crossfade; + + + + StackPage { + name: "stack_imagine"; + child: + Adw.PreferencesPage { + Adw.PreferencesGroup { + Picture image {} + height-request: 192; + } + + Adw.PreferencesGroup { + + Adw.EntryRow prompt { + title: _("Prompt"); + + } + } + + Adw.PreferencesGroup { + title: _("Options"); + + Adw.ActionRow { + title: _("Save Location"); + activatable-widget: button_output; + + + Button button_output { + valign: center; + action-name: "app.choose_output"; + + Box { + spacing: 6; + + Image { + icon-name: "document-open-symbolic"; + } + + Label label_output { + label: _("(None)"); + } + } + } + } + + Adw.ComboRow provider { + title: _("Provider"); + model: provider_model; + } + + Adw.PasswordEntryRow token { + title: _("Token"); + + } + } + + Adw.PreferencesGroup { + Button button_imagine { + valign: center; + halign: center; + label: _("_Imagine"); + tooltip-text: _("Save location is missing."); + use-underline: true; + sensitive: false; + action-name: "app.imagine"; + + styles [ + "suggested-action", + "pill", + ] + } + } + } + + ; + } + + StackPage { + name: "stack_loading"; + child: + Adw.StatusPage { + Spinner spinner_loading { + valign: center; + } + }; + } + + } + } + } +} + +menu main_menu { + section { + item { + label: _("New Window"); + action: "app.new_window"; + } + } + + section { + item { + label: _("Keyboard Shortcuts"); + action: "win.show-help-overlay"; + } + + item { + label: _("About Imaginer"); + action: "app.about"; + } + } +} + +Gtk.StringList provider_model{ + strings [_("Stable Diffusion"), _("OpenAI"), _("Waifu Diffusion"), _("Open Journey"), _("Nitro Diffusion"), _("Analog Diffusion"), _("Portrait Plus")] +} diff --git a/src/window.py b/src/window.py new file mode 100644 index 0000000..d7392dc --- /dev/null +++ b/src/window.py @@ -0,0 +1,40 @@ +# window.py +# +# Copyright 2023 Me +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# SPDX-License-Identifier: GPL-3.0-or-later + +from gi.repository import Adw +from gi.repository import Gtk + +@Gtk.Template(resource_path='/io/github/ImaginerApp/Imaginer/window.ui') +class ImaginerWindow(Adw.ApplicationWindow): + __gtype_name__ = 'ImaginerWindow' + + toast = Gtk.Template.Child() + stack_imaginer = Gtk.Template.Child() + spinner_loading = Gtk.Template.Child() + image = Gtk.Template.Child() + button_output = Gtk.Template.Child() + button_imagine = Gtk.Template.Child() + label_output = Gtk.Template.Child() + banner = Gtk.Template.Child() + prompt = Gtk.Template.Child() + token = Gtk.Template.Child() + provider = Gtk.Template.Child() + + def __init__(self, **kwargs): + super().__init__(**kwargs)