mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2025-09-05 14:47:52 -04:00
Add bookmark group context menu
This commit is contained in:
parent
020cef12c9
commit
fab41f30be
@ -81,6 +81,7 @@ BookmarkPanel::BookmarkPanel( wxWindow* parent, wxWindowID id, const wxPoint& po
|
|||||||
m_treeView->Connect( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, wxTreeEventHandler( BookmarkPanel::onTreeActivate ), NULL, this );
|
m_treeView->Connect( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, wxTreeEventHandler( BookmarkPanel::onTreeActivate ), NULL, this );
|
||||||
m_treeView->Connect( wxEVT_COMMAND_TREE_ITEM_COLLAPSED, wxTreeEventHandler( BookmarkPanel::onTreeCollapse ), NULL, this );
|
m_treeView->Connect( wxEVT_COMMAND_TREE_ITEM_COLLAPSED, wxTreeEventHandler( BookmarkPanel::onTreeCollapse ), NULL, this );
|
||||||
m_treeView->Connect( wxEVT_COMMAND_TREE_ITEM_EXPANDED, wxTreeEventHandler( BookmarkPanel::onTreeExpanded ), NULL, this );
|
m_treeView->Connect( wxEVT_COMMAND_TREE_ITEM_EXPANDED, wxTreeEventHandler( BookmarkPanel::onTreeExpanded ), NULL, this );
|
||||||
|
m_treeView->Connect( wxEVT_COMMAND_TREE_ITEM_MENU, wxTreeEventHandler( BookmarkPanel::onTreeItemMenu ), NULL, this );
|
||||||
m_treeView->Connect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( BookmarkPanel::onTreeSelect ), NULL, this );
|
m_treeView->Connect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( BookmarkPanel::onTreeSelect ), NULL, this );
|
||||||
m_treeView->Connect( wxEVT_COMMAND_TREE_SEL_CHANGING, wxTreeEventHandler( BookmarkPanel::onTreeSelectChanging ), NULL, this );
|
m_treeView->Connect( wxEVT_COMMAND_TREE_SEL_CHANGING, wxTreeEventHandler( BookmarkPanel::onTreeSelectChanging ), NULL, this );
|
||||||
m_labelText->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BookmarkPanel::onLabelText ), NULL, this );
|
m_labelText->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BookmarkPanel::onLabelText ), NULL, this );
|
||||||
@ -100,6 +101,7 @@ BookmarkPanel::~BookmarkPanel()
|
|||||||
m_treeView->Disconnect( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, wxTreeEventHandler( BookmarkPanel::onTreeActivate ), NULL, this );
|
m_treeView->Disconnect( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, wxTreeEventHandler( BookmarkPanel::onTreeActivate ), NULL, this );
|
||||||
m_treeView->Disconnect( wxEVT_COMMAND_TREE_ITEM_COLLAPSED, wxTreeEventHandler( BookmarkPanel::onTreeCollapse ), NULL, this );
|
m_treeView->Disconnect( wxEVT_COMMAND_TREE_ITEM_COLLAPSED, wxTreeEventHandler( BookmarkPanel::onTreeCollapse ), NULL, this );
|
||||||
m_treeView->Disconnect( wxEVT_COMMAND_TREE_ITEM_EXPANDED, wxTreeEventHandler( BookmarkPanel::onTreeExpanded ), NULL, this );
|
m_treeView->Disconnect( wxEVT_COMMAND_TREE_ITEM_EXPANDED, wxTreeEventHandler( BookmarkPanel::onTreeExpanded ), NULL, this );
|
||||||
|
m_treeView->Disconnect( wxEVT_COMMAND_TREE_ITEM_MENU, wxTreeEventHandler( BookmarkPanel::onTreeItemMenu ), NULL, this );
|
||||||
m_treeView->Disconnect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( BookmarkPanel::onTreeSelect ), NULL, this );
|
m_treeView->Disconnect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( BookmarkPanel::onTreeSelect ), NULL, this );
|
||||||
m_treeView->Disconnect( wxEVT_COMMAND_TREE_SEL_CHANGING, wxTreeEventHandler( BookmarkPanel::onTreeSelectChanging ), NULL, this );
|
m_treeView->Disconnect( wxEVT_COMMAND_TREE_SEL_CHANGING, wxTreeEventHandler( BookmarkPanel::onTreeSelectChanging ), NULL, this );
|
||||||
m_labelText->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BookmarkPanel::onLabelText ), NULL, this );
|
m_labelText->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BookmarkPanel::onLabelText ), NULL, this );
|
||||||
|
@ -174,7 +174,7 @@
|
|||||||
<event name="OnTreeItemExpanded">onTreeExpanded</event>
|
<event name="OnTreeItemExpanded">onTreeExpanded</event>
|
||||||
<event name="OnTreeItemExpanding"></event>
|
<event name="OnTreeItemExpanding"></event>
|
||||||
<event name="OnTreeItemGetTooltip"></event>
|
<event name="OnTreeItemGetTooltip"></event>
|
||||||
<event name="OnTreeItemMenu"></event>
|
<event name="OnTreeItemMenu">onTreeItemMenu</event>
|
||||||
<event name="OnTreeItemMiddleClick"></event>
|
<event name="OnTreeItemMiddleClick"></event>
|
||||||
<event name="OnTreeItemRightClick"></event>
|
<event name="OnTreeItemRightClick"></event>
|
||||||
<event name="OnTreeKeyDown"></event>
|
<event name="OnTreeKeyDown"></event>
|
||||||
|
@ -55,6 +55,7 @@ class BookmarkPanel : public wxPanel
|
|||||||
virtual void onTreeActivate( wxTreeEvent& event ) { event.Skip(); }
|
virtual void onTreeActivate( wxTreeEvent& event ) { event.Skip(); }
|
||||||
virtual void onTreeCollapse( wxTreeEvent& event ) { event.Skip(); }
|
virtual void onTreeCollapse( wxTreeEvent& event ) { event.Skip(); }
|
||||||
virtual void onTreeExpanded( wxTreeEvent& event ) { event.Skip(); }
|
virtual void onTreeExpanded( wxTreeEvent& event ) { event.Skip(); }
|
||||||
|
virtual void onTreeItemMenu( wxTreeEvent& event ) { event.Skip(); }
|
||||||
virtual void onTreeSelect( wxTreeEvent& event ) { event.Skip(); }
|
virtual void onTreeSelect( wxTreeEvent& event ) { event.Skip(); }
|
||||||
virtual void onTreeSelectChanging( wxTreeEvent& event ) { event.Skip(); }
|
virtual void onTreeSelectChanging( wxTreeEvent& event ) { event.Skip(); }
|
||||||
virtual void onLabelText( wxCommandEvent& event ) { event.Skip(); }
|
virtual void onLabelText( wxCommandEvent& event ) { event.Skip(); }
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
#include "BookmarkView.h"
|
#include "BookmarkView.h"
|
||||||
#include "CubicSDR.h"
|
#include "CubicSDR.h"
|
||||||
|
|
||||||
|
#include <wx/menu.h>
|
||||||
|
#include <wx/textdlg.h>
|
||||||
|
#define wxCONTEXT_ADD_GROUP_ID 1000
|
||||||
|
|
||||||
BookmarkView::BookmarkView( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style) : BookmarkPanel(parent, id, pos, size, style) {
|
BookmarkView::BookmarkView( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style) : BookmarkPanel(parent, id, pos, size, style) {
|
||||||
|
|
||||||
rootBranch = m_treeView->AddRoot("Root");
|
rootBranch = m_treeView->AddRoot("Root");
|
||||||
@ -8,9 +12,10 @@ BookmarkView::BookmarkView( wxWindow* parent, wxWindowID id, const wxPoint& pos,
|
|||||||
bookmarkBranch = m_treeView->AppendItem(rootBranch, "Bookmarks");
|
bookmarkBranch = m_treeView->AppendItem(rootBranch, "Bookmarks");
|
||||||
recentBranch = m_treeView->AppendItem(rootBranch, "Recents");
|
recentBranch = m_treeView->AppendItem(rootBranch, "Recents");
|
||||||
|
|
||||||
doUpdateActive = false;
|
doUpdateActive.store(true);
|
||||||
activeSel = nullptr;
|
activeSel = nullptr;
|
||||||
recentSel = nullptr;
|
recentSel = nullptr;
|
||||||
|
bookmarksInitialized = false;
|
||||||
|
|
||||||
hideProps();
|
hideProps();
|
||||||
m_propPanel->Hide();
|
m_propPanel->Hide();
|
||||||
@ -19,10 +24,10 @@ BookmarkView::BookmarkView( wxWindow* parent, wxWindowID id, const wxPoint& pos,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void BookmarkView::onUpdateTimer( wxTimerEvent& event ) {
|
void BookmarkView::onUpdateTimer( wxTimerEvent& event ) {
|
||||||
if (doUpdateActive) {
|
if (doUpdateActive.load()) {
|
||||||
doUpdateActiveList();
|
doUpdateActiveList();
|
||||||
|
|
||||||
doUpdateActive = false;
|
doUpdateActive.store(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +58,35 @@ void BookmarkView::updateTheme() {
|
|||||||
|
|
||||||
|
|
||||||
void BookmarkView::updateActiveList() {
|
void BookmarkView::updateActiveList() {
|
||||||
doUpdateActive = true;
|
doUpdateActive.store(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BookmarkView::refreshBookmarks() {
|
||||||
|
// if (!bookmarksInitialized) {
|
||||||
|
groupNames = wxGetApp().getBookmarkMgr().getGroups();
|
||||||
|
if (!groupNames.size()) {
|
||||||
|
wxGetApp().getBookmarkMgr().getGroup("Uncategorized");
|
||||||
|
groupNames = wxGetApp().getBookmarkMgr().getGroups();
|
||||||
|
}
|
||||||
|
for (auto gn_i : groupNames) {
|
||||||
|
if (groups.find(gn_i) == groups.end()) {
|
||||||
|
groups[gn_i] = m_treeView->AppendItem(bookmarkBranch, gn_i);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxTreeItemId groupItem = groups[gn_i];
|
||||||
|
m_treeView->DeleteChildren(groupItem);
|
||||||
|
|
||||||
|
std::vector<wxTreeItemId> &groupEnts = groupEntries[groupItem];
|
||||||
|
groupEnts.erase(groupEnts.begin(),groupEnts.end());
|
||||||
|
|
||||||
|
BookmarkGroup bmList = wxGetApp().getBookmarkMgr().getGroup(gn_i);
|
||||||
|
for (auto bmEnt : bmList) {
|
||||||
|
wxTreeItemId bmItem = m_treeView->AppendItem(groupItem, bmEnt->label);
|
||||||
|
groupEnts.push_back(bmItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// bookmarksInitialized = true;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
void BookmarkView::doUpdateActiveList() {
|
void BookmarkView::doUpdateActiveList() {
|
||||||
@ -81,6 +114,9 @@ void BookmarkView::doUpdateActiveList() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bookmarks
|
||||||
|
refreshBookmarks();
|
||||||
|
|
||||||
// Recents
|
// Recents
|
||||||
BookmarkList bmRecents = wxGetApp().getBookmarkMgr().getRecents();
|
BookmarkList bmRecents = wxGetApp().getBookmarkMgr().getRecents();
|
||||||
recentItems.erase(recentItems.begin(),recentItems.end());
|
recentItems.erase(recentItems.begin(),recentItems.end());
|
||||||
@ -124,6 +160,26 @@ void BookmarkView::onTreeExpanded( wxTreeEvent& event ) {
|
|||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BookmarkView::onTreeItemMenu( wxTreeEvent& event ) {
|
||||||
|
if (m_treeView->GetSelection() == bookmarkBranch) {
|
||||||
|
wxMenu menu;
|
||||||
|
menu.Append(wxCONTEXT_ADD_GROUP_ID, "Add Group");
|
||||||
|
menu.Connect(wxCONTEXT_ADD_GROUP_ID, wxEVT_MENU, (wxObjectEventFunction)&BookmarkView::onMenuItem);
|
||||||
|
PopupMenu(&menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BookmarkView::onMenuItem(wxCommandEvent& event) {
|
||||||
|
if (event.GetId() == wxCONTEXT_ADD_GROUP_ID) {
|
||||||
|
wxString stringVal = wxGetTextFromUser("Enter Group Name", "Add Group", "");
|
||||||
|
if (stringVal.ToStdString() != "") {
|
||||||
|
wxGetApp().getBookmarkMgr().getGroup(stringVal.ToStdString());
|
||||||
|
wxGetApp().getBookmarkMgr().updateActiveList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void BookmarkView::hideProps() {
|
void BookmarkView::hideProps() {
|
||||||
m_frequencyLabel->Hide();
|
m_frequencyLabel->Hide();
|
||||||
m_frequencyVal->Hide();
|
m_frequencyVal->Hide();
|
||||||
|
@ -13,7 +13,9 @@ public:
|
|||||||
void bookmarkSelection(BookmarkEntry *bmSel);
|
void bookmarkSelection(BookmarkEntry *bmSel);
|
||||||
void activateBookmark(BookmarkEntry *bmEnt);
|
void activateBookmark(BookmarkEntry *bmEnt);
|
||||||
void recentSelection(BookmarkEntry *bmSel);
|
void recentSelection(BookmarkEntry *bmSel);
|
||||||
|
void refreshBookmarks();
|
||||||
void updateTheme();
|
void updateTheme();
|
||||||
|
void onMenuItem(wxCommandEvent& event);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@ -27,6 +29,7 @@ protected:
|
|||||||
void onTreeActivate( wxTreeEvent& event );
|
void onTreeActivate( wxTreeEvent& event );
|
||||||
void onTreeCollapse( wxTreeEvent& event );
|
void onTreeCollapse( wxTreeEvent& event );
|
||||||
void onTreeExpanded( wxTreeEvent& event );
|
void onTreeExpanded( wxTreeEvent& event );
|
||||||
|
void onTreeItemMenu( wxTreeEvent& event );
|
||||||
void onTreeSelect( wxTreeEvent& event );
|
void onTreeSelect( wxTreeEvent& event );
|
||||||
void onTreeSelectChanging( wxTreeEvent& event );
|
void onTreeSelectChanging( wxTreeEvent& event );
|
||||||
void onLabelText( wxCommandEvent& event );
|
void onLabelText( wxCommandEvent& event );
|
||||||
@ -36,14 +39,22 @@ protected:
|
|||||||
void onActivate( wxCommandEvent& event );
|
void onActivate( wxCommandEvent& event );
|
||||||
void onRemove( wxCommandEvent& event );
|
void onRemove( wxCommandEvent& event );
|
||||||
|
|
||||||
bool doUpdateActive;
|
std::atomic_bool doUpdateActive;
|
||||||
wxTreeItemId rootBranch, activeBranch, bookmarkBranch, recentBranch;
|
wxTreeItemId rootBranch, activeBranch, bookmarkBranch, recentBranch;
|
||||||
std::map<std::string, wxTreeItemId> groups;
|
|
||||||
|
|
||||||
std::map<wxTreeItemId, DemodulatorInstance *> activeItems;
|
// Bookmarks
|
||||||
std::map<wxTreeItemId, BookmarkEntry *> recentItems;
|
BookmarkNames groupNames;
|
||||||
DemodulatorInstance *activeSel;
|
std::map<std::string, wxTreeItemId> groups;
|
||||||
BookmarkEntry *recentSel;
|
std::map<wxTreeItemId, std::vector<wxTreeItemId> > groupEntries;
|
||||||
BookmarkEntry *bookmarkSel;
|
BookmarkEntry *bookmarkSel;
|
||||||
|
bool bookmarksInitialized;
|
||||||
|
|
||||||
|
// Active
|
||||||
|
std::map<wxTreeItemId, DemodulatorInstance *> activeItems;
|
||||||
|
DemodulatorInstance *activeSel;
|
||||||
|
|
||||||
|
// Recent
|
||||||
|
std::map<wxTreeItemId, BookmarkEntry *> recentItems;
|
||||||
|
BookmarkEntry *recentSel;
|
||||||
|
|
||||||
};
|
};
|
Loading…
x
Reference in New Issue
Block a user