Develop and Download Open Source Software

Browse CVS Repository

Diff of /malonnote/mnModel.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1.1.1 by maloninc, Thu Jul 28 03:25:06 2005 UTC revision 1.6 by maloninc, Wed Aug 10 05:35:03 2005 UTC
# Line 40  WikiList* mnModel::search(const char* se Line 40  WikiList* mnModel::search(const char* se
40          WikiData*   wikiData;          WikiData*   wikiData;
41      WikiList*   list = new WikiList();      WikiList*   list = new WikiList();
42      wxString*   fileName = new wxString();      wxString*   fileName = new wxString();
         wxRegEx*        regStr;  
         iconv_t     codeSet;  
         char        outbuf[MAX_BUF_SIZE];  
         const char*       inbufPtr  = searchStr;  
         char*       outbufPtr = outbuf;  
         int         inbufSize = strlen(searchStr);  
         int         outbufSize = sizeof(outbuf);  
43          const char* decodeFileName;          const char* decodeFileName;
44            wxCSConv eucConv(wxT(CODE_SET_EUC_JP));
45            wxCSConv sysConv(wxT(CODE_SET_SYSTEM));
46    
         memset(outbuf, 0, outbufSize);  
         codeSet = iconv_open(CODE_SET_EUC_JP, CODE_SET_SYSTEM);  
         if(codeSet == (iconv_t)-1) {  
                 MN_FATAL_ERROR(wxT("failed iconv_open"));  
         }  
         iconv(codeSet, (const char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);  
         iconv_close(codeSet);  
47    
48          dir = new wxDir(*wikiDataDir);          dir = new wxDir(*wikiDataDir);
49      if ( !dir->IsOpened() )      if ( !dir->IsOpened() )
# Line 63  WikiList* mnModel::search(const char* se Line 51  WikiList* mnModel::search(const char* se
51                  MN_FATAL_ERROR(wxT("wxDir has faild\n"));                  MN_FATAL_ERROR(wxT("wxDir has faild\n"));
52          return NULL;          return NULL;
53      }      }
54      bool cont = dir->GetFirst(fileName, wxEmptyString, wxDIR_FILES);      bool cont = dir->GetFirst(fileName, wxT("*.txt"), wxDIR_FILES);
55          while(cont){          while(cont){
56          fullPathName = *wikiDataDir + wxT("/") + *fileName;          fullPathName = *wikiDataDir + wxT("/") + *fileName;
57                  fp = fopen((const char*)fullPathName.mb_str(), "r");                  fp = fopen((const char*)fullPathName.mb_str(), "r");
# Line 75  WikiList* mnModel::search(const char* se Line 63  WikiList* mnModel::search(const char* se
63              fread(buf, MAX_BUF_SIZE-1, 1, fp);              fread(buf, MAX_BUF_SIZE-1, 1, fp);
64              if(buf[0] == 0) break;              if(buf[0] == 0) break;
65                          decodeFileName = decode(fileName->mb_str());                          decodeFileName = decode(fileName->mb_str());
66                  if(strstr((const char*)buf, (const char*)outbuf) ||                          wxString strbuf(buf, eucConv);
67                                  strstr((const char*)decodeFileName, (const char*)outbuf)) {                          wxString strSearch(searchStr, sysConv);
68                            wxString strDecodeFileName(decodeFileName, eucConv);
69                            wxRegEx regStr(strSearch, wxRE_DEFAULT|wxRE_NEWLINE|wxRE_ICASE);
70                            if(regStr.Matches(strbuf) || regStr.Matches(strDecodeFileName)){
71                                  wikiData = new WikiData(wikiDataDir, (const char*)fileName->mb_str(), fp);                                  wikiData = new WikiData(wikiDataDir, (const char*)fileName->mb_str(), fp);
72                                  list->Append(wikiData);                                  list->Append(wikiData);
73                                  break;                                  break;
# Line 87  WikiList* mnModel::search(const char* se Line 78  WikiList* mnModel::search(const char* se
78          cont = dir->GetNext(fileName);          cont = dir->GetNext(fileName);
79          }          }
80          delete dir;          delete dir;
81            delete fileName;
82    
83          list->Sort(compWikiData);          list->Sort(compWikiData);
84          return list;          return list;
# Line 118  void mnModel::modSearchStr(wxString* old Line 110  void mnModel::modSearchStr(wxString* old
110                  itemStr.sprintf(wxT("%s"), newStr->c_str());                  itemStr.sprintf(wxT("%s"), newStr->c_str());
111          }          }
112  }  }
113    const wxString* mnModel::getWikiDataDir()
114    {
115            return wikiDataDir;
116    }
117    
118  const wxArrayString* mnModel::getSearchStrList()  const wxArrayString* mnModel::getSearchStrList()
119  {  {
# Line 155  WikiData::WikiData(wxString* dataDir, co Line 151  WikiData::WikiData(wxString* dataDir, co
151          decodeStr = decode(file);          decodeStr = decode(file);
152          inbufSize = strlen(decodeStr);          inbufSize = strlen(decodeStr);
153          outbufSize = sizeof(outbuf);          outbufSize = sizeof(outbuf);
154          iconv(codeSet, (const char**)&decodeStr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);          iconv(codeSet, (ICONV_CONST char**)&decodeStr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
155          subject  = new wxString((const char*)outbuf, conv);          subject  = new wxString((const char*)outbuf, conv);
156          iconv_close(codeSet);          iconv_close(codeSet);
157    
# Line 239  void WikiData::modSubject(wxString* newS Line 235  void WikiData::modSubject(wxString* newS
235          if(codeSet == (iconv_t)-1) {          if(codeSet == (iconv_t)-1) {
236                  MN_FATAL_ERROR(wxT("failed iconv_open"));                  MN_FATAL_ERROR(wxT("failed iconv_open"));
237          }          }
238          iconv(codeSet, (const char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);          iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
239          iconv_close(codeSet);          iconv_close(codeSet);
240          subject  = new wxString(newSubject->c_str());          subject  = new wxString(newSubject->c_str());
241          fileName = new wxString(encode(outbuf), conv);          fileName = new wxString(encode(outbuf), conv);
# Line 251  void WikiData::modSubject(wxString* newS Line 247  void WikiData::modSubject(wxString* newS
247          if((fp = fopen(newFullPath, "r")) == NULL) {          if((fp = fopen(newFullPath, "r")) == NULL) {
248                  rename(oldFullPath, newFullPath);                  rename(oldFullPath, newFullPath);
249          }          }
250          else {          else if(strcmp(oldFullPath, newFullPath)){
251                  wxLogMessage(wxT("File has already exist. [%s]"), fileName->c_str());                  wxLogMessage(wxT("File has already exist. [%s]"), fileName->c_str());
252                  fclose(fp);                  fclose(fp);
253          }          }
# Line 303  const wxString* WikiData::getText() Line 299  const wxString* WikiData::getText()
299                  outbufPtr = outbuf;                  outbufPtr = outbuf;
300                  outbufSize = sizeof(outbuf);                  outbufSize = sizeof(outbuf);
301                  memset(outbuf, 0, outbufSize);                  memset(outbuf, 0, outbufSize);
302                  iconv(codeSet, (const char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);                  iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
303                  tmpStr = new wxString((char*)outbuf, conv);                  tmpStr = new wxString((char*)outbuf, conv);
304                  *text += *tmpStr;                  *text += *tmpStr;
305                  delete tmpStr;                  delete tmpStr;
# Line 316  const wxString* WikiData::getText() Line 312  const wxString* WikiData::getText()
312    
313  void WikiData::modText(wxString* intext)  void WikiData::modText(wxString* intext)
314  {  {
315            wxCSConv conv(wxT(CODE_SET_SYSTEM));
316          delete text;          delete text;
317          text = new wxString(intext->c_str());          //text = new wxString(intext->c_str());
318            text = new wxString(*intext);
319            //text = new wxString(intext->mb_str(), conv);
320  }  }
321    
322  void WikiData::removeDataFile()  void WikiData::removeDataFile()
# Line 360  void WikiData::save() Line 359  void WikiData::save()
359          outbufPtr = outbuf;          outbufPtr = outbuf;
360          outbufSize = sizeof(outbuf);          outbufSize = sizeof(outbuf);
361          memset(outbuf, 0, outbufSize);          memset(outbuf, 0, outbufSize);
362          iconv(codeSet, (const char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);          iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
363          fwrite(outbuf, sizeof(outbuf)-outbufSize, 1, fp);          fwrite(outbuf, sizeof(outbuf)-outbufSize, 1, fp);
364          fclose(fp);          fclose(fp);
365          iconv_close(codeSet);          iconv_close(codeSet);

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.6

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26