00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
#include <wx/wxprec.h>
00029
00030
#ifdef __BORLANDC__
00031
#pragma hdrstop
00032
#endif
00033
00034
#ifndef WX_PRECOMP
00035
00036
#include <wx/wx.h>
00037
#endif
00038
00039
#include <wx/filename.h>
00040
#include <wx/tokenzr.h>
00041
00042
#include "fdftlmk.hpp"
00043
#include "utils.hpp"
00044
00045
#include "compat.hpp"
00046
00047
00048
00049
00050
using namespace std;
00051
00052
00053
00054
00055
00056 wxFileDialogFilterMaker::wxFileDialogFilterMaker()
00057 {
00058 }
00059
00060
00061
00062
00063
00064
00065
00066
00067 void wxFileDialogFilterMaker::clone(
const wxFileDialogFilterMaker& source)
00068 {
00069
if (
this != &source)
00070 {
00071 this->
descrs = source.
descrs;
00072 this->
filters = source.
filters;
00073 }
00074 }
00075
00076
00077
00078
00079
00080
00081
00082
00083 wxFileDialogFilterMaker::wxFileDialogFilterMaker(
const wxFileDialogFilterMaker& source)
00084 {
00085
clone(source);
00086 }
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096 wxFileDialogFilterMaker&
wxFileDialogFilterMaker::operator=(
const wxFileDialogFilterMaker& source)
00097 {
00098
clone(source);
00099
return *
this;
00100 }
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110 void wxFileDialogFilterMaker::AddFilter(
const wxString& descr,
const wxString& filter)
00111 {
00112
descrs.Add(descr);
00113
filters.Add(filter);
00114 }
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 wxString
wxFileDialogFilterMaker::GetFilters(
const wxPathFormat format,
00136
const bool addFiltersInDescriptions)
const
00137
{
00138 wxString s;
00139
00140
for (size_t i = 0; i <
descrs.GetCount(); i++)
00141 {
00142
00143
if (!s.empty())
00144 s += wxT(
'|');
00145 s +=
descrs[i];
00146
00147
00148
if (addFiltersInDescriptions)
00149 {
00150 s += wxT(
" (");
00151
bool firstToken =
true;
00152 wxStringTokenizer tkz(
filters[i], wxT(
"|"));
00153
while (tkz.HasMoreTokens())
00154 {
00155 wxString token = tkz.GetNextToken();
00156
if (firstToken)
00157 firstToken =
false;
00158
else
00159 s += wxT(
';');
00160
00161 s += wxT(
"*.") + token;
00162 }
00163 s += wxT(
')');
00164 }
00165 s += wxT(
'|');
00166
00167
00168 wxArrayString tk;
00169 wxStringTokenizer tkz(
filters[i], wxT(
"|"));
00170
while (tkz.HasMoreTokens())
00171 {
00172 wxString token = tkz.GetNextToken();
00173
if (wxFileName::IsCaseSensitive(format))
00174
GetAllTokenCases(token, tk);
00175
else
00176 tk.Add(token);
00177 }
00178
00179
00180
bool firstToken =
true;
00181
for (size_t j = 0; j < tk.GetCount(); j++)
00182 {
00183
if (firstToken)
00184 firstToken =
false;
00185
else
00186 s += wxT(
';');
00187
#if defined(__UNIX__)
00188
if (tk[j] != wxT(
"*"))
00189
#endif // defined(__UNIX__)
00190
s += wxT(
"*.");
00191 s += tk[j];
00192 }
00193 }
00194
00195
return s;
00196 }
00197