mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2025-09-02 21:27:49 -04:00
Improved tree behaviour, remember expansion states, rename groups, drag bookmarks between groups, remove groups, don't steal tree focus when collapsed
This commit is contained in:
parent
6237317cdb
commit
849a706871
@ -45,6 +45,7 @@ void BookmarkMgr::removeBookmark(std::string group, BookmarkEntry *be) {
|
|||||||
BookmarkList::iterator i = std::find(bmData[group].begin(), bmData[group].end(), be);
|
BookmarkList::iterator i = std::find(bmData[group].begin(), bmData[group].end(), be);
|
||||||
|
|
||||||
if (i != bmData[group].end()) {
|
if (i != bmData[group].end()) {
|
||||||
|
delete *i;
|
||||||
bmData[group].erase(i);
|
bmData[group].erase(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,7 +60,22 @@ void BookmarkMgr::removeBookmark(BookmarkEntry *be) {
|
|||||||
bmd_i.second.erase(i);
|
bmd_i.second.erase(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BookmarkMgr::moveBookmark(BookmarkEntry *be, std::string group) {
|
||||||
|
std::lock_guard < std::mutex > lockData(busy_lock);
|
||||||
|
std::lock_guard < std::mutex > lockEnt(be->busy_lock);
|
||||||
|
|
||||||
|
for (auto &bmd_i : bmData) {
|
||||||
|
BookmarkList::iterator i = std::find(bmd_i.second.begin(), bmd_i.second.end(), be);
|
||||||
|
if (i != bmd_i.second.end()) {
|
||||||
|
bmData[group].push_back(*i);
|
||||||
|
bmd_i.second.erase(i);
|
||||||
|
bmDataSorted[group] = false;
|
||||||
|
bmDataSorted[bmd_i.first] = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -71,6 +87,35 @@ void BookmarkMgr::addGroup(std::string group) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BookmarkMgr::removeGroup(std::string group) {
|
||||||
|
std::lock_guard < std::mutex > lock(busy_lock);
|
||||||
|
|
||||||
|
BookmarkMap::iterator i = bmData.find(group);
|
||||||
|
|
||||||
|
if (i != bmData.end()) {
|
||||||
|
for (auto ii : bmData[group]) {
|
||||||
|
delete ii;
|
||||||
|
}
|
||||||
|
bmData.erase(group);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BookmarkMgr::renameGroup(std::string group, std::string ngroup) {
|
||||||
|
std::lock_guard < std::mutex > lock(busy_lock);
|
||||||
|
|
||||||
|
BookmarkMap::iterator i = bmData.find(group);
|
||||||
|
BookmarkMap::iterator it = bmData.find(group);
|
||||||
|
|
||||||
|
if (i != bmData.end() && it != bmData.end()) {
|
||||||
|
for (auto ii : bmData[group]) {
|
||||||
|
bmData[ngroup].push_back(ii);
|
||||||
|
}
|
||||||
|
bmData.erase(group);
|
||||||
|
} else if (i != bmData.end()) {
|
||||||
|
bmData[ngroup] = bmData[group];
|
||||||
|
bmData.erase(group);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BookmarkList BookmarkMgr::getBookmarks(std::string group) {
|
BookmarkList BookmarkMgr::getBookmarks(std::string group) {
|
||||||
std::lock_guard < std::mutex > lock(busy_lock);
|
std::lock_guard < std::mutex > lock(busy_lock);
|
||||||
|
@ -44,8 +44,11 @@ public:
|
|||||||
void addBookmark(std::string group, BookmarkEntry *be);
|
void addBookmark(std::string group, BookmarkEntry *be);
|
||||||
void removeBookmark(std::string group, BookmarkEntry *be);
|
void removeBookmark(std::string group, BookmarkEntry *be);
|
||||||
void removeBookmark(BookmarkEntry *be);
|
void removeBookmark(BookmarkEntry *be);
|
||||||
|
void moveBookmark(BookmarkEntry *be, std::string group);
|
||||||
|
|
||||||
void addGroup(std::string group);
|
void addGroup(std::string group);
|
||||||
|
void removeGroup(std::string group);
|
||||||
|
void renameGroup(std::string group, std::string ngroup);
|
||||||
BookmarkList getBookmarks(std::string group);
|
BookmarkList getBookmarks(std::string group);
|
||||||
void getGroups(BookmarkNames &arr);
|
void getGroups(BookmarkNames &arr);
|
||||||
void getGroups(wxArrayString &arr);
|
void getGroups(wxArrayString &arr);
|
||||||
|
@ -20,6 +20,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");
|
||||||
|
|
||||||
|
expandState["active"] = true;
|
||||||
|
expandState["bookmark"] = true;
|
||||||
|
expandState["recent"] = true;
|
||||||
|
|
||||||
doUpdateActive.store(true);
|
doUpdateActive.store(true);
|
||||||
doUpdateBookmarks.store(true);
|
doUpdateBookmarks.store(true);
|
||||||
bookmarkChoice = nullptr;
|
bookmarkChoice = nullptr;
|
||||||
@ -104,19 +108,42 @@ wxTreeItemId BookmarkView::refreshBookmarks() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
wxTreeItemId bmSelFound = nullptr;
|
wxTreeItemId bmSelFound = nullptr;
|
||||||
|
|
||||||
|
std::map<std::string, bool> groupExpandState;
|
||||||
|
|
||||||
|
for (auto g_i : groups) {
|
||||||
|
groupExpandState[g_i.first] = m_treeView->IsExpanded(g_i.second);
|
||||||
|
}
|
||||||
|
|
||||||
|
groups.erase(groups.begin(),groups.end());
|
||||||
|
m_treeView->DeleteChildren(bookmarkBranch);
|
||||||
|
|
||||||
|
bool bmExpandState = expandState["bookmark"];
|
||||||
|
|
||||||
|
for (auto gn_i : groupNames) {
|
||||||
|
TreeViewItem* tvi = new TreeViewItem();
|
||||||
|
tvi->type = TreeViewItem::TREEVIEW_ITEM_TYPE_GROUP;
|
||||||
|
tvi->groupName = gn_i;
|
||||||
|
wxTreeItemId group_itm = m_treeView->AppendItem(bookmarkBranch, gn_i);
|
||||||
|
m_treeView->SetItemData(group_itm, tvi);
|
||||||
|
groups[gn_i] = group_itm;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bmExpandState) {
|
||||||
|
m_treeView->Expand(bookmarkBranch);
|
||||||
|
}
|
||||||
|
|
||||||
for (auto gn_i : groupNames) {
|
for (auto gn_i : groupNames) {
|
||||||
if (groups.find(gn_i) == groups.end()) {
|
|
||||||
TreeViewItem* tvi = new TreeViewItem();
|
|
||||||
tvi->type = TreeViewItem::TREEVIEW_ITEM_TYPE_GROUP;
|
|
||||||
tvi->groupName = gn_i;
|
|
||||||
wxTreeItemId itm = m_treeView->AppendItem(bookmarkBranch, gn_i);
|
|
||||||
m_treeView->SetItemData(itm, tvi);
|
|
||||||
groups[gn_i] = itm;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxTreeItemId groupItem = groups[gn_i];
|
wxTreeItemId groupItem = groups[gn_i];
|
||||||
m_treeView->DeleteChildren(groupItem);
|
|
||||||
|
bool groupExpanded = false;
|
||||||
|
|
||||||
|
if (groupExpandState.find(gn_i) != groupExpandState.end()) {
|
||||||
|
groupExpanded = groupExpandState[gn_i];
|
||||||
|
} else { // New
|
||||||
|
groupExpanded = true;
|
||||||
|
}
|
||||||
|
|
||||||
BookmarkList bmList = wxGetApp().getBookmarkMgr().getBookmarks(gn_i);
|
BookmarkList bmList = wxGetApp().getBookmarkMgr().getBookmarks(gn_i);
|
||||||
for (auto bmEnt : bmList) {
|
for (auto bmEnt : bmList) {
|
||||||
TreeViewItem* tvi = new TreeViewItem();
|
TreeViewItem* tvi = new TreeViewItem();
|
||||||
@ -125,11 +152,16 @@ wxTreeItemId BookmarkView::refreshBookmarks() {
|
|||||||
tvi->groupName = gn_i;
|
tvi->groupName = gn_i;
|
||||||
wxTreeItemId itm = m_treeView->AppendItem(groupItem, bmEnt->label);
|
wxTreeItemId itm = m_treeView->AppendItem(groupItem, bmEnt->label);
|
||||||
m_treeView->SetItemData(itm, tvi);
|
m_treeView->SetItemData(itm, tvi);
|
||||||
if (bookmarkSel == bmEnt) {
|
if (bookmarkSel == bmEnt && groupExpanded) {
|
||||||
bmSelFound = itm;
|
bmSelFound = itm;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (groupExpanded) {
|
||||||
|
m_treeView->Expand(groupItem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return bmSelFound;
|
return bmSelFound;
|
||||||
}
|
}
|
||||||
@ -144,6 +176,8 @@ void BookmarkView::doUpdateActiveList() {
|
|||||||
// Actives
|
// Actives
|
||||||
m_treeView->DeleteChildren(activeBranch);
|
m_treeView->DeleteChildren(activeBranch);
|
||||||
|
|
||||||
|
bool activeExpandState = expandState["active"];
|
||||||
|
|
||||||
wxTreeItemId selItem = nullptr;
|
wxTreeItemId selItem = nullptr;
|
||||||
for (auto demod_i : demods) {
|
for (auto demod_i : demods) {
|
||||||
TreeViewItem* tvi = new TreeViewItem();
|
TreeViewItem* tvi = new TreeViewItem();
|
||||||
@ -159,15 +193,17 @@ void BookmarkView::doUpdateActiveList() {
|
|||||||
m_treeView->SetItemData(itm, tvi);
|
m_treeView->SetItemData(itm, tvi);
|
||||||
|
|
||||||
if (activeDemodulator) {
|
if (activeDemodulator) {
|
||||||
if (activeDemodulator == demod_i) {
|
if (activeDemodulator == demod_i && activeExpandState) {
|
||||||
selItem = itm;
|
selItem = itm;
|
||||||
activeSel = demod_i;
|
activeSel = demod_i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (activeSel == demod_i) {
|
else if (activeSel == demod_i && activeExpandState) {
|
||||||
selItem = itm;
|
selItem = itm;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool recentExpandState = expandState["recent"];
|
||||||
|
|
||||||
// Recents
|
// Recents
|
||||||
BookmarkList bmRecents = wxGetApp().getBookmarkMgr().getRecents();
|
BookmarkList bmRecents = wxGetApp().getBookmarkMgr().getRecents();
|
||||||
@ -180,11 +216,17 @@ void BookmarkView::doUpdateActiveList() {
|
|||||||
|
|
||||||
wxTreeItemId itm = m_treeView->AppendItem(recentBranch, bmr_i->label);
|
wxTreeItemId itm = m_treeView->AppendItem(recentBranch, bmr_i->label);
|
||||||
m_treeView->SetItemData(itm, tvi);
|
m_treeView->SetItemData(itm, tvi);
|
||||||
if (recentSel == bmr_i) {
|
if (recentSel == bmr_i && recentExpandState) {
|
||||||
selItem = itm;
|
selItem = itm;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (activeExpandState) {
|
||||||
|
m_treeView->Expand(activeBranch);
|
||||||
|
}
|
||||||
|
if (recentExpandState) {
|
||||||
|
m_treeView->Expand(recentBranch);
|
||||||
|
}
|
||||||
if (selItem != nullptr) {
|
if (selItem != nullptr) {
|
||||||
m_treeView->SelectItem(selItem);
|
m_treeView->SelectItem(selItem);
|
||||||
}
|
}
|
||||||
@ -231,11 +273,28 @@ void BookmarkView::onTreeActivate( wxTreeEvent& event ) {
|
|||||||
|
|
||||||
|
|
||||||
void BookmarkView::onTreeCollapse( wxTreeEvent& event ) {
|
void BookmarkView::onTreeCollapse( wxTreeEvent& event ) {
|
||||||
|
if (event.GetItem() == activeBranch) {
|
||||||
|
expandState["active"] = false;
|
||||||
|
} else if (event.GetItem() == bookmarkBranch) {
|
||||||
|
expandState["bookmark"] = false;
|
||||||
|
} else if (event.GetItem() == recentBranch) {
|
||||||
|
expandState["recent"] = false;
|
||||||
|
}
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BookmarkView::onTreeExpanded( wxTreeEvent& event ) {
|
void BookmarkView::onTreeExpanded( wxTreeEvent& event ) {
|
||||||
|
|
||||||
|
if (event.GetItem() == activeBranch) {
|
||||||
|
expandState["active"] = true;
|
||||||
|
} else if (event.GetItem() == bookmarkBranch) {
|
||||||
|
expandState["bookmark"] = true;
|
||||||
|
} else if (event.GetItem() == recentBranch) {
|
||||||
|
expandState["recent"] = true;
|
||||||
|
}
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,6 +394,13 @@ void BookmarkView::doBookmarkRecent(std::string group, BookmarkEntry *be) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void BookmarkView::doMoveBookmark(BookmarkEntry *be, std::string group) {
|
||||||
|
wxGetApp().getBookmarkMgr().moveBookmark(be, group);
|
||||||
|
wxGetApp().getBookmarkMgr().updateBookmarks();
|
||||||
|
bookmarkSelection(be);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void BookmarkView::updateBookmarkChoices() {
|
void BookmarkView::updateBookmarkChoices() {
|
||||||
if (!bookmarkChoices.empty()) {
|
if (!bookmarkChoices.empty()) {
|
||||||
bookmarkChoices.erase(bookmarkChoices.begin(),bookmarkChoices.end());
|
bookmarkChoices.erase(bookmarkChoices.begin(),bookmarkChoices.end());
|
||||||
@ -386,7 +452,9 @@ void BookmarkView::onBookmarkChoice( wxCommandEvent &event ) {
|
|||||||
|
|
||||||
void BookmarkView::activeSelection(DemodulatorInstance *dsel) {
|
void BookmarkView::activeSelection(DemodulatorInstance *dsel) {
|
||||||
activeSel = dsel;
|
activeSel = dsel;
|
||||||
|
bookmarkSel = nullptr;
|
||||||
recentSel = nullptr;
|
recentSel = nullptr;
|
||||||
|
groupSel = "";
|
||||||
|
|
||||||
m_frequencyVal->SetLabelText(frequencyToStr(dsel->getFrequency()));
|
m_frequencyVal->SetLabelText(frequencyToStr(dsel->getFrequency()));
|
||||||
m_bandwidthVal->SetLabelText(frequencyToStr(dsel->getBandwidth()));
|
m_bandwidthVal->SetLabelText(frequencyToStr(dsel->getBandwidth()));
|
||||||
@ -435,6 +503,7 @@ void BookmarkView::bookmarkSelection(BookmarkEntry *bmSel) {
|
|||||||
bookmarkSel = bmSel;
|
bookmarkSel = bmSel;
|
||||||
recentSel = nullptr;
|
recentSel = nullptr;
|
||||||
activeSel = nullptr;
|
activeSel = nullptr;
|
||||||
|
groupSel = "";
|
||||||
|
|
||||||
m_frequencyVal->SetLabelText(frequencyToStr(bmSel->frequency));
|
m_frequencyVal->SetLabelText(frequencyToStr(bmSel->frequency));
|
||||||
m_bandwidthVal->SetLabelText(frequencyToStr(bmSel->bandwidth));
|
m_bandwidthVal->SetLabelText(frequencyToStr(bmSel->bandwidth));
|
||||||
@ -470,6 +539,7 @@ void BookmarkView::recentSelection(BookmarkEntry *bmSel) {
|
|||||||
recentSel = bmSel;
|
recentSel = bmSel;
|
||||||
activeSel = nullptr;
|
activeSel = nullptr;
|
||||||
bookmarkSel = nullptr;
|
bookmarkSel = nullptr;
|
||||||
|
groupSel = "";
|
||||||
|
|
||||||
m_frequencyVal->SetLabelText(frequencyToStr(bmSel->frequency));
|
m_frequencyVal->SetLabelText(frequencyToStr(bmSel->frequency));
|
||||||
m_bandwidthVal->SetLabelText(frequencyToStr(bmSel->bandwidth));
|
m_bandwidthVal->SetLabelText(frequencyToStr(bmSel->bandwidth));
|
||||||
@ -492,8 +562,8 @@ void BookmarkView::recentSelection(BookmarkEntry *bmSel) {
|
|||||||
|
|
||||||
clearButtons();
|
clearButtons();
|
||||||
|
|
||||||
addButton(m_buttonPanel, "Activate Recent", wxCommandEventHandler( BookmarkView::onActivateRecent ));
|
|
||||||
addBookmarkChoice(m_buttonPanel);
|
addBookmarkChoice(m_buttonPanel);
|
||||||
|
addButton(m_buttonPanel, "Activate Recent", wxCommandEventHandler( BookmarkView::onActivateRecent ));
|
||||||
|
|
||||||
showProps();
|
showProps();
|
||||||
showButtons();
|
showButtons();
|
||||||
@ -522,6 +592,7 @@ void BookmarkView::bookmarkBranchSelection() {
|
|||||||
recentSel = nullptr;
|
recentSel = nullptr;
|
||||||
activeSel = nullptr;
|
activeSel = nullptr;
|
||||||
bookmarkSel = nullptr;
|
bookmarkSel = nullptr;
|
||||||
|
groupSel = "";
|
||||||
|
|
||||||
clearButtons();
|
clearButtons();
|
||||||
hideProps();
|
hideProps();
|
||||||
@ -653,12 +724,34 @@ void BookmarkView::onAddGroup( wxCommandEvent& event ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void BookmarkView::onRemoveGroup( wxCommandEvent& event ) {
|
void BookmarkView::onRemoveGroup( wxCommandEvent& event ) {
|
||||||
|
if (groupSel == "") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxGetApp().getBookmarkMgr().removeGroup(groupSel);
|
||||||
|
|
||||||
|
groupSel = "";
|
||||||
|
|
||||||
|
wxGetApp().getBookmarkMgr().updateBookmarks();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BookmarkView::onRenameGroup( wxCommandEvent& event ) {
|
void BookmarkView::onRenameGroup( wxCommandEvent& event ) {
|
||||||
|
if (groupSel == "") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxString stringVal = "";
|
||||||
|
stringVal = wxGetTextFromUser("Rename Group", "New Group Name", groupSel);
|
||||||
|
|
||||||
|
std::string newGroupName = stringVal.ToStdString();
|
||||||
|
|
||||||
|
wxGetApp().getBookmarkMgr().renameGroup(groupSel, newGroupName);
|
||||||
|
|
||||||
|
groupSel = newGroupName;
|
||||||
|
|
||||||
|
wxGetApp().getBookmarkMgr().updateBookmarks();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -742,6 +835,8 @@ void BookmarkView::onTreeEndDrag( wxTreeEvent& event ) {
|
|||||||
} else if (dragItem && dragItem->type == TreeViewItem::TREEVIEW_ITEM_TYPE_RECENT) { // Recent -> Group Item
|
} else if (dragItem && dragItem->type == TreeViewItem::TREEVIEW_ITEM_TYPE_RECENT) { // Recent -> Group Item
|
||||||
doBookmarkRecent(tvi->groupName, dragItem->bookmarkEnt);
|
doBookmarkRecent(tvi->groupName, dragItem->bookmarkEnt);
|
||||||
m_treeView->Delete(dragItemId);
|
m_treeView->Delete(dragItemId);
|
||||||
|
} else if (dragItem && dragItem->type == TreeViewItem::TREEVIEW_ITEM_TYPE_BOOKMARK) { // Bookmark -> Group Item
|
||||||
|
doMoveBookmark(dragItem->bookmarkEnt, tvi->groupName);
|
||||||
}
|
}
|
||||||
} else if (tvi->type == TreeViewItem::TREEVIEW_ITEM_TYPE_BOOKMARK) {
|
} else if (tvi->type == TreeViewItem::TREEVIEW_ITEM_TYPE_BOOKMARK) {
|
||||||
if (dragItem && dragItem->type == TreeViewItem::TREEVIEW_ITEM_TYPE_ACTIVE) { // Active -> Same Group
|
if (dragItem && dragItem->type == TreeViewItem::TREEVIEW_ITEM_TYPE_ACTIVE) { // Active -> Same Group
|
||||||
@ -749,6 +844,8 @@ void BookmarkView::onTreeEndDrag( wxTreeEvent& event ) {
|
|||||||
} else if (dragItem && dragItem->type == TreeViewItem::TREEVIEW_ITEM_TYPE_RECENT) { // Recent -> Same Group
|
} else if (dragItem && dragItem->type == TreeViewItem::TREEVIEW_ITEM_TYPE_RECENT) { // Recent -> Same Group
|
||||||
doBookmarkRecent(tvi->groupName, dragItem->bookmarkEnt);
|
doBookmarkRecent(tvi->groupName, dragItem->bookmarkEnt);
|
||||||
m_treeView->Delete(dragItemId);
|
m_treeView->Delete(dragItemId);
|
||||||
|
} else if (dragItem && dragItem->type == TreeViewItem::TREEVIEW_ITEM_TYPE_BOOKMARK) { // Bookmark -> Same Group
|
||||||
|
doMoveBookmark(dragItem->bookmarkEnt, tvi->groupName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,8 @@ protected:
|
|||||||
|
|
||||||
void doBookmarkActive(std::string group, DemodulatorInstance *demod);
|
void doBookmarkActive(std::string group, DemodulatorInstance *demod);
|
||||||
void doBookmarkRecent(std::string group, BookmarkEntry *be);
|
void doBookmarkRecent(std::string group, BookmarkEntry *be);
|
||||||
|
void doMoveBookmark(BookmarkEntry *be, std::string group);
|
||||||
|
|
||||||
void updateBookmarkChoices();
|
void updateBookmarkChoices();
|
||||||
void addBookmarkChoice(wxWindow *parent);
|
void addBookmarkChoice(wxWindow *parent);
|
||||||
void onBookmarkChoice( wxCommandEvent &event );
|
void onBookmarkChoice( wxCommandEvent &event );
|
||||||
@ -103,6 +104,8 @@ protected:
|
|||||||
|
|
||||||
wxTreeItemId rootBranch, activeBranch, bookmarkBranch, recentBranch;
|
wxTreeItemId rootBranch, activeBranch, bookmarkBranch, recentBranch;
|
||||||
|
|
||||||
|
std::map<std::string, bool> expandState;
|
||||||
|
|
||||||
TreeViewItem *dragItem;
|
TreeViewItem *dragItem;
|
||||||
wxTreeItemId dragItemId;
|
wxTreeItemId dragItemId;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user