: m_ImageList(16, 16,
true, 0), m_FeaturePanel()
74wxWindowID
id,
constwxString& caption,
constwxPoint& pos,
constwxSize&
size,
longstyle)
75: m_ImageList(16, 16,
true, 0), m_FeaturePanel(featurePanel)
78 Create(parent,
id, caption, pos,
size, style);
84SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
85CDialog::Create( parent,
id, caption, pos,
size, style );
90GetSizer()->SetSizeHints(
this);
95SetSize(ConvertDialogToPixels(wxSize(375, 200)));
120 static boolsImagesRegistered =
false;
121 if(!sImagesRegistered) {
125sImagesRegistered =
true;
128wxBitmap
bmp= wxArtProvider::GetBitmap(
wxT(
"tracks::active"));
130 bmp= wxArtProvider::GetBitmap(
wxT(
"tracks::search"));
137 classCTreeItemTrackData :
publicwxTreeItemData
140CTreeItemTrackData() {}
155 virtual stringGetDisplayName()
const 158 if(m_PaneTrack->GetKey().empty() && !m_PaneTrack->IsNA() && m_PaneTrack->GetTrack())
159trackName = m_PaneTrack->GetTrack()->GetFullTitle();
160 if(trackName.empty()) trackName = m_PaneTrack->GetDisplayName();
161 if(trackName.empty()) trackName = m_PaneTrack->GetName();
167 returnm_PaneTrack->GetSource();
170 virtual stringGetCategory()
const 172 stringcategory = m_PaneTrack->GetCategory();
173 if(category.empty()) {
180 virtual stringGetSubCategory()
const{
returnm_PaneTrack->GetSubcategory(); }
181 virtual stringGetComments()
const{
returnm_PaneTrack->GetComments(); }
182 virtual boolGetVisible()
const{
returnm_Toggled ? !m_Visible : m_Visible; }
183 virtual voidSetVisible(
boolvisible) { m_Toggled = (m_Visible != visible); }
186 boolGetToggled()
const{
returnm_Toggled; }
191 boolm_Toggled =
false;
199: m_TreeCtrl(treeCtrl)
200, m_VisibleTracksItemData(new CTreeItemTrackData())
201, m_AllTracksItemData()
202, m_AllTracks(allTracks)
205 if(!m_RootId.IsOk())
206m_RootId = m_TreeCtrl.AddRoot(
wxT(
""), -1, -1);
208m_VisibleTracksId = m_TreeCtrl.AppendItem(m_RootId,
wxT(
"Visible Tracks"), -1, -1, m_VisibleTracksItemData);
210m_AllTracksItemData =
dynamic_cast<CTreeItemTrackData*
>(m_TreeCtrl.GetItemData(m_RootId));
211 if(!m_AllTracksItemData)
212m_AllTracksId = m_TreeCtrl.AppendItem(m_RootId,
wxT(
"All Tracks"), -1, -1, (m_AllTracksItemData =
newCTreeItemTrackData()));
215wxTreeItemId GetAllTracksItem()
const{
returnm_AllTracksId; }
222wxTreeCtrl& m_TreeCtrl;
224CTreeItemTrackData* m_VisibleTracksItemData;
225CTreeItemTrackData* m_AllTracksItemData;
229wxTreeItemId m_RootId;
230wxTreeItemId m_VisibleTracksId;
231wxTreeItemId m_AllTracksId;
234 classCTopLevelContainers
241m_Proxies.push_back(proxy);
250 constvector<CTempTrackProxy*>& GetProxies()
const{
returnm_Proxies; }
252vector<CTempTrackProxy*> m_Proxies;
257CTrackDlgProxyInfo*
i=
newCTrackDlgProxyInfo(*proxy, visible);
258m_AllTracks.push_back(
i);
260m_AllTracksItemData->GetTracks().push_back(
i);
261 if(
i->GetVisible())
262m_VisibleTracksItemData->GetTracks().push_back(
i);
264wxString category = wxString::FromUTF8(
i->GetCategory().c_str());
265 if(category.empty()) category =
wxT(
"[Unknown]");
267wxString subCategory = wxString::FromUTF8(
i->GetSubCategory().c_str());
268 if(subCategory.empty()) subCategory =
wxT(
"Uncategorized");
270wxTreeItemIdValue cookie;
271wxTreeItemId categoryItem;
273wxTreeItemId child = m_TreeCtrl.GetFirstChild(m_RootId, cookie);
276 if(child != m_VisibleTracksId && child != m_AllTracksId) {
277 if(category == m_TreeCtrl.GetItemText(child)) {
278categoryItem = child;
282child = m_TreeCtrl.GetNextChild(m_RootId, cookie);
285 if(!categoryItem.IsOk())
286categoryItem = m_TreeCtrl.AppendItem(m_RootId, category, -1, -1,
newCTreeItemTrackData());
288CTreeItemTrackData*
data=
dynamic_cast<CTreeItemTrackData*
>(m_TreeCtrl.GetItemData(categoryItem));
289 data->GetTracks().push_back(
i);
291wxTreeItemId subCategoryItem;
292child = m_TreeCtrl.GetFirstChild(categoryItem, cookie);
295 if(subCategory == m_TreeCtrl.GetItemText(child)) {
296subCategoryItem = child;
299child = m_TreeCtrl.GetNextChild(categoryItem, cookie);
302 if(!subCategoryItem.IsOk())
303subCategoryItem = m_TreeCtrl.AppendItem(categoryItem, subCategory, -1, -1,
newCTreeItemTrackData());
305 data=
dynamic_cast<CTreeItemTrackData*
>(m_TreeCtrl.GetItemData(subCategoryItem));
306 data->GetTracks().push_back(
i);
311 voids_CleanSingleChild(wxTreeCtrl& treeCtrl, wxTreeItemId item) {
312wxTreeItemIdValue cookie;
313wxTreeItemId child = treeCtrl.GetFirstChild(item, cookie);
316 if(treeCtrl.GetChildrenCount(child) == 1) {
317wxTreeItemIdValue cookie2;
318wxTreeItemId sub = treeCtrl.GetFirstChild(child, cookie2);
319 if(treeCtrl.GetItemText(sub) ==
"Uncategorized")
320treeCtrl.DeleteChildren(child);
322child = treeCtrl.GetNextChild(item, cookie);
333wxBoxSizer* itemBoxSizer2 =
newwxBoxSizer(wxVERTICAL);
334itemCDialog1->SetSizer(itemBoxSizer2);
336 m_Splitter=
newwxSplitterWindow( itemCDialog1,
ID_SPLITTERWINDOW, wxDefaultPosition, wxDLG_UNIT(itemCDialog1, wxSize(100, 100)), wxSP_3DBORDER|wxSP_3DSASH|wxNO_BORDER );
337 m_Splitter->SetMinimumPaneSize(wxDLG_UNIT(itemCDialog1, wxSize(150, -1)).x);
341wxPanel* itemPanel5 =
newwxPanel(
m_Splitter,
ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL );
342wxBoxSizer* itemBoxSizer6 =
newwxBoxSizer(wxVERTICAL);
343itemPanel5->SetSizer(itemBoxSizer6);
345wxBoxSizer* itemBoxSizer7 =
newwxBoxSizer(wxHORIZONTAL);
346itemBoxSizer6->Add(itemBoxSizer7, 0, wxGROW|wxALL, 0);
347 m_SearchCtrl=
newwxSearchCtrl( itemPanel5,
ID_SEARCHCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
348itemBoxSizer7->Add(
m_SearchCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, wxDLG_UNIT(itemPanel5, wxSize(5, -1)).x);
350itemBoxSizer7->Add(wxDLG_UNIT(itemPanel5, wxSize(5, -1)).x, wxDLG_UNIT(itemPanel5, wxSize(-1, 5)).y, 1, wxALIGN_CENTER_VERTICAL|wxALL, wxDLG_UNIT(itemPanel5, wxSize(5, -1)).x);
352 m_TrackCountCtrl=
newwxStaticText( itemPanel5, wxID_STATIC,
_(
"0 track(s)"), wxDefaultPosition, wxDefaultSize, 0 );
353itemBoxSizer7->Add(
m_TrackCountCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, wxDLG_UNIT(itemPanel5, wxSize(5, -1)).x);
358 m_Splitter->SplitVertically(
m_TreeCtrl, itemPanel5, wxDLG_UNIT(itemCDialog1, wxSize(150, -1)).x);
359itemBoxSizer2->Add(
m_Splitter, 1, wxGROW|wxALL, wxDLG_UNIT(itemCDialog1, wxSize(5, -1)).x);
361wxStaticLine* itemStaticLine12 =
newwxStaticLine( itemCDialog1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
362itemBoxSizer2->Add(itemStaticLine12, 0, wxGROW|wxALL, wxDLG_UNIT(itemCDialog1, wxSize(5, -1)).x);
364wxBoxSizer* itemBoxSizer13 =
newwxBoxSizer(wxHORIZONTAL);
365itemBoxSizer2->Add(itemBoxSizer13, 0, wxALIGN_RIGHT|wxALL, 0);
367wxButton* itemButton14 =
newwxButton( itemCDialog1, wxID_OK,
_(
"OK"), wxDefaultPosition, wxDefaultSize, 0 );
368itemBoxSizer13->Add(itemButton14, 0, wxALIGN_CENTER_VERTICAL|wxALL, wxDLG_UNIT(itemCDialog1, wxSize(5, -1)).x);
370wxButton* itemButton15 =
newwxButton( itemCDialog1, wxID_CANCEL,
_(
"Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
371itemBoxSizer13->Add(itemButton15, 0, wxALIGN_CENTER_VERTICAL|wxALL, wxDLG_UNIT(itemCDialog1, wxSize(5, -1)).x);
376wxTreeItemId rootItem =
m_TreeCtrl->AddRoot(
wxT(
""), -1, -1);
379CTopLevelContainers topCont;
382 for(
autop : topCont.GetProxies()) {
385wxString title = wxString::FromUTF8(cont->
GetTitle().c_str());
386wxTreeItemId level =
m_TreeCtrl->AppendItem(rootItem, title, -1, -1,
newCTreeItemTrackData());
390cont->
Traverse(builder, p->GetShown());
401wxTreeItemId allTracksItem = builder.GetAllTracksItem();
403 if(allTracksItem.IsOk())
410 boolupdate =
false;
413CTrackDlgProxyInfo* tinfo = (CTrackDlgProxyInfo*)
t;
415 if(tinfo->GetToggled()) {
422vector<string> naAccessions;
432wxTreeItemId item =
event.GetItem();
433CTreeItemTrackData*
data= 0;
435 data=
dynamic_cast<CTreeItemTrackData*
>(
m_TreeCtrl->GetItemData(item));
452wxTreeItemId rootId =
m_TreeCtrl->GetRootItem();
456wxString
text= wxString::FromUTF8(category.c_str());
458wxTreeItemIdValue cookie;
459wxTreeItemId item =
m_TreeCtrl->GetFirstChild(rootId, cookie);
462wxString itemText =
m_TreeCtrl->GetItemText(item);
463 if(itemText ==
text) {
467item =
m_TreeCtrl->GetNextChild(rootId, cookie);
void OnTreectrlSelChanged(wxTreeEvent &event)
bool Create(wxWindow *parent, wxWindowID id=ID_CCONFIGURETRACKSDLG, const wxString &caption=_("Configure Tracks"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(400, 300), long style=wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX|wxTAB_TRAVERSAL)
CTrackListCtrl * m_TrackListCtrl
CTrackListCtrl::TTracks m_AllTracks
static bool ShowToolTips()
CFeaturePanel * m_FeaturePanel
void OnSearchButtonClick(wxCommandEvent &event)
void x_UpdateTrackCount()
void OnSearchEnter(wxCommandEvent &event)
wxStaticText * m_TrackCountCtrl
wxSplitterWindow * m_Splitter
void OnOkClick(wxCommandEvent &event)
wxIcon GetIconResource(const wxString &name)
virtual void x_SaveSettings(CRegistryWriteView view) const
void OnSearchCtrlUpdate(wxUpdateUIEvent &event)
void OnSearchCancelClick(wxCommandEvent &event)
wxSearchCtrl * m_SearchCtrl
virtual void x_LoadSettings(const CRegistryReadView &view)
override these functions in derived classes
void SetCategory(const string &category)
void x_OnSearch(const wxString &value)
wxBitmap GetBitmapResource(const wxString &name)
virtual void EndModal(int retCode)
string GetTitle() const
get the track title.
class CRegistryReadView provides a nested hierarchical view at a particular key.
int GetInt(const string &key, int default_val=0) const
access a named key at this level, with no recursion
CRegistryReadView GetReadView(const string §ion) const
CRegistryWriteView GetWriteView(const string §ion)
void Set(const string &key, int val)
access a named key at this level, with no recursion
void SetAction(EAction action)
CTrackContainer - a track container in the form of layout track.
void ToggleTracks(vector< string > &naAccessions)
void Traverse(Tr &&tr, bool visible)
vector< ITrackInfo * > TTracks
void FilterValues(const string &filter)
void LoadSettings(const CRegistryReadView &view)
void SetTracks(const TTracks &tracks)
void SaveSettings(CRegistryWriteView view) const
virtual void RegisterFileAlias(const wxArtID &anId, const wxArtClient &aClient, const wxSize &aSize, const wxString &aName, long aType=wxBITMAP_TYPE_ANY, int anIndex=-1)
static const char * kTrackListTag
static const char * kSplitterPosTag
thread_local unique_ptr< FtaMsgPost > bmp
string m_xClass
annotation category
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static void TruncateSpacesInPlace(string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string (in-place)
static const char label[]
static void text(MDB_val *v)
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::SIZE size
const GenericPointer< typename T::ValueType > T2 value
const CConstRef< CSeq_id > GetAccession(const CSeq_id_Handle &id_handle)
wxFileArtProvider * GetDefaultFileArtProvider()
#define wxTR_GBENCH_LINES
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4