Load/Save view ranges
This commit is contained in:
parent
9eee45bb9d
commit
cf056acfe6
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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; }
|
||||
|
|
Loading…
Reference in New Issue