feat: add custom filename

This commit is contained in:
0xMRTT 2023-05-26 17:42:14 +02:00
parent 67919251c8
commit 00cfb32ab3
Signed by: 0xMRTT
GPG Key ID: 910B287304120902
3 changed files with 69 additions and 45 deletions

View File

@ -90,37 +90,37 @@ template $ImaginerWindow : Adw.ApplicationWindow {
}
}
Adw.ActionRow image_size {
title: _("Image Size");
// Adw.ActionRow image_size {
// title: _("Image Size");
Gtk.Box {
orientation: horizontal;
spacing: 4;
valign: center;
// Gtk.Box {
// orientation: horizontal;
// spacing: 4;
// valign: center;
Gtk.SpinButton image_width_spinbutton {
tooltip-text: _("Image Width");
adjustment: Gtk.Adjustment image_width_adjustment {
lower: 1;
upper: 8192;
step-increment: 1;
page-increment: 5;
};
value-changed => on_image_width_changed();
}
// Gtk.SpinButton image_width_spinbutton {
// tooltip-text: _("Image Width");
// adjustment: Gtk.Adjustment image_width_adjustment {
// lower: 1;
// upper: 8192;
// step-increment: 1;
// page-increment: 5;
// };
// value-changed => on_image_width_changed();
// }
Gtk.SpinButton image_height_spinbutton {
tooltip-text: _("Image Height");
adjustment: Gtk.Adjustment image_height_adjustment {
lower: 1;
upper: 8192;
step-increment: 1;
page-increment: 5;
};
value-changed => on_image_height_changed();
}
}
}
// Gtk.SpinButton image_height_spinbutton {
// tooltip-text: _("Image Height");
// adjustment: Gtk.Adjustment image_height_adjustment {
// lower: 1;
// upper: 8192;
// step-increment: 1;
// page-increment: 5;
// };
// value-changed => on_image_height_changed();
// }
// }
// }
}
Adw.PreferencesGroup {
@ -128,6 +128,12 @@ template $ImaginerWindow : Adw.ApplicationWindow {
margin-start: 12;
margin-end: 12;
Adw.EntryRow filename_prompt {
title: _("Filename");
text: _("bavarder-%d-%b-%Y");
}
Adw.ActionRow {
title: _("Save Location");
activatable-widget: button_output;

View File

@ -40,6 +40,7 @@ from tempfile import NamedTemporaryFile
import unicodedata
from time import gmtime, strftime
from os.path import basename, splitext
from random import randint
from .provider import PROVIDERS
import platform
@ -310,16 +311,28 @@ Providers: {self.enabled_providers}
def on_ask_action(self, widget, _):
"""Callback for the app.ask action."""
self.win.banner.set_revealed(False)
self.prompt = self.win.prompt.get_text()
self.negative_prompt = self.win.negative_prompt.get_text()
self.filename = self.win.filename_prompt.get_text()
try:
self.path = self.file_path
self.path = self.file_path + "/"
except AttributeError:
self.path = "imaginer"
else:
self.path = f"{self.path}/imaginer-{self.slugify(self.prompt)}-{strftime('%d-%b-%Y-%H-%M-%S', gmtime())}"
self.path += strftime(self.filename, gmtime())
self.path.replace(" ", "_")
try:
print(self.path)
if self.previous_path == self.path:
self.path += f"_{randint(0, 1000)}"
except AttributeError: # no previous path
pass
finally:
self.previous_path = self.path
if self.prompt == "" or self.prompt is None: # empty prompt
return
@ -344,13 +357,17 @@ Providers: {self.enabled_providers}
if image:
self.win.banner.set_revealed(False)
image.save(path)
self.win.image.set_file(Gio.File.new_for_path(path))
self.win.image.set_visible(True)
print("Image saved")
try:
image.save(path)
except OSError as e:
self.win.banner.set_title(str(e))
self.win.banner.set_revealed(True)
finally:
path = self.providers[self.provider].path("imaginer")
self.win.image.set_file(Gio.File.new_for_path(path))
self.win.image.set_visible(True)
else:
print("No image returned")
self.win.banner.set_title(_("No image found"))
self.t = KillableThread(target=thread_run)
self.t.start()

View File

@ -36,8 +36,9 @@ class ImaginerWindow(Adw.ApplicationWindow):
negative_prompt = Gtk.Template.Child()
menu = Gtk.Template.Child()
label_output = Gtk.Template.Child()
image_width_spinbutton = Gtk.Template.Child()
image_height_spinbutton = Gtk.Template.Child()
filename_prompt = Gtk.Template.Child()
#image_width_spinbutton = Gtk.Template.Child()
#image_height_spinbutton = Gtk.Template.Child()
def __init__(self, **kwargs):
super().__init__(**kwargs)
@ -62,11 +63,11 @@ class ImaginerWindow(Adw.ApplicationWindow):
"is-fullscreen", self, "fullscreened", Gio.SettingsBindFlags.DEFAULT
)
@Gtk.Template.Callback()
def on_image_width_changed(self, widget):
self.app.width = self.image_width_spinbutton.get_value_as_int()
# @Gtk.Template.Callback()
# def on_image_width_changed(self, widget):
# self.app.width = self.image_width_spinbutton.get_value_as_int()
#
@Gtk.Template.Callback()
def on_image_height_changed(self, widget):
self.app.height = self.image_height_spinbutton.get_value_as_int()
# @Gtk.Template.Callback()
# def on_image_height_changed(self, widget):
# self.app.height = self.image_height_spinbutton.get_value_as_int()