Load/Save view ranges

This commit is contained in:
Charles J. Cliffe 2016-12-27 00:46:12 -05:00
parent 9eee45bb9d
commit cf056acfe6
4 changed files with 32 additions and 6 deletions

View File

@ -12,17 +12,24 @@ void BookmarkMgr::saveToFile(std::string bookmarkFn) {
DataTree s("cubicsdr_bookmarks");
DataNode *header = s.rootNode()->newChild("header");
header->newChild("version")->element()->set(wxString(CUBICSDR_VERSION).ToStdWstring());
DataNode *view_ranges = s.rootNode()->newChild("ranges");
for (auto re_i : ranges) {
DataNode *range = view_ranges->newChild("range");
*range->newChild("label") = re_i->label;
*range->newChild("freq") = re_i->freq;
*range->newChild("start") = re_i->startFreq;
*range->newChild("end") = re_i->endFreq;
}
DataNode *modems = s.rootNode()->newChild("modems");
std::lock_guard < std::mutex > lockData(busy_lock);
for (auto &bmd_i : bmData) {
DataNode *group = modems->newChild("group");
*group->newChild("@name") = bmd_i.first;
for (auto &bm_i : bmd_i.second ) {
std::lock_guard < std::mutex > lockEnt(bm_i->busy_lock);
group->newChildCloneFrom("modem", bm_i->node);
}
}
@ -34,7 +41,6 @@ void BookmarkMgr::saveToFile(std::string bookmarkFn) {
}
for (auto &r_i : this->recents) {
std::lock_guard < std::mutex > lockEnt(r_i->busy_lock);
recent_modems->newChildCloneFrom("modem", r_i->node);
}
@ -64,6 +70,22 @@ void BookmarkMgr::loadFromFile(std::string bookmarkFn) {
// TODO: if exists; inform user & optionally load backup
return;
}
if (s.rootNode()->hasAnother("ranges")) {
DataNode *view_ranges = s.rootNode()->getNext("ranges");
while (view_ranges->hasAnother("range")) {
DataNode *range = view_ranges->getNext("range");
BookmarkRangeEntry *re = new BookmarkRangeEntry;
range->getNext("label")->element()->get(re->label);
range->getNext("freq")->element()->get(re->freq);
range->getNext("start")->element()->get(re->startFreq);
range->getNext("end")->element()->get(re->endFreq);
addRange(re);
}
}
if (s.rootNode()->hasAnother("modems")) {
DataNode *modems = s.rootNode()->getNext("modems");

View File

@ -29,6 +29,7 @@ public:
std::wstring label;
long long freq;
long long startFreq;
long long endFreq;
};
@ -47,7 +48,7 @@ struct BookmarkRangeEntryCompare : public std::binary_function<BookmarkRangeEntr
{
bool operator()(const BookmarkRangeEntry *a, BookmarkRangeEntry *b) const
{
return a->startFreq < b->startFreq;
return a->freq < b->freq;
}
};

View File

@ -792,6 +792,7 @@ void BookmarkView::activateBookmark(BookmarkEntry *bmEnt) {
void BookmarkView::activateRange(BookmarkRangeEntry *rangeEnt) {
wxGetApp().setFrequency(rangeEnt->freq);
wxGetApp().getAppFrame()->setViewState(rangeEnt->startFreq + (rangeEnt->endFreq - rangeEnt->startFreq) / 2, rangeEnt->endFreq - rangeEnt->startFreq);
}
@ -1173,6 +1174,7 @@ void BookmarkView::onRenameGroup( wxCommandEvent& event ) {
void BookmarkView::onAddRange( wxCommandEvent& event ) {
BookmarkRangeEntry *re = new BookmarkRangeEntry;
re->freq = wxGetApp().getFrequency();
re->startFreq = wxGetApp().getAppFrame()->getViewCenterFreq() - (wxGetApp().getAppFrame()->getViewBandwidth()/2);
re->endFreq = wxGetApp().getAppFrame()->getViewCenterFreq() + (wxGetApp().getAppFrame()->getViewBandwidth()/2);
re->label = m_labelText->GetValue();

View File

@ -293,6 +293,7 @@ public:
operator vector<long double> () { vector<long double> v; element()->get(v); return v; }
const string &operator= (const string &s) { element()->set(s); return s; }
const wstring &operator= (const wstring &s) { element()->set(s); return s; }
char operator= (char i) { element()->set(i); return i; }
unsigned char operator= (unsigned char i) { element()->set(i); return i; }