Created
April 13, 2014 01:55
-
-
Save hersche/10565527 to your computer and use it in GitHub Desktop.
A very beginning project, a sms-reader for the openmoko aka gta02. moved here cause i delete the repo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Little SMS-Application | |
# Was a project to learn and could be better | |
# Author: Vinzenz Hersche | |
# This code has GPL 2 as license | |
import gtk | |
import dbus | |
import sys | |
class sms: | |
currentsmsarrayindex = 0 | |
def dbusInit(self): | |
bus = dbus.SystemBus() | |
try: | |
gsm = bus.get_object('org.freesmartphone.ogsmd', '/org/freesmartphone/GSM/Device') | |
self.sim = dbus.Interface(gsm,'org.freesmartphone.GSM.SIM') | |
if(self.sim.GetSimReady()==1): | |
# sim is ready | |
self.refreshsmsnr() | |
else: | |
self.window.add(gtk.Label("simcard is still not ready, exit")) | |
self.window.show_all() | |
sys.exit("simcard is still not ready, exit") | |
except: | |
errorlabel = gtk.Label("framework doens't work, close the programm") | |
self.window.add(errorlabel) | |
self.window.show_all() | |
#sys.exit("frameworkd doesn't work") | |
def initSMSList(self): | |
try: | |
self.sim.RetrieveMessagebook('read') | |
self.smsList = gtk.ListStore(int, str, str, str, str) | |
for result in self.sim.RetrieveMessagebook('unread'): | |
self.smsList.append([result[0], result[1], result[2], result[3], result[4]]) | |
for result in self.sim.RetrieveMessagebook('read'): | |
self.smsList.append([result[0], result[1], result[2], result[3], result[4]]) | |
except Exception as error: | |
print error | |
#must be fixed | |
count = 1 | |
self.smsList = [] | |
# +2 isn't clean.. :s | |
while count < self.lastsms+2: | |
try: | |
self.smsList.append(self.sim.RetrieveMessage(count)) | |
except Exception as error: | |
print error | |
count += 1 | |
def refreshsmsnr(self): | |
self.smsinfo = self.sim.GetMessagebookInfo() | |
self.firstsms = self.smsinfo['first'] | |
self.usedsms = self.smsinfo['used'] | |
self.lastsms = self.smsinfo['last'] | |
def refreshLabels(self): | |
self.absender.set_text(self.smsList[self.currentsmsarrayindex][2]) | |
self.text.set_text(self.smsList[self.currentsmsarrayindex][3]) | |
def forward(self, widget, data=None): | |
if (len(self.smsList)-1) == self.currentsmsarrayindex: | |
self.currentsmsarrayindex = 0 | |
else: | |
self.currentsmsarrayindex += 1 | |
self.refreshLabels() | |
def backward(self, widget, data=None): | |
if self.currentsmsarrayindex == 0: | |
self.currentsmsarrayindex = len(self.smsList)-1 | |
else: | |
self.currentsmsarrayindex -= 1 | |
self.refreshLabels() | |
def deletesmsfromlist(self, widgets): | |
i = self.listcontainer[self.tree.get_selection().get_selected()[1]][2] | |
self.smsList.pop(i) | |
self.listcontainer.remove(self.tree.get_selection().get_selected()[1]) | |
self.sim.DeleteMessage(i+1) | |
self.refreshsmsnr() | |
self.refreshLabels() | |
def deletesmsfromsingle(self, widgets): | |
self.smsmList.pop(self.currentsmsarrayindex) | |
self.sim.DeleteMessage(self.currentsmsarrayindex) | |
self.refreshsmsnr() | |
self.refreshLabels() | |
def mksinglesmsgui(self): | |
self.absender = gtk.Label(self.smsList[self.currentsmsarrayindex][2]) | |
self.text = gtk.Label(self.smsList[self.currentsmsarrayindex][3]) | |
self.text.set_line_wrap(True) | |
scrolltext = gtk.ScrolledWindow() | |
scrolltext.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) | |
scrolltext.add_with_viewport(self.text) | |
last = gtk.Button('Last') | |
last.connect("clicked", self.backward) | |
next = gtk.Button('Next') | |
next.connect("clicked", self.forward) | |
buttonBox = gtk.HButtonBox() | |
#delete = gtk.Button('Delete') | |
buttonBox.pack_start(last, True, 0) | |
#buttonBox.pack_start(delete, True, 0) | |
buttonBox.pack_start(next, True, 0) | |
#delete.connect("clicked", self.sim.DeleteMessage(self.currentsmsarrayindex)) | |
vbox = gtk.VBox(True, 0) | |
vbox.pack_start(self.absender) | |
vbox.pack_start(scrolltext, True, True, 10) | |
vbox.pack_start(buttonBox, False, False, 0) | |
return vbox | |
def doubleclicksms(self, treeview, two, tree): | |
self.currentsmsarrayindex = self.smsList[treeview.get_selection().get_selected()[1]][0]-1 | |
self.refreshLabels() | |
self.tabs.set_current_page(1) | |
self.tabs.next_page() | |
def mksmslistgui(self): | |
self.smsList | |
count = 0 | |
self.tree = gtk.TreeView(self.smsList) | |
self.tree.connect("row-activated", self.doubleclicksms) | |
nrcolumn = gtk.TreeViewColumn('Nr') | |
#timecolumn = gtk.TreeViewColumn('Timestamp') | |
textcolumn = gtk.TreeViewColumn('Text') | |
nrcolumn.set_sort_column_id(0) | |
nrcell = gtk.CellRendererText() | |
#timecell = gtk.CellRendererText() | |
textcell = gtk.CellRendererText() | |
textcell.set_property('wrap-width' , 200) | |
nrcolumn.pack_start(nrcell, False) | |
#timecolumn.pack_start(timecell, True) | |
textcolumn.pack_start(textcell, True) | |
nrcolumn.set_attributes(nrcell, text=2) | |
#timecolumn.set_attributes(timecell, text=3) | |
textcolumn.set_attributes(textcell, text=3) | |
nrcolumn.set_sort_column_id(0) | |
textcolumn.set_sort_column_id(1) | |
#timecolumn.set_sort_column_id(1) | |
self.tree.append_column(nrcolumn) | |
#self.tree.append_column(timecolumn) | |
self.tree.append_column(textcolumn) | |
scroll = gtk.ScrolledWindow() | |
scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) | |
scroll.add_with_viewport(self.tree) | |
buttonBox = gtk.HButtonBox() | |
delete = gtk.Button('Delete') | |
delete.connect("clicked", self.deletesmsfromlist) | |
buttonBox.pack_start(delete) | |
allBox = gtk.VBox(False, 0) | |
allBox.pack_start(scroll, True, True, 10) | |
allBox.pack_start(buttonBox, False, False, 0) | |
return allBox | |
def mkwindow(self): | |
self.window = gtk.Window() | |
self.window.connect("destroy", lambda wid: gtk.main_quit()) | |
self.window.set_title("SMS-Reader") | |
def smsListGuiTest(self): | |
self.tabs = gtk.Notebook() | |
self.tabs.insert_page(self.mksmslistgui(), gtk.Label("List"), 1) | |
self.tabs.insert_page(self.mksinglesmsgui(), gtk.Label("Einzeln"), 2) | |
self.window.add(self.tabs) | |
def __init__(self): | |
self.mkwindow() | |
self.dbusInit() | |
self.initSMSList() | |
self.smsListGuiTest() | |
self.window.show_all() | |
gtk.main() | |
test = sms() | |
#test.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment