Skip to content

Instantly share code, notes, and snippets.

@hersche
Created April 13, 2014 01:55
Show Gist options
  • Save hersche/10565527 to your computer and use it in GitHub Desktop.
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
#!/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