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

@ -13,16 +13,23 @@ void BookmarkMgr::saveToFile(std::string bookmarkFn) {
DataNode *header = s.rootNode()->newChild("header"); DataNode *header = s.rootNode()->newChild("header");
header->newChild("version")->element()->set(wxString(CUBICSDR_VERSION).ToStdWstring()); header->newChild("version")->element()->set(wxString(CUBICSDR_VERSION).ToStdWstring());
DataNode *modems = s.rootNode()->newChild("modems"); DataNode *view_ranges = s.rootNode()->newChild("ranges");
std::lock_guard < std::mutex > lockData(busy_lock); 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");
for (auto &bmd_i : bmData) { for (auto &bmd_i : bmData) {
DataNode *group = modems->newChild("group"); DataNode *group = modems->newChild("group");
*group->newChild("@name") = bmd_i.first; *group->newChild("@name") = bmd_i.first;
for (auto &bm_i : bmd_i.second ) { for (auto &bm_i : bmd_i.second ) {
std::lock_guard < std::mutex > lockEnt(bm_i->busy_lock);
group->newChildCloneFrom("modem", bm_i->node); group->newChildCloneFrom("modem", bm_i->node);
} }
} }
@ -34,7 +41,6 @@ void BookmarkMgr::saveToFile(std::string bookmarkFn) {
} }
for (auto &r_i : this->recents) { for (auto &r_i : this->recents) {
std::lock_guard < std::mutex > lockEnt(r_i->busy_lock);
recent_modems->newChildCloneFrom("modem", r_i->node); recent_modems->newChildCloneFrom("modem", r_i->node);
} }
@ -65,6 +71,22 @@ void BookmarkMgr::loadFromFile(std::string bookmarkFn) {
return; 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")) { if (s.rootNode()->hasAnother("modems")) {
DataNode *modems = s.rootNode()->getNext("modems"); DataNode *modems = s.rootNode()->getNext("modems");
while (modems->hasAnother("group")) { while (modems->hasAnother("group")) {

View File

@ -29,6 +29,7 @@ public:
std::wstring label; std::wstring label;
long long freq;
long long startFreq; long long startFreq;
long long endFreq; long long endFreq;
}; };
@ -47,7 +48,7 @@ struct BookmarkRangeEntryCompare : public std::binary_function<BookmarkRangeEntr
{ {
bool operator()(const BookmarkRangeEntry *a, BookmarkRangeEntry *b) const 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) { void BookmarkView::activateRange(BookmarkRangeEntry *rangeEnt) {
wxGetApp().setFrequency(rangeEnt->freq);
wxGetApp().getAppFrame()->setViewState(rangeEnt->startFreq + (rangeEnt->endFreq - rangeEnt->startFreq) / 2, rangeEnt->endFreq - rangeEnt->startFreq); 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 ) { void BookmarkView::onAddRange( wxCommandEvent& event ) {
BookmarkRangeEntry *re = new BookmarkRangeEntry; BookmarkRangeEntry *re = new BookmarkRangeEntry;
re->freq = wxGetApp().getFrequency();
re->startFreq = wxGetApp().getAppFrame()->getViewCenterFreq() - (wxGetApp().getAppFrame()->getViewBandwidth()/2); re->startFreq = wxGetApp().getAppFrame()->getViewCenterFreq() - (wxGetApp().getAppFrame()->getViewBandwidth()/2);
re->endFreq = wxGetApp().getAppFrame()->getViewCenterFreq() + (wxGetApp().getAppFrame()->getViewBandwidth()/2); re->endFreq = wxGetApp().getAppFrame()->getViewCenterFreq() + (wxGetApp().getAppFrame()->getViewBandwidth()/2);
re->label = m_labelText->GetValue(); 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; } 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 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; } char operator= (char i) { element()->set(i); return i; }
unsigned char operator= (unsigned char i) { element()->set(i); return i; } unsigned char operator= (unsigned char i) { element()->set(i); return i; }