#!/usr/bin/python
# coding: utf-8
try :
import sys , pygtk
pygtk . require ( '2.0' )
except :
print ' PyGTK'
sys . exit ( 1 )
import gtk , os , time
class GUI ( object ) :
def __init__ ( self ) :
self . wTree = gtk . Builder ( )
#
self . wTree . add_from_file ( "convert.glade" )
#
self . wTree . connect_signals ( self )
self . window1 = self . wTree . get_object ( "window1" )
self . progressdialog = self . wTree . get_object ( "progressdialog" )
self . progressbar_label = self . wTree . get_object ( "progressbar_label" )
self . window1 . show ( )
#
self . wTree . get_object ( "size" ) . set_value ( 100 )
self . wTree . get_object ( "quality" ) . set_value ( 95 )
self . progressbar = self . wTree . get_object ( "progressbar" )
def on_cancel ( self , widget ) :
gtk . main_quit ( )
def on_progressdialog_close ( self , * args ) :
self . stop = True
self . progressdialog . hide ( )
return True
if __name__ = = "__main__" :
app = GUI ( )
gtk . main ( )
def on_start ( self , widget ) :
self . progressdialog . show ( )
self . stop = False
# GUI
self . size = int ( self . wTree . get_object ( "size" ) . get_value ( ) )
self . quality = int ( self . wTree . get_object ( "quality" ) . get_value ( ) )
self . from_dir = self . wTree . get_object ( "from_dir" ) . get_current_folder ( )
self . to_dir = self . wTree . get_object ( "to_dir" ) . get_current_folder ( )
files = [ ]
all_files = os . listdir ( self . from_dir )
for f in all_files :
fullname = os . path . join ( self . from_dir , f )
if os . path . isfile ( fullname ) :
files . append ( f )
count = len ( files )
i = 1.0
for file in files :
#
if self . stop :
break
self . progressbar_label . set_text ( file )
self . progressbar . set_fraction ( i / count )
os . popen ( 'convert -resize ' + str ( self . size ) + ' -quality ' + str ( self . quality ) + ' ' + os . path . join ( self . from_dir , file ) + ' ' + os . path . join ( self . to_dir , file ) )
#
while gtk . events_pending ( ) :
gtk . main_iteration ( )
time . sleep ( 5 )
i + = 1
self . progressdialog . hide ( )
while gtk . events_pending ( ) :
gtk . main_iteration ( )
#!/usr/bin/python
# coding: utf-8
try :
import sys , pygtk
pygtk . require ( '2.0' )
except :
print ' PyGTK'
sys . exit ( 1 )
import threading , gtk , os , time
class GUI ( object ) :
def __init__ ( self ) :
self . wTree = gtk . Builder ( )
#
self . wTree . add_from_file ( "convert.glade" )
#
self . wTree . connect_signals ( self )
self . window1 = self . wTree . get_object ( "window1" )
self . dialog = {
"progressdialog" : self . wTree . get_object ( "progressdialog" ) ,
"progressbar_label" : self . wTree . get_object ( "progressbar_label" ) ,
"progressbar" : self . wTree . get_object ( "progressbar" )
}
self . window1 . show ( )
#
self . wTree . get_object ( "size" ) . set_value ( 100 )
self . wTree . get_object ( "quality" ) . set_value ( 95 )
def on_cancel ( self , widget ) :
gtk . main_quit ( )
def on_progressdialog_close ( self , * args ) :
self . work . stop ( )
self . dialog [ 'progressdialog' ] . hide ( )
return True
def on_start ( self , widget ) :
self . dialog [ 'progressdialog' ] . show ( )
#
self . data = {
'size' : int ( self . wTree . get_object ( "size" ) . get_value ( ) ) ,
'quality' : int ( self . wTree . get_object ( "quality" ) . get_value ( ) ) ,
'from_dir' : self . wTree . get_object ( "from_dir" ) . get_current_folder ( ) ,
'to_dir' : self . wTree . get_object ( "to_dir" ) . get_current_folder ( )
}
files = [ ]
all_files = os . listdir ( self . data [ 'from_dir' ] )
for f in all_files :
fullname = os . path . join ( self . data [ 'from_dir' ] , f )
if os . path . isfile ( fullname ) :
files . append ( f )
self . work = Worker ( self . dialog , self . data , files )
self . work . start ( )
if __name__ = = "__main__" :
gtk . gdk . threads_init ( )
app = GUI ( )
gtk . gdk . threads_enter ( )
gtk . main ( )
gtk . gdk . threads_leave ( )
class Worker ( threading . Thread ) :
#
stopthread = threading . Event ( )
def __init__ ( self , dialog , data , files ) :
threading . Thread . __init__ ( self )
self . dialog = dialog
self . data = data
self . files = files
def run ( self ) :
count = len ( self . files )
i = 1.0
for file in self . files :
#
if ( self . stopthread . isSet ( ) ) :
self . stopthread . clear ( )
break
self . dialog [ 'progressbar' ] . set_fraction ( i / count )
self . dialog [ 'progressbar_label' ] . set_text ( file )
os . popen ( 'convert -resize ' + str ( self . data [ 'size' ] ) + ' -quality ' + str ( self . data [ 'quality' ] ) + ' ' + os . path . join ( self . data [ 'from_dir' ] , file ) + ' ' + os . path . join ( self . data [ 'to_dir' ] , file ) )
time . sleep ( 2 )
i + = 1
#
self . stopthread . clear ( )
#
self . dialog [ 'progressdialog' ] . hide ( )
def stop ( self ) :
self . stopthread . set ( )
self.dialog['progressbar'].set_fraction(i/count)
self.dialog['progressbar_label'].set_text(file)
Source: https://habr.com/ru/post/72431/
All Articles