void wxGenericDirCtrl::SetFilter(const wxString& filter) { m_filter = filter; if (!filter.empty() && !m_filterListCtrl) m_filterListCtrl = new wxDirFilterListCtrl(this, wxID_FILTERLISTCTRL); else if (filter.empty() && m_filterListCtrl) { m_filterListCtrl->Destroy(); m_filterListCtrl = NULL; } wxString f, d; if (ExtractWildcard(m_filter, m_currentFilter, f, d)) m_currentFilterStr = f; else #ifdef __UNIX__ m_currentFilterStr = wxT("*"); #else m_currentFilterStr = wxT("*.*"); #endif // current filter index is meaningless after filter change, set it to zero SetFilterIndex(0); if (m_filterListCtrl) m_filterListCtrl->FillFilterList(m_filter, 0); }
void wxGenericFileCtrl::SetWildcard( const wxString& wildCard ) { if ( wildCard.empty() || wildCard == wxFileSelectorDefaultWildcardStr ) { m_wildCard = wxString::Format( _( "All files (%s)|%s" ), wxFileSelectorDefaultWildcardStr, wxFileSelectorDefaultWildcardStr ); } else m_wildCard = wildCard; wxArrayString wildDescriptions, wildFilters; const size_t count = wxParseCommonDialogsFilter( m_wildCard, wildDescriptions, wildFilters ); wxCHECK_RET( count, wxT( "wxFileDialog: bad wildcard string" ) ); m_choice->Clear(); for ( size_t n = 0; n < count; n++ ) { m_choice->Append(wildDescriptions[n], new wxStringClientData(wildFilters[n])); } SetFilterIndex( 0 ); }
void wxGtkFileChooser::SetWildcard( const wxString& wildCard ) { m_wildcards.Empty(); // parse filters wxArrayString wildDescriptions, wildFilters; if ( !wxParseCommonDialogsFilter( wildCard, wildDescriptions, wildFilters ) ) { wxFAIL_MSG( wxT( "wxGtkFileChooser::SetWildcard - bad wildcard string" ) ); } else { // Parsing went fine. Set m_wildCard to be returned by wxGtkFileChooserBase::GetWildcard GtkFileChooser* chooser = m_widget; // empty current filter list: GSList* ifilters = gtk_file_chooser_list_filters( chooser ); GSList* filters = ifilters; m_ignoreNextFilterEvent = true; wxON_BLOCK_EXIT_SET(m_ignoreNextFilterEvent, false); while ( ifilters ) { gtk_file_chooser_remove_filter( chooser, GTK_FILE_FILTER( ifilters->data ) ); ifilters = ifilters->next; } g_slist_free( filters ); if (!wildCard.empty()) { // add parsed to GtkChooser for ( size_t n = 0; n < wildFilters.GetCount(); ++n ) { GtkFileFilter* filter = gtk_file_filter_new(); gtk_file_filter_set_name( filter, wxGTK_CONV_SYS( wildDescriptions[n] ) ); wxStringTokenizer exttok( wildFilters[n], wxT( ";" ) ); int n1 = 1; while ( exttok.HasMoreTokens() ) { wxString token = exttok.GetNextToken(); gtk_file_filter_add_pattern( filter, wxGTK_CONV_SYS( token ) ); if (n1 == 1) m_wildcards.Add( token ); // Only add first pattern to list, used later when saving n1++; } gtk_file_chooser_add_filter( chooser, filter ); } // Reset the filter index SetFilterIndex( 0 ); } } }
void wxFileDialog::SetWildcard(const wxString& wildCard) { #ifdef __WXGTK24__ if (!gtk_check_version(2,4,0)) { // parse filters wxArrayString wildDescriptions, wildFilters; if (!wxParseCommonDialogsFilter(wildCard, wildDescriptions, wildFilters)) { wxFAIL_MSG( wxT("wxFileDialog::SetWildCard - bad wildcard string") ); } else { // Parsing went fine. Set m_wildCard to be returned by wxFileDialogBase::GetWildcard m_wildCard = wildCard; GtkFileChooser* chooser = GTK_FILE_CHOOSER(m_widget); // empty current filter list: GSList* ifilters = gtk_file_chooser_list_filters(chooser); GSList* filters = ifilters; while (ifilters) { gtk_file_chooser_remove_filter(chooser,GTK_FILE_FILTER(ifilters->data)); ifilters = ifilters->next; } g_slist_free(filters); // add parsed to GtkChooser for (size_t n = 0; n < wildFilters.GetCount(); ++n) { GtkFileFilter* filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, wxGTK_CONV(wildDescriptions[n])); wxStringTokenizer exttok(wildFilters[n], wxT(";")); while (exttok.HasMoreTokens()) { wxString token = exttok.GetNextToken(); gtk_file_filter_add_pattern(filter, wxGTK_CONV(token)); } gtk_file_chooser_add_filter(chooser, filter); } // Reset the filter index SetFilterIndex(0); } } else #endif wxGenericFileDialog::SetWildcard( wildCard ); }
void wxGenericFileDialog::SetWildcard(const wxString& wildCard) { wxFileDialogBase::SetWildcard(wildCard); wxArrayString wildDescriptions, wildFilters; const size_t count = wxParseCommonDialogsFilter(m_wildCard, wildDescriptions, wildFilters); wxCHECK_RET( count, wxT("wxFileDialog: bad wildcard string") ); const size_t countOld = m_choice->GetCount(); size_t n; for ( n = 0; n < countOld; n++ ) { delete (wxString *)m_choice->GetClientData(n); } for ( n = 0; n < count; n++ ) { m_choice->Append( wildDescriptions[n], new wxString( wildFilters[n] ) ); } SetFilterIndex( 0 ); }
bool wxGenericDirCtrl::Create(wxWindow *parent, const wxWindowID treeid, const wxString& dir, const wxPoint& pos, const wxSize& size, long style, const wxString& filter, int defaultFilter, const wxString& name) { if (!wxControl::Create(parent, treeid, pos, size, style, wxDefaultValidator, name)) return false; SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)); SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); Init(); long treeStyle = wxTR_HAS_BUTTONS; // On Windows CE, if you hide the root, you get a crash when // attempting to access data for children of the root item. #ifndef __WXWINCE__ treeStyle |= wxTR_HIDE_ROOT; #endif #ifdef __WXGTK20__ treeStyle |= wxTR_NO_LINES; #endif if (style & wxDIRCTRL_EDIT_LABELS) treeStyle |= wxTR_EDIT_LABELS; if (style & wxDIRCTRL_MULTIPLE) treeStyle |= wxTR_MULTIPLE; if ((style & wxDIRCTRL_3D_INTERNAL) == 0) treeStyle |= wxNO_BORDER; m_treeCtrl = CreateTreeCtrl(this, wxID_TREECTRL, wxPoint(0,0), GetClientSize(), treeStyle); if (!filter.empty()) m_filterListCtrl = new wxDirFilterListCtrl(this, wxID_FILTERLISTCTRL); m_defaultPath = dir; m_filter = filter; if (m_filter.empty()) m_filter = wxFileSelectorDefaultWildcardStr; SetFilterIndex(defaultFilter); if (m_filterListCtrl) m_filterListCtrl->FillFilterList(filter, defaultFilter); m_treeCtrl->SetImageList(wxTheFileIconsTable->GetSmallImageList()); m_showHidden = false; wxDirItemData* rootData = new wxDirItemData(wxEmptyString, wxEmptyString, true); wxString rootName; #if defined(__WINDOWS__) || defined(__OS2__) || defined(__DOS__) rootName = _("Computer"); #else rootName = _("Sections"); #endif m_rootId = m_treeCtrl->AddRoot( rootName, 3, -1, rootData); m_treeCtrl->SetItemHasChildren(m_rootId); ExpandRoot(); SetInitialSize(size); DoResize(); return true; }