#!/usr/bin/python from wxPython.wx import * from os import system from re import sub SMSLEN = 160 #class FloatValidator(wxValidator): # def Clone (self): # return self.__class__() # def Validate(self, window): # ctrl =wxPyTypeCast(self.GetWindow(), "wxTextCtrl") # try: # value = float( ctrl.GetValue()) # return true # except ValueError: # wx.MessageBox("A text object must contain some text!", "Error") # return false # def TransferToWindow(self): # return true # def TransferFromWindow(self): # return true class SmsToolFrame(wxFrame): def __init__(self, parent, id, title): wxFrame.__init__(self, parent, id, title, wxPoint(100, 100), wxSize(450, 70)) panel = wxPanel(self, -1) self.panel = panel wxStaticText(panel, -1, "Text:", wxDLG_PNT(panel, wxPoint(4, 4)), wxDefaultSize) wxStaticText(panel, -1, "Nummer:", wxDLG_PNT(panel, wxPoint(4, 20)), wxDefaultSize) self.textCtrl = wxTextCtrl(panel, 20, "", wxDLG_PNT(panel, wxPoint(30, 4)), wxDLG_SZE(panel, wxSize(160, -1))) self.textCtrl.SetMaxLength(SMSLEN); self.textCtrl.SetFocus() self.nrCtrl = wxTextCtrl(panel, -1, "", wxDLG_PNT(panel, wxPoint(30, 20)), wxDLG_SZE(panel, wxSize(60, -1))) self.fooCtrl = wxButton(panel, 10, "Senden", wxDLG_PNT(panel, wxPoint(100, 20)), wxDLG_SZE(panel, wxSize(30, -1))) EVT_BUTTON(self, 10, self.OnFooClick) self.zaehler = wxStaticText(panel, -1, str(SMSLEN), wxDLG_PNT(panel, wxPoint(150, 20)), wxDefaultSize) EVT_TEXT(self, 20, self.OnChange) def OnCloseWindow(self, event): self.Destroy() def OnFooClick(self, event): text = self.textCtrl.GetValue() nr = self.nrCtrl.GetValue() # Quote text text = sub("'", "''", text) nr = sub("'", "''", nr) rc = system("echo '" + text + "' | gsmsendsms '" + nr + "'") if(rc == 0): self.foodialog = wxMessageDialog(self.panel, "Message sent", "Success", wxOK, wxPoint(100, 100)) else: self.foodialog = wxMessageDialog(self.panel, "gsmsendsms returned error code: " + str(rc >> 8), "Error", wxOK, wxPoint(100, 100)) self.foodialog.Show(true) def OnChange(self, event): self.zaehler.SetLabel(str(SMSLEN-len(self.textCtrl.GetValue()))) class SmsTool(wxApp): def OnInit(self): frame = SmsToolFrame(NULL, -1, "SmsTool") frame.Show(true) self.SetTopWindow(frame) return true smstool=SmsTool(0) smstool.MainLoop()