From 5c3d687cd64e5f29c01702a0e01939e5ee4c4c6c Mon Sep 17 00:00:00 2001 From: Jack Zielke Date: Tue, 26 May 2009 05:18:58 +0000 Subject: version 10 - changed journal, old messages are bolded on load --- 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) -- cgit v0.9.1