bool CSearchDialog::Load() { if (!wxDialogEx::Load(m_parent, _T("ID_SEARCH"))) return false; /* XRCed complains if adding a status bar to a dialog, so do it here instead */ CFilelistStatusBar* pStatusBar = new CFilelistStatusBar(this); pStatusBar->SetEmptyString(_("No search results")); GetSizer()->Add(pStatusBar, 0, wxGROW); if (!CreateListControl(filter_name | filter_size | filter_path | filter_date)) return false; m_results = new CSearchDialogFileList(this, m_pState, 0); ReplaceControl(XRCCTRL(*this, "ID_RESULTS", wxWindow), m_results); m_results->SetFilelistStatusBar(pStatusBar); const CServerPath path = m_pState->GetRemotePath(); if (!path.IsEmpty()) XRCCTRL(*this, "ID_PATH", wxTextCtrl)->ChangeValue(path.GetPath()); SetCtrlState(); m_pWindowStateManager = new CWindowStateManager(this); m_pWindowStateManager->Restore(OPTION_SEARCH_SIZE, wxSize(750, 500)); Layout(); LoadConditions(); EditFilter(m_search_filter); XRCCTRL(*this, "ID_CASE", wxCheckBox)->SetValue(m_search_filter.matchCase); return true; }
bool CFilterConditionsDialog::CreateListControl(int conditions /*=common*/) { wxScrolledWindow* wnd = XRCCTRL(*this, "ID_CONDITIONS", wxScrolledWindow); if (!wnd) return false; m_pListCtrl = new wxCustomHeightListCtrl(this, wxID_ANY, wxDefaultPosition, wnd->GetSize(), wxVSCROLL|wxSUNKEN_BORDER|wxTAB_TRAVERSAL); if (!m_pListCtrl) return false; m_pListCtrl->AllowSelection(false); ReplaceControl(wnd, m_pListCtrl); CalcMinListWidth(); if (stringConditionTypes.IsEmpty()) { stringConditionTypes.Add(_("contains")); stringConditionTypes.Add(_("is equal to")); stringConditionTypes.Add(_("begins with")); stringConditionTypes.Add(_("ends with")); stringConditionTypes.Add(_("matches regex")); stringConditionTypes.Add(_("does not contain")); sizeConditionTypes.Add(_("greater than")); sizeConditionTypes.Add(_("equals")); sizeConditionTypes.Add(_("does not equal")); sizeConditionTypes.Add(_("less than")); attributeSetTypes.Add(_("is set")); attributeSetTypes.Add(_("is unset")); attributeConditionTypes.Add(_("Archive")); attributeConditionTypes.Add(_("Compressed")); attributeConditionTypes.Add(_("Encrypted")); attributeConditionTypes.Add(_("Hidden")); attributeConditionTypes.Add(_("Read-only")); attributeConditionTypes.Add(_("System")); permissionConditionTypes.Add(_("owner readable")); permissionConditionTypes.Add(_("owner writeable")); permissionConditionTypes.Add(_("owner executable")); permissionConditionTypes.Add(_("group readable")); permissionConditionTypes.Add(_("group writeable")); permissionConditionTypes.Add(_("group executable")); permissionConditionTypes.Add(_("world readable")); permissionConditionTypes.Add(_("world writeable")); permissionConditionTypes.Add(_("world executable")); dateConditionTypes.Add(_("before")); dateConditionTypes.Add(_("equals")); dateConditionTypes.Add(_("does not equal")); dateConditionTypes.Add(_("after")); } if (conditions & filter_name) { filterTypes.Add(_("Filename")); filter_type_map.push_back(filter_name); } if (conditions & filter_size) { filterTypes.Add(_("Filesize")); filter_type_map.push_back(filter_size); } if (conditions & filter_attributes) { filterTypes.Add(_("Attribute")); filter_type_map.push_back(filter_attributes); } if (conditions & filter_permissions) { filterTypes.Add(_("Permission")); filter_type_map.push_back(filter_permissions); } if (conditions & filter_path) { filterTypes.Add(_("Path")); filter_type_map.push_back(filter_path); } if (conditions & filter_date) { filterTypes.Add(_("Date")); filter_type_map.push_back(filter_date); } SetFilterCtrlState(true); m_pListCtrl->Connect(wxEVT_SIZE, wxSizeEventHandler(CFilterConditionsDialog::OnListSize), 0, this); m_pListCtrl->MoveAfterInTabOrder(XRCCTRL(*this, "ID_MATCHTYPE", wxChoice)); return true; }