<div dir="ltr"><div class="gmail_default" style="font-size:small">Hi Dan,</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Thanks for the explanation.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">The ability to persist settings could be solved by using a &quot;generic JSON&quot; driver instead of the &quot;generic CSV&quot; driver. A top-level structure such as { &quot;memories&quot;: [ ... ], &quot;settings&quot;: [ ... ] } would do the trick, saved using a FileBackedRadio, and base-64-encoding the JSON to deter fiddling with the file.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">It seems to me that there&#39;s a larger problem, though, with using a generic format for persistence for particular radios. That&#39;s the inability to associate the appropriate features with the data on the way in (i.e. on loading from a file). Without some association with the &quot;real&quot; driver, values such as memory_bounds, has_bank, etc., are unknown. (For example, if I download from my IC-910H, which has a lower bound of 1, then store to JSON, then load that file, the resultant table shows a lower bound of 0, because it doesn&#39;t know any better.)</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">To solve that, I think we&#39;d need to adopt a persistence format (JSON or whatever) in the live-mode drivers, complete with VENDOR and MODEL fields for each radio. The storage format could still be generic, just with enough data to properly reconstitute it. That said, I&#39;m not sure that this is such a great idea in the first place.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">By the way, while playing around with this, I found a buglet in chirp_common.is_version_newer(). It doesn&#39;t account for a trailing &#39;dev&#39; in the version number, as we have today, so it logs two errors when comparing &#39;0.3.0dev&#39;, and then compares (0,) with (0,). I&#39;ll file a ticket.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Regarding your comment on Windows and GUI threads, yes, and in fact some GUI (and TUI) frameworks have the same restriction on all platforms, so it&#39;s good to follow this practice in any case.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Martin.</div><div class="gmail_default" style="font-size:small">KD6YAM</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 25, 2022 at 6:04 PM Dan Smith via chirp_devel &lt;<a href="mailto:chirp_devel@intrepid.danplanet.com">chirp_devel@intrepid.danplanet.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">&gt; Before I dive in and look at making changes, it would be helpful to understand the thinking behind the approach, and the intent of how it should work, particularly in regard to the points mentioned above, but also in any other related regard. I do have a local change for writing only changed memories, but I&#39;d like to have the big picture before going any further.<br>
<br>
It was a bit of an experiment, an attempt to rethink the split and maybe close the gap on the behavioral differences. I was thinking these would effectively use csv as their backing store for saving (which right now is an export, yet another step those users).  As you note, keeping track of the memories we need to upload in a single session would be easy, but unless we persist that, we&#39;ll have to (slowly) upload the whole thing if we have closed and re-opened it. Radio settings are another thing that we couldn&#39;t perisist (in CSV at least) and which would have to behave differently if the tab was closed and the serial link to the radio lost.<br>
<br>
Windows also has specific requirements about how all the GUI updates have to happen from the same thread, which is one reason for current radiothread stuff in the main branch, and minimizing what gets done where (i.e. a single simulated clone) helps address that problem.<br>
<br>
All that said, I wasn&#39;t overly thrilled with the experiment, because while it seems to be simpler and more uniform from a UX perspective, the above issues, of course, make it not as straightforward. So I dunno what the best plan is, TBH.<br>
<br>
--Dan<br>
_______________________________________________<br>
chirp_devel mailing list<br>
<a href="mailto:chirp_devel@intrepid.danplanet.com" target="_blank">chirp_devel@intrepid.danplanet.com</a><br>
<a href="http://intrepid.danplanet.com/mailman/listinfo/chirp_devel" rel="noreferrer" target="_blank">http://intrepid.danplanet.com/mailman/listinfo/chirp_devel</a><br>
Developer docs: <a href="http://chirp.danplanet.com/projects/chirp/wiki/Developers" rel="noreferrer" target="_blank">http://chirp.danplanet.com/projects/chirp/wiki/Developers</a><br>
</blockquote></div>