--- usr/bin/openmoko-panel-plugin 2008-08-24 17:13:20.000000000 +0200 +++ /usr/bin/openmoko-panel-plugin 2008-09-01 22:37:29.000000000 +0200 @@ -50,19 +50,28 @@ # (de)activate hardware def activateHardware (self, widget, data=None): proxy = None - if (widget == self.gpsicon): - proxy = dbus_object.bus.get_object( "org.freesmartphone.odeviced", "/org/freesmartphone/Device/PowerControl/" + "GPS" ) - if (widget == self.gsmicon): - proxy = dbus_object.bus.get_object( "org.freesmartphone.odeviced", "/org/freesmartphone/Device/PowerControl/" + "GSM" ) - if (widget == self.wifiicon): - proxy = dbus_object.bus.get_object( "org.freesmartphone.odeviced", "/org/freesmartphone/Device/PowerControl/" + "WiFi" ) - if (widget == self.bticon): - proxy = dbus_object.bus.get_object( "org.freesmartphone.odeviced", "/org/freesmartphone/Device/PowerControl/" + "Bluetooth" ) - iface = Interface( proxy, "org.freesmartphone.Device.PowerControl" ) - if ( iface.GetPower( ) == 1): - iface.SetPower(0); + if (widget == self.kbdicon): + if self.kbdstate: + os.system("kill -s KILL `pidof /usr/bin/matchbox-keyboard`") + else: + os.system("matchbox-keyboard &") + self.kbdstate = not self.kbdstate + self.update_status_icon(); + self.update_tooltip(); else: - iface.SetPower(1); + if (widget == self.gpsicon): + proxy = dbus_object.bus.get_object( "org.freesmartphone.odeviced", "/org/freesmartphone/Device/PowerControl/" + "GPS" ) + if (widget == self.gsmicon): + proxy = dbus_object.bus.get_object( "org.freesmartphone.odeviced", "/org/freesmartphone/Device/PowerControl/" + "GSM" ) + if (widget == self.wifiicon): + proxy = dbus_object.bus.get_object( "org.freesmartphone.odeviced", "/org/freesmartphone/Device/PowerControl/" + "WiFi" ) + if (widget == self.bticon): + proxy = dbus_object.bus.get_object( "org.freesmartphone.odeviced", "/org/freesmartphone/Device/PowerControl/" + "Bluetooth" ) + iface = Interface( proxy, "org.freesmartphone.Device.PowerControl" ) + if ( iface.GetPower( ) == 1): + iface.SetPower(0); + else: + iface.SetPower(1); # Show_Hide callback @@ -104,6 +113,7 @@ self.gsmstate = 0; self.gpsstate = 0; self.btstate = 0; + self.kbdstate = 0; self.thread_terminate = False; self.dbus_objectInit(); self.resources_proxy = {}; @@ -161,6 +171,13 @@ self.batteryicon.connect("popup_menu", self.popup); self.batteryicon.set_visible(True); + self.kbdicon = gtk.StatusIcon(); + self.kbdicon.set_from_file(self.get_icon("kbd")); + self.kbdicon.set_tooltip(self.get_tooltip("kbd")); + self.kbdicon.connect("activate", self.activateHardware); + self.kbdicon.connect("popup_menu", self.popup); + self.kbdicon.set_visible(True); + # set correct image for icon def update_status_icon( self ): self.wifiicon.set_from_file(self.get_icon("wifi")); @@ -168,6 +185,7 @@ self.gsmicon.set_from_file(self.get_icon("gsm")); self.bticon.set_from_file(self.get_icon("bluetooth")); self.batteryicon.set_from_file(self.get_icon("battery")); + self.kbdicon.set_from_file(self.get_icon("kbd")); # set tool tips def update_tooltip( self ): @@ -176,6 +194,7 @@ self.gsmicon.set_tooltip(self.get_tooltip("gsm")); self.bticon.set_tooltip(self.get_tooltip("bluetooth")); self.batteryicon.set_tooltip(self.get_tooltip("battery")); + self.kbdicon.set_tooltip(self.get_tooltip("kbd")); # dbus init def dbus_objectInit( self ): @@ -214,7 +233,7 @@ self.update_status_icon(); self.update_tooltip(); - time.sleep(15); + time.sleep(30); # starting the thread def set_timed_status_update( self ): @@ -223,6 +242,8 @@ # selecting the right icon def get_icon( self, type): + if (type == "kbd"): + return "%s/matchbox-keyboard_%d.png" % (icondir,self.kbdstate); if (type == "gsm"): return "%s/gsm_%d.png" % (icondir,self.gsmstate); if (type == "bluetooth"): @@ -264,16 +285,18 @@ # creating tooltip string def get_tooltip( self, type ): tooltip = "foobar" + if (type == "kbd"): + tooltip = "Keyboard is %s" % self.kbdstate; if (type == "battery"): tooltip = "Battery at %s%%" % self.batcharge; if (type == "gsm"): - tooltip = "GSM State is %d" % self.gsmstate; + tooltip = "GSM State is %s" % self.gsmstate; if (type == "bluetooth"): - tooltip = "Bluetooth State is %d" % self.btstate; + tooltip = "Bluetooth State is %s" % self.btstate; if (type == "gps"): - tooltip = "GPS State is %d" % self.gpsstate; + tooltip = "GPS State is %s" % self.gpsstate; if (type == "wifi"): - tooltip = "Wifi State is %d" % self.wifistate; + tooltip = "Wifi State is %s" % self.wifistate; return tooltip; #----------------------------------------------------------------------------#