Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- from gi.repository import Gtk
- class reuse_init(object):
- def make_label(self, text):
- label = Gtk.Label(text)
- label.set_use_underline(True)
- label.set_alignment(1.0, 0.5)
- label.show()
- return label
- def make_slider_and_spinner(self, init, min, max, step, page, digits):
- controls = {'adj':Gtk.Adjustment(init, min, max, step, page), 'slider':Gtk.HScale(), 'spinner':Gtk.SpinButton()}
- controls['slider'].set_adjustment(controls['adj'])
- controls['slider'].set_draw_value(False)
- controls['spinner'].set_adjustment(controls['adj'])
- controls['spinner'].set_digits(digits)
- controls['slider'].show()
- controls['spinner'].show()
- return controls
- class ProgrammaGTK(reuse_init):
- def __init__(self):
- self.window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL)
- self.window.connect("destroy", self.on_window_destroy)
- self.window.set_title("FFmpeg video resize calculator")
- self.window.set_position(1) # 1 center, 0 none,
- self.window.set_border_width(30)
- self.window.set_default_size(500,-1)
- #----------------------------------
- # -------- table ---------------
- self.table = Gtk.Table(3, 3, True)
- self.table.set_homogeneous(False)
- self.table.set_row_spacings(8)
- self.table.set_col_spacings(8)
- #self.window.add(self.table)
- #------------------------------------
- # ------------------------------------
- self.box1 = Gtk.ComboBox()
- self.liststore = Gtk.ListStore(int,str)
- self.liststore.append([0,"W"])
- self.liststore.append([1, "H"])
- self.box1.set_model(self.liststore)
- self.cell = Gtk.CellRendererText()
- self.box1.pack_start(self.cell, True)
- self.box1.add_attribute(self.cell, 'text', 1)
- self.box1.set_active(0)
- self.table.attach(self.box1, 0, 1, 0, 1)
- self.box1.connect("changed", self.on_button1_clicked)
- #------------------------------------
- self.box2 = Gtk.ComboBox()
- self.liststore2 = Gtk.ListStore(int,str)
- self.liststore2.append([0,"16/9"])
- self.liststore2.append([1, "4/3"])
- self.box2.set_model(self.liststore2)
- self.cell = Gtk.CellRendererText()
- self.box2.pack_start(self.cell, True)
- self.box2.add_attribute(self.cell, 'text', 1)
- self.box2.set_active(0)
- self.table.attach(self.box2, 0, 1, 1, 2)
- self.box2.connect("changed", self.on_button1_clicked)
- #--------------------------------
- self.labelout = Gtk.Label("")
- self.labelout.set_selectable(1)
- #self.table.attach(self.labelout, 0, 3, 2, 3)
- #-----------------------------------------
- self.size_spinner = self.make_slider_and_spinner(702, 200, 2000, 1, 10, 0)
- self.table.attach(self.size_spinner['slider'], 1, 2, 0, 1)
- self.table.attach(self.size_spinner['spinner'], 2, 3, 0, 1)
- self.size_spinner['slider'].set_size_request(150,-1)
- self.size_spinner['adj'].set_value(702.001) #mettere decimali se no non si vede
- self.size_spinner['adj'].connect("value-changed", self.on_button1_clicked)
- #-------------------------------------------------------
- self.check = Gtk.CheckButton("lanczos")
- self.check.connect("toggled", self.on_button1_clicked)
- self.table.attach(self.check, 2, 3, 1, 2)
- #------------------------
- #self.button1 = Gtk.Button(label="Calcola")
- #self.button1.connect("clicked", self.on_button1_clicked)
- #self.table.attach(self.button1, 2, 3, 1, 2)
- #-- VBox -------------------------
- self.vbox1 = Gtk.VBox()
- self.vbox1.set_spacing(12)
- self.vbox1.pack_start(self.table, 1, 0, 0)
- self.frame = Gtk.Frame()
- self.frame.set_shadow_type(3) # 3 GTK_SHADOW_ETCHED_IN , 1 GTK_SHADOW_IN
- self.frame.set_label(" FFmpeg filter string (select and copy): ")
- self.ali1 = Gtk.Alignment()
- self.ali1.set_padding(12 ,12, 12, 12)
- self.frame.add(self.ali1)
- self.ali1.add(self.labelout)
- self.vbox1.pack_start(self.frame, 1, 0, 0)
- self.window.add (self.vbox1)
- #---------------------------------
- self.window.show_all()
- self.calcola()
- def on_window_destroy(self, *args):
- Gtk.main_quit(*args)
- def on_button1_clicked(self, button):
- self.calcola()
- def calcola(self):
- numero = self.size_spinner['adj'].get_value()
- if ( (int(numero) % 2) != 0):
- numero = int(numero) + 1
- else:
- numero = int(numero)
- dar = self.box2.get_active()
- lato = self.box1.get_active()
- if (dar == 1):
- if (lato == 0):
- n2 = numero/4*3
- else:
- n2 = numero/3*4
- setdar = ",setdar=4/3,setsar=1/1"
- else:
- if (lato == 0):
- n2 = numero/16*9
- else:
- n2 = numero/9*16
- setdar = ",setdar=16/9,setsar=1/1"
- if ( (int(n2) % 2) != 0):
- n2 = int(n2) + 1
- else:
- n2 = int(n2)
- stringa = "-vf scale="
- if (lato == 0):
- stringa = stringa + str(numero) + ":" + str(n2)
- else:
- stringa = stringa + str(n2) + ":" + str(numero)
- lanc = self.check.get_active()
- if lanc:
- stringa = stringa + ":flags=lanczos" + setdar
- else:
- stringa = stringa + setdar
- self.labelout.set_text(stringa)
- def main(self):
- Gtk.main()
- if __name__ == "__main__":
- hwg = ProgrammaGTK()
- Gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement