120 lines
4.6 KiB
Python
120 lines
4.6 KiB
Python
###########################################################
|
|
#
|
|
# FSRImageVideoUpscalerFrontend written in GTK+
|
|
#
|
|
# This code is licensed under the GPL V3 License!
|
|
# Developed 2022 by Janis Hutz
|
|
#
|
|
###########################################################
|
|
|
|
import gi
|
|
import bin.handler
|
|
import multiprocessing
|
|
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gtk
|
|
|
|
|
|
handler = bin.handler.Handler()
|
|
|
|
|
|
class HomeWindow(Gtk.Window):
|
|
def __init__(self):
|
|
super().__init__(title="Test")
|
|
self.save_file = ""
|
|
self.open_file = ""
|
|
|
|
# Spawn box
|
|
self.main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
|
self.sub_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
|
self.box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
|
|
|
# Headerbar
|
|
self.hb = Gtk.HeaderBar()
|
|
self.hb.set_show_close_button(True)
|
|
self.hb.props.title = "FSR Image & Video Upscaler"
|
|
self.set_titlebar(self.hb)
|
|
|
|
# Create filechooser button
|
|
self.filechoosebutton = Gtk.Button(label="Choose Input File")
|
|
self.filechoosebutton.connect("clicked", self.filechooser_clicked)
|
|
self.box.pack_start(self.filechoosebutton, True, True, 0)
|
|
|
|
# Create output filechooser button
|
|
self.opfchooserbutton = Gtk.Button(label="Choose Output File")
|
|
self.opfchooserbutton.connect("clicked", self.opfilechooser_clicked)
|
|
self.box.pack_start(self.opfchooserbutton, True, True, 0)
|
|
|
|
# Create start button
|
|
self.start_button = Gtk.Button(label="Start upscaling")
|
|
self.start_button.connect("clicked", self.start_clicked)
|
|
self.box.pack_start(self.start_button, True, True, 0)
|
|
|
|
# Title
|
|
self.title = Gtk.Label(label="Test")
|
|
self.title.set_text("FSR Image & Video Upscaler")
|
|
|
|
self.sub_box.pack_start(self.box, True, True, 30)
|
|
self.main_box.pack_start(self.title, True, True, 0)
|
|
self.main_box.pack_end(self.sub_box, True, True, 20)
|
|
self.add(self.main_box)
|
|
|
|
def filechooser_clicked(self, widget):
|
|
self.filechooserdialog = Gtk.FileChooserDialog(title="Choose input file", action=Gtk.FileChooserAction.OPEN)
|
|
self.filechooserdialog.add_buttons(
|
|
Gtk.STOCK_CANCEL,
|
|
Gtk.ResponseType.CANCEL,
|
|
Gtk.STOCK_OPEN,
|
|
Gtk.ResponseType.OK,
|
|
)
|
|
self.response = self.filechooserdialog.run()
|
|
if self.response == Gtk.ResponseType.OK:
|
|
print("ok, selected file:", self.filechooserdialog.get_filename())
|
|
self.open_file = self.filechooserdialog.get_filename()
|
|
elif self.response == Gtk.ResponseType.CANCEL:
|
|
print("cancel")
|
|
self.filechooserdialog.destroy()
|
|
|
|
def opfilechooser_clicked(self, widget):
|
|
self.filechooserdialog_save = Gtk.FileChooserDialog(title="Choose output file", action=Gtk.FileChooserAction.SAVE)
|
|
Gtk.FileChooser.set_do_overwrite_confirmation(self.filechooserdialog_save, True)
|
|
Gtk.FileChooser.set_current_name(self.filechooserdialog_save, "video.mp4")
|
|
self.filechooserdialog_save.add_buttons(
|
|
Gtk.STOCK_CANCEL,
|
|
Gtk.ResponseType.CANCEL,
|
|
Gtk.STOCK_SAVE,
|
|
Gtk.ResponseType.OK,
|
|
)
|
|
self.response = self.filechooserdialog_save.run()
|
|
if self.response == Gtk.ResponseType.OK:
|
|
print("ok, selected file:", self.filechooserdialog_save.get_filename())
|
|
self.save_file = self.filechooserdialog_save.get_filename()
|
|
elif self.response == Gtk.ResponseType.CANCEL:
|
|
print("cancel")
|
|
self.filechooserdialog_save.destroy()
|
|
|
|
def start_clicked(self, widget):
|
|
if str(self.open_file) != "" and str(self.save_file) != "":
|
|
print("ok")
|
|
self.go = True
|
|
if self.go:
|
|
self.scaler = multiprocessing.Process(name="scaler",
|
|
target=handler.handler,
|
|
args=("./bin/lib/FidelityFX_CLI.exe",
|
|
self.open_file,
|
|
"default",
|
|
"Quality",
|
|
self.save_file,
|
|
"./bin/lib/ffmpeg.exe")
|
|
)
|
|
self.scaler.start()
|
|
else:
|
|
print("no file specified")
|
|
|
|
|
|
win = HomeWindow()
|
|
win.set_default_size(800, 600)
|
|
win.connect("destroy", Gtk.main_quit)
|
|
win.show_all()
|
|
Gtk.main()
|