#############################
#  It's Bzip2's  write and read class section  #
########################## ##
import myTar, gzip, myProgress
import gtk, gtk.glade
import os.path, sys

class myGz(myTar.myTar):
    def __init__(self, nameOpen  = None):
        if nameOpen != None:
            while gtk.events_pending():
                    gtk.main_iteration(False)
            temp = myTar.myTar(nameOpen, "r:gz")
            self.FilesList = temp.FilesList
            self.tar = temp.tar
            self.sep = temp.sep
        else:
            pass
    
    def mySave(self, name, abs, tar, wndMain):
        def btnOK(widget):
           compression_lvl = compSpin.get_value_as_int()
           check_state = checkBtn.get_active()
           gzDlg.destroy()
           (path, ext) = os.path.split(name)
           (filename, ext) = os.path.splitext(ext)
           filename = '.' + filename
           
           myTar.myTar().mySave(filename, abs, tar)
           archGzip = gzip.GzipFile(name, 'wb', compression_lvl)
           file = open(filename, 'rb')
           progress = myProgress.myProgressbar(wndMain)
           while True:
               while gtk.events_pending():
                    gtk.main_iteration(False)
               buff = file.read(128)
               if buff == "":
                   file.close()
                   archGzip.close()
                   os.remove(filename)
                   if check_state == True:
                       for i in abs[1:]:
                           while gtk.events_pending():
                                gtk.main_iteration(False)
                           os.remove(i)
                   break
               else:
                   archGzip.write(buff)
           progress.destroy_progress()
        
        def btnCancel(widget):
            gzDlg.destroy()
        
        if sys.platform == 'win32':
            self.sep = '\\'
        else:
            self.sep = "/"
        
        gladedir = ".%sglade%spaker.glade" % (self.sep, self.sep)
        mainicon = ".%sicon%skoda16.png" % (self.sep, self.sep)
        xml = gtk.glade.XML(gladedir, "gzBz2Dlg")
        gzDlg = xml.get_widget("gzBz2Dlg")
        gzDlg.set_transient_for(wndMain)
        gzDlg.set_modal(True)
        gzDlg.set_icon_from_file(mainicon)
        
        compSpin = xml.get_widget("compSpin")
        checkBtn = xml.get_widget("checkBtn")
        
        mysignals = {"on_btnOK_clicked": btnOK, 
                               "on_btnCancel_clicked": btnCancel
                               }    
        xml.signal_autoconnect(mysignals)
        gzDlg.show()