[chirp_devel] [PATCH 0 of 2] [RFC] Network Source Base
# HG changeset patch # User Dan Smith dsmith@danplanet.com # Date 1334271107 25200 # Node ID 61f7edad8abd2c570a5f4d57a520183acd3ca93c # Parent 0ee4af13c81f43101fddfa04119a6459560094bf [RFC] Declare a network source radio type and make editorset run do_fetch() before starting the import. This gives us time to show status for sources that need it and give it to us (such as RadioReference). Bug #00
diff -r 0ee4af13c81f -r 61f7edad8abd chirp/chirp_common.py --- a/chirp/chirp_common.py Wed Apr 11 13:23:24 2012 +0200 +++ b/chirp/chirp_common.py Thu Apr 12 15:51:47 2012 -0700 @@ -1010,6 +1010,10 @@ class LiveRadio(Radio): pass
+class NetworkSourceRadio(Radio): + def do_fetch(self): + pass + class IcomDstarSupport: MYCALL_LIMIT = (1, 1) URCALL_LIMIT = (1, 1) diff -r 0ee4af13c81f -r 61f7edad8abd chirpui/editorset.py --- a/chirpui/editorset.py Wed Apr 11 13:23:24 2012 +0200 +++ b/chirpui/editorset.py Thu Apr 12 15:51:47 2012 -0700 @@ -251,6 +251,25 @@ def do_import(self, filen): try: src_radio = directory.get_radio_by_image(filen) + except Exception, e: + common.show_error(e) + return + + if isinstance(src_radio, chirp_common.NetworkSourceRadio): + ww = importdialog.WaitWindow("Querying...", self.parent_window) + ww.show() + def status(status): + ww.set(float(status.cur) / float(status.max), status.msg) + try: + src_radio.status_fn = status + src_radio.do_fetch() + except Exception, e: + common.show_error(e) + ww.hide() + return + ww.hide() + + try: if src_radio.get_features().has_sub_devices: src_radio = self.choose_sub_device(src_radio) except Exception, e:
# HG changeset patch # User Dan Smith dsmith@danplanet.com # Date 1334271166 25200 # Node ID a90fe5ace23ad6a26d79063c471912e504354cb8 # Parent 61f7edad8abd2c570a5f4d57a520183acd3ca93c [RFC] Make RadioReference push status during the fetch
Since we're walking a bunch of data, this helps the user not wonder if things are actually happening behind the scenes.
Tom, this should give you something to start with and hopefully improve a little. Bug #00
diff -r 61f7edad8abd -r a90fe5ace23a chirp/radioreference.py --- a/chirp/radioreference.py Thu Apr 12 15:51:47 2012 -0700 +++ b/chirp/radioreference.py Thu Apr 12 15:52:46 2012 -0700 @@ -30,7 +30,7 @@ "P25" : "P25", }
-class RadioReferenceRadio(chirp_common.Radio): +class RadioReferenceRadio(chirp_common.NetworkSourceRadio): VENDOR = "Radio Reference LLC" MODEL = "RadioReference.com"
@@ -61,15 +61,27 @@
zipcode = self._client.service.getZipcodeInfo(self._zip, self._auth) county = self._client.service.getCountyInfo(zipcode.ctid, self._auth) + + status = chirp_common.Status() + status.max = len(county.cats) + len(county.agencyList) + for cat in county.cats: + status.msg = "Fetching category %s" % cat.cName + status.cur += 1 + self.status_fn(status) print "Fetching category:", cat.cName for subcat in cat.subcats: print "\t", subcat.scName result = self._client.service.getSubcatFreqs(subcat.scid, self._auth) self._freqs += result for agency in county.agencyList: + status.cur += 1 + agency = self._client.service.getAgencyInfo(agency.aid, self._auth) for cat in agency.cats: + status.msg = "Fetching agency %s" % cat.cName + self.status_fn(status) + print "Fetching category:", cat.cName for subcat in cat.subcats: print "\t", subcat.scName @@ -153,4 +165,4 @@ print rrr.get_memory(0)
if __name__ == "__main__": - main() \ No newline at end of file + main()
participants (1)
-
Dan Smith