Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Zielke <kg4gjy@takeovertheworld.org>2009-05-26 05:18:58 (GMT)
committer Jack Zielke <kg4gjy@takeovertheworld.org>2009-05-26 05:18:58 (GMT)
commit5c3d687cd64e5f29c01702a0e01939e5ee4c4c6c (patch)
treea5b5f380c8f388d8dabf8cb696bd8932be338c38
parent0da5af5f8c3255dd681b10584acc7c0ff41a515f (diff)
version 10 - changed journal, old messages are bolded on load
-rw-r--r--NEWS1
-rw-r--r--activity/activity.info2
-rwxr-xr-xaprs.py156
3 files changed, 111 insertions, 48 deletions
diff --git a/NEWS b/NEWS
index 0ade83a..850de13 100644
--- a/NEWS
+++ b/NEWS
@@ -8,3 +8,4 @@ October 7 2008 - version 6 - no journal, can cancel message queue, show acks
October 18 2008 - version 7 - no journal, ack bugfix
October 18 2008 - version 8 - no journal, 8.2.0 update
November 9 2008 - version 9 - journal works, message text in bold, scroll bugfix
+November 22 2008 - version 10 - changed journal, old messages are bolded on load
diff --git a/activity/activity.info b/activity/activity.info
index 464a9bd..d609e41 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -1,6 +1,6 @@
[Activity]
name = APRS-XO
-activity_version= 9
+activity_version = 10
service_name = org.laptop.APRSXO
icon = activity-aprs-xo
exec = sugar-activity aprs.APRSActivity
diff --git a/aprs.py b/aprs.py
index a3178b0..3c62855 100755
--- a/aprs.py
+++ b/aprs.py
@@ -890,23 +890,24 @@ class APRSActivity(activity.Activity):
def write_file(self, file_path):
try:
- self.metadata['mime_type'] = 'text/plain'
-
- self.metadata['callsign'] = self.calltext.get_text()
- self.metadata['password'] = self.passtext.get_text()
- self.metadata['latDD'] = self.latDDtext.get_text()
- self.metadata['latMM'] = self.latMMtext.get_text()
- self.metadata['latmm'] = self.latmmtext.get_text()
- self.metadata['lat'] = self.latcombo.get_active_text()
- self.metadata['lonDDD'] = self.lonDDDtext.get_text()
- self.metadata['lonMM'] = self.lonMMtext.get_text()
- self.metadata['lonmm'] = self.lonmmtext.get_text()
- self.metadata['lon'] = self.loncombo.get_active_text()
- self.metadata['stationtext'] = self.stationtext.get_text()
+# self.metadata['mime_type'] = 'text/plain'
+
+ JournalData = {}
+ JournalData['callsign'] = self.calltext.get_text()
+ JournalData['password'] = self.passtext.get_text()
+ JournalData['latDD'] = self.latDDtext.get_text()
+ JournalData['latMM'] = self.latMMtext.get_text()
+ JournalData['latmm'] = self.latmmtext.get_text()
+ JournalData['lat'] = self.latcombo.get_active_text()
+ JournalData['lonDDD'] = self.lonDDDtext.get_text()
+ JournalData['lonMM'] = self.lonMMtext.get_text()
+ JournalData['lonmm'] = self.lonmmtext.get_text()
+ JournalData['lon'] = self.loncombo.get_active_text()
+ JournalData['stationtext'] = self.stationtext.get_text()
if (self.beaconbutton.get_active()):
- self.metadata['beacon'] = 'True'
+ JournalData['beacon'] = 'True'
else:
- self.metadata['beacon'] = 'False'
+ JournalData['beacon'] = 'False'
callsignlist = []
model = self.messagecombo.get_model()
@@ -915,7 +916,6 @@ class APRSActivity(activity.Activity):
callsignlist.append(model.get(iter, 0)[0])
iter = model.iter_next(iter)
- JournalData = {}
JournalData['callsignlist'] = callsignlist
if (self.help):
JournalData['messages'] = "Message Window"
@@ -934,36 +934,21 @@ class APRSActivity(activity.Activity):
def read_file(self, file_path):
self.statusbuffer.set_text("Status Window\n\n")
- self.calltext.set_text(self.metadata.get('callsign', ""))
- self.passtext.set_text(self.metadata.get('password', ""))
- self.latDDtext.set_text(self.metadata.get('latDD', "DD"))
- self.latMMtext.set_text(self.metadata.get('latMM', "MM"))
- self.latmmtext.set_text(self.metadata.get('latmm', "mm"))
- if (self.metadata.get('lat', "N") == "N"):
- self.latcombo.set_active(0)
- else:
- self.latcombo.set_active(1)
- self.lonDDDtext.set_text(self.metadata.get('lonDDD', "DDD"))
- self.lonMMtext.set_text(self.metadata.get('lonMM', "MM"))
- self.lonmmtext.set_text(self.metadata.get('lonmm', "mm"))
- if (self.metadata.get('lon', "W") == "W"):
- self.loncombo.set_active(0)
- else:
- self.loncombo.set_active(1)
- stationtext = self.metadata.get('stationtext', "")
- if (stationtext == ""):
- firstName = profile.get_nick_name().split(None, 1)[0].capitalize()
- self.stationtext.set_text("%s's XO at home." % firstName)
- else:
- self.stationtext.set_text(stationtext)
- if (self.metadata.get('beacon', "True") == "True"):
- self.beaconbutton.set_active(True)
- else:
- self.beaconbutton.set_active(False)
-
JournalData = {}
- callsignlist = ["ALL", "BEACON", "CQ", "QST"]
+ callsignlist = []
messages = "Message Window"
+ callsign = ""
+ password = ""
+ latDD = "DD"
+ latMM = "MM"
+ latmm = "mm"
+ lat = "N"
+ lonDDD = "DDD"
+ lonMM = "MM"
+ lonmm = "mm"
+ lon = "W"
+ stationtext = ""
+ beacon = "True"
try:
f = open(file_path, 'r')
JournalData = json.read(f.read())
@@ -971,11 +956,36 @@ class APRSActivity(activity.Activity):
callsignlist = JournalData['callsignlist']
if JournalData.has_key('messages'):
messages = JournalData['messages']
+ if JournalData.has_key('callsign'):
+ callsign = JournalData['callsign']
+ if JournalData.has_key('password'):
+ password = JournalData['password']
+ if JournalData.has_key('latDD'):
+ latDD = JournalData['latDD']
+ if JournalData.has_key('latMM'):
+ latMM = JournalData['latMM']
+ if JournalData.has_key('latmm'):
+ latmm = JournalData['latmm']
+ if JournalData.has_key('lat'):
+ lat = JournalData['lat']
+ if JournalData.has_key('lonDDD'):
+ lonDDD = JournalData['lonDDD']
+ if JournalData.has_key('lonMM'):
+ lonMM = JournalData['lonMM']
+ if JournalData.has_key('lonmm'):
+ lonmm = JournalData['lonmm']
+ if JournalData.has_key('lon'):
+ lon = JournalData['lon']
+ if JournalData.has_key('stationtext'):
+ stationtext = JournalData['stationtext']
+ if JournalData.has_key('beacon'):
+ beacon = JournalData['beacon']
except:
pass
finally:
f.close()
- self.messagebuffer.set_text(messages)
+# self.messagebuffer.set_text(messages)
+ self.bold_messages(messages)
self.help = False
if (messages == "Message Window"):
self.messagebox = True
@@ -983,8 +993,34 @@ class APRSActivity(activity.Activity):
self.messagebox = False
for currentcall in callsignlist:
self.add_callsign(currentcall, False)
+ self.calltext.set_text(callsign)
+ self.passtext.set_text(password)
+ self.latDDtext.set_text(latDD)
+ self.latMMtext.set_text(latMM)
+ self.latmmtext.set_text(latmm)
+ if (lat == "N"):
+ self.latcombo.set_active(0)
+ else:
+ self.latcombo.set_active(1)
+ self.lonDDDtext.set_text(lonDDD)
+ self.lonMMtext.set_text(lonMM)
+ self.lonmmtext.set_text(lonmm)
+ if (lon == "W"):
+ self.loncombo.set_active(0)
+ else:
+ self.loncombo.set_active(1)
+ if (stationtext == ""):
+ firstName = profile.get_nick_name().split(None, 1)[0].capitalize()
+ self.stationtext.set_text("%s's XO at home." % firstName)
+ else:
+ self.stationtext.set_text(stationtext)
+ if (beacon == "True"):
+ self.beaconbutton.set_active(True)
+ else:
+ self.beaconbutton.set_active(False)
def msg_check(self, data):
+ mycall = self.calltext.get_text().upper()
firstcheck = data.find("::")
secondcheck = data[firstcheck+11:firstcheck+12]
thirdcheck = data.find("{")
@@ -993,7 +1029,9 @@ class APRSActivity(activity.Activity):
strippedtocall = tocall.strip()
fromcall = data[:data.find(">")].upper()
isbulletin = self.bulletin_check(strippedtocall)
- if (isbulletin):
+ # 'mycall' check allows people with bulletin looking calls to ack messages
+ # this check does not fix the problem of sending messages to bulletin looking calls
+ if (isbulletin and strippedtocall != mycall):
message = data[firstcheck+12:]
self.add_callsign(fromcall, False)
bln_id = "%s-%s" % (fromcall, strippedtocall)
@@ -1001,7 +1039,7 @@ class APRSActivity(activity.Activity):
self.seen_bulletins[bln_id] = 1
self.message_write("%s %s:%s> %s\n" % (time.strftime("%m/%d %H:%M", time.localtime()), fromcall, strippedtocall, message), True)
else:
- if (strippedtocall == self.calltext.get_text()):
+ if (strippedtocall == mycall):
self.add_callsign(fromcall, False)
if (thirdcheck != -1):
sequence_end = data.find("}")
@@ -1078,6 +1116,11 @@ class APRSActivity(activity.Activity):
# TODO beep?
self.message_write("%s %s> %s\n" % (time.strftime("%m/%d %H:%M", time.localtime()), fromcall, message), True)
+ # TODO query check
+ if (message[0] == "?" and message[-1] == "?"):
+ pass
+
+
def disable_beacon(self, widget, data=None):
if (self.sock != None):
self.beaconbutton.set_active(False)
@@ -1368,3 +1411,22 @@ class APRSActivity(activity.Activity):
id = "%s-%s" % (call, sequence)
self.cancel_message(id)
self.current_message = {}
+
+ def bold_messages(self, messages):
+ self.messagebuffer.set_text("")
+ for line in messages.splitlines():
+ if (line[2:3] == "/" and line[5:6] == " " and line[8:9] == ":" and line[11:12] == " "):
+ if (line[12:15] == "To:"):
+ self.message_write("%s\n" % line)
+ iter = self.messagebuffer.get_iter_at_line(self.messagebuffer.get_line_count() - 2)
+ bold_end = iter.copy()
+ bold_start = iter.copy()
+ bold_end.forward_to_line_end()
+ bold_end = bold_end.backward_search("<", gtk.TEXT_SEARCH_TEXT_ONLY)
+ bold_start = bold_end[0].backward_search(">", gtk.TEXT_SEARCH_TEXT_ONLY)
+ bold_start[0].forward_chars(2)
+ self.messagebuffer.apply_tag(self.messagebold, bold_start[0], bold_end[0])
+ else:
+ self.message_write("%s\n" % line, True)
+ else:
+ self.message_write("%s\n" % line)