neingeist
/
smstool
Archived
1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

117 lines
3.2 KiB
Python

#!/usr/bin/python
import wxversion
wxversion.select("2.8")
from wxPython.wx import *
#import bsddb
#import os
#import re
from evolutioncells import *
# Constants
SMSLEN = 160
# SimserFrame is the application
class SimserFrame(wxFrame):
def __init__(self, parent, id, title):
# Create GUI
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, "Contact:",
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.sendCtrl = wxButton(panel, 10, "Send",
wxDLG_PNT(panel, wxPoint(100, 20)),
wxDLG_SZE(panel, wxSize(30, -1)))
EVT_BUTTON(self, 10, self.OnSendClick)
self.zaehler = wxStaticText(panel, -1, str(SMSLEN),
wxDLG_PNT(panel, wxPoint(150, 20)), wxDefaultSize)
EVT_TEXT(self, 20, self.OnChange)
# Get contacts
cells = EvolutionCells()
self.contacts = cells.getContacts()
# Fill contact list and the combobox
contactlist = self.contacts.keys()
contactlist.sort()
self.contactCtrl = wxComboBox(panel, -1, contactlist[0],
wxDLG_PNT(panel, wxPoint(30, 20)),
wxDLG_SZE(panel, wxSize(60, -1)),
contactlist)
def OnCloseWindow(self, event):
self.Destroy()
def OnSendClick(self, event):
text = self.textCtrl.GetValue()
contact = self.contactCtrl.GetValue()
# Figure out if we have a number or a name
if re.search('^[+0-9]+$', contact):
nr = contact
else:
if self.contacts.has_key(contact):
nr = self.contacts[contact]
else:
self.foodialog = wxMessageDialog(self.panel,
"Contact '" + contact + "' is unknown!",
"Erros", wxOK, wxPoint(100, 100))
self.foodialog.Show(true)
return
# Remove funny characters
nr = re.sub("\(", "", nr)
nr = re.sub("\)", "", nr)
nr = re.sub(" ", "", nr)
# Quote text
text = re.sub("'", "''", text)
nr = re.sub("'", "''", nr)
# Send SMS and report back
#rc = os.system("echo '" + text + "' | gsmsendsms '" + nr + "'")
rc = os.system("echo '" + text + "' | gnokii --sendsms '" + nr + "'")
if(rc == 0):
self.foodialog = wxMessageDialog(self.panel,
"Message sent to " + nr,
"Success", wxOK, wxPoint(100, 100))
else:
self.foodialog = wxMessageDialog(self.panel,
"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 Simser(wxApp):
def OnInit(self):
frame = SimserFrame(NULL, -1, "Simser")
frame.Show(true)
self.SetTopWindow(frame)
return true
smstool=Simser(0)
smstool.MainLoop()