from fltk import *
import sys

def two_digit(val):
   r='%.2f' % val
   return r

def four_digit(val):
   r='%.4f' % val
   return r

   
class byte_convert_window:
   """Dialog window for convetion beetween bytes, Ko, Mo, Go"""
   def __init__(self):
      window = Fl_Window(100,100,360,220)
      window.label(sys.argv[0])
      self.edit1= Fl_Input(80, 25, 220, 25, "Octects:")
      self.edit2= Fl_Output(80, 55, 220, 25, "Kilo:")
      self.edit3= Fl_Output(80, 85, 220, 25, "Mega:")
      self.edit4= Fl_Output(80, 115, 220, 25, "Giga:")

      o = Fl_Button(60, 170, 70, 25, "Octets")
      o.callback(self.cb_octet)
      o = Fl_Button(150, 170, 90, 25, "Au sujet de")
      o.callback(self.cb_about)
      o = Fl_Button(250, 170, 70, 25, "Quitter")
      o.callback(self.cb_quit)

      window.end()
      window.show(len(sys.argv), sys.argv)
      Fl.run()
      
#-----------------------------------------------------------    
   def cb_about_done(self,ptr):
      self.about.hide()
        
   def cb_about(self,ptr):
      self.about = Fl_Window(300,200,'au sujet de')
      o = Fl_Text_Display(20,20,260,120)
      buf=Fl_Text_Buffer()
      o.buffer(buf)
      buf.text("Byte to Ko/Mo/Go converter\n\nversion 1.0\nJean-Louis ")
       
      o = Fl_Return_Button(120, 160, 70, 25, "Done")
      o.callback(self.cb_about_done)
      self.about.show()
#-----------------------------------------------------------    
               
   
   def cb_quit(self,ptr):
      """quit callback"""
      sys.exit(0)

   def cb_octet(self,ptr):
      """converts bytes to Ko, Mo, Go"""
      v=self.edit1.value()
      if v=='':
         return
      v2= two_digit(float(v) / 1024)
      self.edit2.value(v2)
      v2= two_digit(float(v2) / 1024)
      self.edit3.value(v2)
      v2= four_digit(float(v2) / 1024)
      self.edit4.value(v2)

            
dlg = byte_convert_window()