43 #include <wx/stattext.h>
44 #include <wx/textctrl.h>
45 #include <wx/srchctrl.h>
46 #include <wx/button.h>
84 wxPanel::Create( parent,
id, pos,
size, style );
89 GetSizer()->SetSizeHints(
this);
120 wxBoxSizer* itemBoxSizer2 =
new wxBoxSizer(wxVERTICAL);
121 itemPanel1->SetSizer(itemBoxSizer2);
123 wxBoxSizer* itemBoxSizer3 =
new wxBoxSizer(wxHORIZONTAL);
124 itemBoxSizer2->Add(itemBoxSizer3, 0, wxGROW|wxLEFT|wxRIGHT, 5);
126 wxStaticText* itemStaticText4 =
new wxStaticText( itemPanel1, wxID_STATIC,
_(
"Filter:"), wxDefaultPosition, wxDefaultSize, 0 );
127 itemBoxSizer3->Add(itemStaticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
129 m_SearchCtrl =
new wxTextCtrl( itemPanel1,
ID_SEARCH,
wxT(
""), wxDefaultPosition, wxSize(itemPanel1->ConvertDialogToPixels(wxSize(120, -1)).x, -1), 0 );
130 itemBoxSizer3->Add(
m_SearchCtrl, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
132 m_ResetBtn =
new wxButton( itemPanel1,
ID_RESET,
_(
"Reset"), wxDefaultPosition, wxDefaultSize, 0 );
133 itemBoxSizer3->Add(
m_ResetBtn, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
135 m_StatusText =
new wxStaticText( itemPanel1,
ID_STATUS,
_(
"Filter:"), wxDefaultPosition, wxDefaultSize, 0 );
136 itemBoxSizer3->Add(
m_StatusText, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
139 itemBoxSizer2->Add(
m_Splitter, 1, wxGROW|wxALL, 5);
142 int sizes[3] = { 300, 60, -1 };
156 map_control->SetFocus();
180 for(
size_t i = 0;
i <
m_Items.size();
i++ ) {
187 for(
size_t i = 0;
i < grp_descrs.size();
i++ ) {
190 vector<string>::const_iterator it =
217 bool reset =
query.empty();
226 const IUIObject& ui_obj = item->GetDescriptor();
245 string status = reset ?
"All " :
"Filtered - ";
248 if( ! reset &&
n == 0) {
249 status +=
"no matches";
274 for(
size_t i = 0;
i < descrs.size();
i++ ) {
275 if(descrs[
i].m_Label == group) {
276 grp_descr = &descrs[
i];
281 if(grp_descr ==
NULL) {
283 grp_descr = &descrs.back();
286 grp_descr->
m_Items.push_back(descr);
292 for(
size_t i = 0;
i <
m_Items.size();
i++ ) {
294 const IUIObject& ui_obj = item->GetDescriptor();
325 if(index != (
size_t) -1) {
337 descr = curItem->GetFullDescr();
364 vector<string> groups, collapsed;
366 ITERATE(vector<string>, it, groups) {
368 string::size_type pos = it->find(
" (");
369 string str = (pos == string::npos) ? *it : it->substr(0, pos);
370 collapsed.push_back(
str);
388 if(heights.size() == 2) {
424 int code =
event.GetKeyCode();
425 if(event.ControlDown() && (
code ==
'F' ||
code ==
'f')) {
CRegistryWriteView GetWriteView(const string §ion)
get a read-write view at a particular level.
static CGuiRegistry & GetInstance()
access the application-wide singleton
CRegistryReadView GetReadView(const string §ion) const
get a read-only view at a particular level.
CMapControl owns all its items.
SProperties & GetProperties()
class CRegistryReadView provides a nested hierarchical view at a particular key.
void GetIntVec(const string &key, vector< int > &val) const
void GetStringVec(const string &key, vector< string > &val) const
void Set(const string &key, int val)
access a named key at this level, with no recursion
CSplitter - container with resizable separators.
void SetResizableCell(int col, int row)
bool InsertToCell(wxWindow *child, int col, int row)
If cell [col, row] exists and vacant - adds widget to the container.
void GetHeights(TPosVector &heights) const
void SetHeights(const TPosVector &heights)
virtual void Split(ESplitType type)
Creates a splitter with a single cell.
IUIObject - object that provides basic properties often required in a UI object.
static const char * str(char *buf, int n)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
static bool ShowToolTips()
void x_AddItem(CGroupMapWidget::TGroupDescrVector &descrs, IItemWithDescription &manager)
void OnKeyDown(wxKeyEvent &event)
wxIcon GetIconResource(const wxString &name)
vector< TItemRef > m_Items
void SetItemTypeLabel(const string &label)
virtual void LoadSettings()
TItemRef GetSelectedItemRef()
wxBitmap GetBitmapResource(const wxString &name)
virtual void SetRegistryPath(const string &path)
void OnResetClick(wxCommandEvent &event)
virtual string GetCategory()=0
virtual void SaveSettings() const
void SetItems(vector< TItemRef > &items)
void x_FilterItems(const string &query)
void OnItemSelected(wxCommandEvent &event)
virtual bool ShowDefault() const =0
vector< TItemRef > m_AllItems
vector< string > m_CollapsedGroups
CGroupMapWidget * m_MapWidget
bool Create(wxWindow *parent, wxWindowID id=ID_CITEMSELECTIONPANEL, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxNO_BORDER|wxCLIP_CHILDREN|wxTAB_TRAVERSAL)
void OnSearchUpdated(wxCommandEvent &event)
virtual const IUIObject & GetDescriptor() const =0
size_t x_FindItemByLabel(const string &label)
wxTextCtrl * m_SearchCtrl
wxStaticText * m_StatusText
virtual const string & GetIconAlias() const =0
virtual const string & GetLabel() const =0
virtual const string & GetDescription() const =0
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static string SizetToString(size_t value, TNumToStringFlags flags=0, int base=10)
Convert size_t to string.
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 const char label[]
static const char * kCollapsedGroupsTag
static const char * kSplitterWidthsTag
CGroupMapWidget::SGroupDescr TGroupDescr
const struct ncbi::grid::netcache::search::fields::SIZE size
wxString ToWxString(const string &s)
string ToStdString(const wxString &s)