#!/usr/bin/env python
# GUI for GPS on Neo Freerunner

import gobject,gtk
import os

class WlanGui:
   dev = "eth0"

   def delete_event(self, widget, event, data=None):
      gtk.main_quit()
      return False

   def update_iwconfig(self, label):
      self.p = os.popen ("iwconfig "+self.dev, 'r')
      label.set_text (self.p.read())
      self.p.close()
      return True

   def update_ifconfig(self, label):
      self.p = os.popen ("ifconfig "+self.dev, 'r')
      label.set_text (self.p.read())
      self.p.close()
      return True

   def ifup(self, widget, label):
      os.system("ifup "+self.dev)
      self.update_iwconfig(label)
      return True

   def ifdown(self, widget, label):
      os.system("ifdown "+self.dev)
      self.update_iwconfig(label)
      return True

   def __init__(self):
      # init main window
      self.win = gtk.Window(gtk.WINDOW_TOPLEVEL)
      self.win.connect("delete_event", self.delete_event)

      # add a VBox
      self.vbox = gtk.VBox(spacing=5)
      self.win.add(self.vbox)
      self.vbox.show()

      # add a scrolledwindow
      self.iwconfig_sw = gtk.ScrolledWindow()
      self.iwconfig_sw.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
      self.vbox.pack_start(self.iwconfig_sw)
      self.iwconfig_sw.show()

      # add iwconfig label
      self.iwconfig_label = gtk.Label("")
      self.iwconfig_sw.add_with_viewport(self.iwconfig_label)
      self.update_iwconfig(self.iwconfig_label)
      self.iwconfig_label.show()
      gobject.timeout_add (10000, self.update_iwconfig, self.iwconfig_label)

      # add ifup/ifdown HBox
      self.hbox1 = gtk.HBox(spacing=5)
      self.vbox.pack_start(self.hbox1)
      self.hbox1.show()

      # add ifup/ifdown buttons
      self.ifup_button = gtk.Button("ifup eth0")
      self.hbox1.pack_start(self.ifup_button)
      self.ifup_button.connect("clicked", self.ifup, self.iwconfig_label)
      self.ifup_button.show()

      self.ifdown_button = gtk.Button("ifdown eth0")
      self.hbox1.pack_start(self.ifdown_button)
      self.ifdown_button.connect("clicked", self.ifdown, self.iwconfig_label)
      self.ifdown_button.show()
      
      # add a scrolledwindow
      self.ifconfig_sw = gtk.ScrolledWindow()
      self.ifconfig_sw.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
      self.vbox.pack_start(self.ifconfig_sw)
      self.ifconfig_sw.show()

      # add ifconfig label
      self.ifconfig_label = gtk.Label("")
      self.ifconfig_sw.add_with_viewport(self.ifconfig_label)
      self.update_ifconfig(self.ifconfig_label)
      self.ifconfig_label.show()
      gobject.timeout_add (10000, self.update_ifconfig, self.ifconfig_label)

      # show main windows
      self.win.show()
   
   def main(self):
      gtk.main()

if __name__ == '__main__':
   gui = WlanGui()
   gui.main()
