wxBitmap(w, h);
66 strings.emplace_back(
" c None");
67 strings.emplace_back(
"X c Gray25");
69 for(
int i= 0;
i< h; ++
i) {
71 intii =
i- (h - 4) / 2;
72 if(ii >= 0 && ii < 4) {
74 strings.back().replace(0, w,
string(bits[ii] + (7 - w) / 2, w));
76 strings.back().replace((w - 7) / 2, 7,
string(bits[ii], 7));
80vector<const char*> xpm;
81 for(
const string& s :
strings)
82xpm.push_back(s.c_str());
84 returnwxBitmap(&xpm[0]);
88: m_ImageList(), m_SortColumn(0)
90wxListCtrl::Create(parent,
id, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_VIRTUAL);
95 static const char*
up_xpm[] = {
101 static const char* dn_xpm[] = {
112InsertColumn(0,
wxT(
"Track Name"), wxLIST_FORMAT_LEFT, 250);
113InsertColumn(1,
wxT(
"Accession"), wxLIST_FORMAT_LEFT);
114InsertColumn(2,
wxT(
"Category"), wxLIST_FORMAT_LEFT);
115InsertColumn(3,
wxT(
"Description"), wxLIST_FORMAT_LEFT);
132SetColumnWidth(1, wxLIST_AUTOSIZE);
140 longitem = HitTest(evt.GetPosition(),
flags);
141 if(item >= 0 && item < (
long)
m_TracksVisible.size() && (
flags& wxLIST_HITTEST_ONITEMICON)) {
143wxCommandEvent eventCustom(wxEVT_SET_VISIBILITY);
144eventCustom.SetInt(track->
GetVisible() ? 0 : 1);
145wxPostEvent(
this, eventCustom);
146 if(!GetItemState(item, wxLIST_STATE_SELECTED))
156 intcol = evt.GetColumn();
175 for(
int i= 0;
i< GetColumnCount(); ++
i) {
177item.SetAlign(wxLIST_FORMAT_LEFT);
182item.SetMask(wxLIST_MASK_IMAGE | wxLIST_MASK_FORMAT);
183SetColumn(
i, item);
197->
bool{ return NStr::CompareNocase(t1->GetDisplayName(), t2->GetDisplayName()) < 0; });
201->
bool{ string s1 = t1->GetAccession(); if (!NStr::StartsWith(s1,
"NA")) s1 = NcbiEmptyString;
202string s2 = t2->GetAccession(); if (!NStr::StartsWith(s2,
"NA")) s2 = NcbiEmptyString;
203return NStr::CompareNocase(s1, s2) < 0; });
207->
bool{ return NStr::CompareNocase(t1->GetCategory(), t2->GetCategory()) < 0; });
211->
bool{ return NStr::CompareNocase(t1->GetComments(), t2->GetComments()) < 0; });
221 boolvisible = evt.IsChecked();
223 for(
longitem = -1;;) {
224item = GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
225 if(item == -1)
break;
235 returnwxEmptyString;
241 returnwxString::FromUTF8(trackName.c_str());
247 returnwxString::FromUTF8(accession.c_str());
249 returnwxEmptyString;
254 returnwxString::FromUTF8(category.c_str());
259 returnwxString::FromUTF8(description.c_str());
262 returnwxEmptyString;
276 if(filter.empty()) {
282 stringtrackName =
i->GetDisplayName();
283 stringaccession =
i->GetAccession();
302 if((
int)widths.size() == GetColumnCount()) {
303 for(
int i= 0;
i< GetColumnCount(); ++
i) {
305 if(w > 0) SetColumnWidth(
i, w);
313 for(
int i= 0;
i< GetColumnCount(); ++
i)
314widths.push_back(GetColumnWidth(
i));
316 if(widths.size() > 0)
class CRegistryReadView provides a nested hierarchical view at a particular key.
void GetIntVec(const string &key, vector< int > &val) const
void Set(const string &key, int val)
access a named key at this level, with no recursion
virtual void SetVisible(bool visible)=0
virtual bool GetVisible() const =0
virtual string GetComments() const =0
virtual string GetAccession() const =0
virtual string GetDisplayName() const =0
virtual string GetCategory() const =0
vector< ITrackInfo * > TTracks
void FilterValues(const string &filter)
wxImageList * m_ImageList
void OnColumnClick(wxListEvent &evt)
void LoadSettings(const CRegistryReadView &view)
void OnSetVisibility(wxCommandEvent &evt)
void SetTracks(const TTracks &tracks)
void SaveSettings(CRegistryWriteView view) const
virtual wxString OnGetItemText(long item, long column) const
CTrackListCtrl(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxLC_REPORT|wxLC_VIRTUAL|wxLC_SINGLE_SEL, const wxValidator &validator=wxDefaultValidator, const wxString &name=wxListCtrlNameStr)
void OnLeftDown(wxMouseEvent &evt)
virtual int OnGetItemImage(long item) const
static const char * up_xpm[]
static const char * column
static const char *const strings[]
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static SIZE_TYPE FindNoCase(const CTempString str, const CTempString pattern, SIZE_TYPE start, SIZE_TYPE end, EOccurrence which=eFirst)
Find the pattern in the specified range of a string using a case insensitive search.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
constexpr auto sort(_Init &&init)
const struct ncbi::grid::netcache::search::fields::SIZE size
static wxBitmap s_BitmapFrom7x4(int w, int h, const char *const *bits)
static const char * kWidths
#define EVT_SET_VISIBILITY(id, fn)
wxDEFINE_EVENT(wxEVT_SET_VISIBILITY, wxCommandEvent)
wxImageList * CreateCheckboxImages(wxWindow *wnd)
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