⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tex2rtf.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
            wxStrcpy(extensionBuf, _T("rtf"));            wxStrcat(wildBuf, _T("rtf"));            break;        }        case TEX_XLP:        {            wxStrcpy(extensionBuf, _T("xlp"));            wxStrcat(wildBuf, _T("xlp"));            break;        }        case TEX_HTML:        {            wxStrcpy(extensionBuf, _T("html"));            wxStrcat(wildBuf, _T("html"));            break;        }    }#if wxUSE_FILEDLG    if (force || OutputFile.empty())    {        wxString s = wxFileSelector(_T("Choose output file"), path, wxFileNameFromPath(OutputFile),                                    extensionBuf, wildBuf);        if (!s.empty())            OutputFile = s;    }#else    wxUnusedVar(force);#endif // wxUSE_FILEDLG}#endifbool Go(void){#ifndef NO_GUI  ChooseInputFile();  ChooseOutputFile();#endif  if (InputFile.empty() || OutputFile.empty() || stopRunning)    return false;#ifndef NO_GUI  if (isInteractive)  {    wxChar buf[300];    wxString str = wxFileNameFromPath(InputFile);    wxSnprintf(buf, sizeof(buf), _T("Tex2RTF [%s]"), (const wxChar*) str);    frame->SetTitle(buf);  }  wxLongLong localTime = wxGetLocalTimeMillis();#endif  // Find extension-less filename  wxStrcpy(FileRoot, OutputFile.c_str());  StripExtension(FileRoot);  if (truncateFilenames && convertMode == TEX_HTML)  {    // Truncate to five characters. This ensures that    // we can generate DOS filenames such as thing999. But 1000 files    // may not be enough, of course...    wxChar* sName = wxFileNameFromPath( FileRoot);  // this Julian's method is non-destructive reference    if(sName)      if(wxStrlen( sName) > 5)        sName[5] = '\0';  // that should do!  }  wxSnprintf(ContentsName, 300, _T("%s.con"), FileRoot);  wxSnprintf(TmpContentsName, 300, _T("%s.cn1"), FileRoot);  wxSnprintf(TmpFrameContentsName, 300, _T("%s.frc"), FileRoot);  wxSnprintf(WinHelpContentsFileName, 300, _T("%s.cnt"), FileRoot);  wxSnprintf(RefFileName, 300, _T("%s.ref"), FileRoot);  TexPathList.EnsureFileAccessible(InputFile);  if (!bulletFile)  {    wxString s = TexPathList.FindValidPath(_T("bullet.bmp"));    if (!s.empty())    {      wxString str = wxFileNameFromPath(s);      bulletFile = copystring(str);    }  }  if (wxFileExists(RefFileName))    ReadTexReferences(RefFileName);  bool success = false;  if (!InputFile.empty() && !OutputFile.empty())  {    if (!wxFileExists(InputFile))    {      OnError(_T("Cannot open input file!"));      TexCleanUp();      return false;    }#if !defined(NO_GUI) && wxUSE_STATUSBAR    if (isInteractive)    {      wxString buf;      buf.Printf(_T("Working, pass %d...Click CLOSE to abort"), passNumber);      frame->SetStatusText((wxChar *)buf.c_str());    }#endif    OkToClose = false;    OnInform(_T("Reading LaTeX file..."));    TexLoadFile(InputFile);    if (stopRunning)    {        OkToClose = true;        return false;    }    switch (convertMode)    {      case TEX_RTF:      {        success = RTFGo();        break;      }      case TEX_XLP:      {        success = XLPGo();        break;      }      case TEX_HTML:      {        success = HTMLGo();        break;      }    }  }  if (stopRunning)  {    OnInform(_T("*** Aborted by user."));    success = false;    stopRunning = false;    OkToClose = true;  }  if (success)  {    WriteTexReferences(RefFileName);    TexCleanUp();    startedSections = false;    wxString buf;#ifndef NO_GUI    wxLongLong elapsed = wxGetLocalTimeMillis() - localTime;    buf.Printf(_T("Finished PASS #%d in %ld seconds.\n"), passNumber, (long)(elapsed.GetLo()/1000.0));    OnInform((wxChar *)buf.c_str());    if (errorCount)    {        buf.Printf(_T("Errors encountered during this pass: %lu\n"), errorCount);        OnInform((wxChar *)buf.c_str());    }#if wxUSE_STATUSBAR    if (isInteractive)    {      buf.Printf(_T("Done, %d %s."), passNumber, (passNumber > 1) ? _T("passes") : _T("pass"));      frame->SetStatusText((wxChar *)buf.c_str());    }#endif // wxUSE_STATUSBAR#else    buf.Printf(_T("Done, %d %s."), passNumber, (passNumber > 1) ? _T("passes") : _T("pass"));    OnInform((wxChar *)buf.c_str());    if (errorCount)    {        buf.Printf(_T("Errors encountered during this pass: %lu\n"), errorCount);        OnInform((wxChar *)buf.c_str());    }#endif    passNumber ++;    errorCount = 0;    OkToClose = true;    return true;  }  TexCleanUp();  startedSections = false;#if !defined(NO_GUI) && wxUSE_STATUSBAR  frame->SetStatusText(_T("Aborted by user."));#endif // GUI  OnInform(_T("Sorry, unsuccessful."));  OkToClose = true;  return false;}void OnError(const wxChar *msg){    wxString msg_string = msg;    errorCount++;#ifdef NO_GUI    wxSTD cerr << "Error: " << msg_string.mb_str() << "\n";    wxSTD cerr.flush();#else    if (isInteractive && frame)    {        (*frame->textWindow) << _T("Error: ") << msg << _T("\n");    }    else    {#if defined(__UNIX__)        wxSTD cerr << "Error: " << msg_string.mb_str() << "\n";        wxSTD cerr.flush();#elif defined(__WXMSW__)        wxLogError(msg);#endif    }    Tex2RTFYield(true);#endif // NO_GUI}void OnInform(const wxChar *msg){    wxString msg_string = msg;#ifdef NO_GUI    wxSTD cout << msg_string.mb_str() << "\n";    wxSTD cout.flush();#else    if (isInteractive && frame)    {       (*frame->textWindow) << msg << _T("\n");    }    else    {#if defined(__UNIX__)        wxSTD cout << msg_string.mb_str() << "\n";        wxSTD cout.flush();#elif defined(__WXMSW__)        wxLogInfo(msg);#endif    }    if (isInteractive)    {        Tex2RTFYield(true);    }#endif // NO_GUI}void OnMacro(int macroId, int no_args, bool start){  switch (convertMode)  {    case TEX_RTF:    {      RTFOnMacro(macroId, no_args, start);      break;    }    case TEX_XLP:    {      XLPOnMacro(macroId, no_args, start);      break;    }    case TEX_HTML:    {      HTMLOnMacro(macroId, no_args, start);      break;    }  }}bool OnArgument(int macroId, int arg_no, bool start){  switch (convertMode)  {    case TEX_RTF:    {      return RTFOnArgument(macroId, arg_no, start);      // break;    }    case TEX_XLP:    {      return XLPOnArgument(macroId, arg_no, start);      // break;    }    case TEX_HTML:    {      return HTMLOnArgument(macroId, arg_no, start);      // break;    }  }  return true;}/* * DDE Stuff */#if defined(__WXMSW__) && !defined(NO_GUI)/* * Server */wxConnectionBase *Tex2RTFServer::OnAcceptConnection(const wxString& topic){  if (topic == _T("TEX2RTF"))  {    if (!ipc_buffer)      ipc_buffer = new wxChar[1000];    return new Tex2RTFConnection(ipc_buffer, 4000);  }  else    return NULL;} /*  * Connection  */Tex2RTFConnection::Tex2RTFConnection(wxChar *buf, int size):wxDDEConnection(buf, size){}bool SplitCommand(wxChar *data, wxChar *firstArg, wxChar *secondArg){  firstArg[0] = 0;  secondArg[0] = 0;  int i = 0;  bool stop = false;  // Find first argument (command name)  while (!stop)  {    if (data[i] == ' ' || data[i] == 0)      stop = true;    else    {      firstArg[i] = data[i];      i ++;    }  }  firstArg[i] = 0;  if (data[i] == ' ')  {    // Find second argument    i ++;    int j = 0;    while (data[i] != 0)    {      secondArg[j] = data[i];      i ++;      j ++;    }    secondArg[j] = 0;  }  return true;}bool Tex2RTFConnection::OnExecute(const wxString& WXUNUSED(topic), wxChar *data, int WXUNUSED(size), wxIPCFormat WXUNUSED(format)){  wxStrcpy(Tex2RTFLastStatus, _T("OK"));  wxChar firstArg[50];  wxChar secondArg[300];  if (SplitCommand(data, firstArg, secondArg))  {    bool hasArg = (wxStrlen(secondArg) > 0);    if (wxStrcmp(firstArg, _T("INPUT")) == 0 && hasArg)    {        InputFile = secondArg;        if (frame)        {            wxChar buf[100];            wxString str = wxFileNameFromPath(InputFile);            wxSnprintf(buf, sizeof(buf), _T("Tex2RTF [%s]"), (const wxChar*) str);            frame->SetTitle(buf);        }    }    else if (wxStrcmp(firstArg, _T("OUTPUT")) == 0 && hasArg)    {        OutputFile = secondArg;    }    else if (wxStrcmp(firstArg, _T("GO")) == 0)    {      wxStrcpy(Tex2RTFLastStatus, _T("WORKING"));      if (!Go())        wxStrcpy(Tex2RTFLastStatus, _T("CONVERSION ERROR"));      else        wxStrcpy(Tex2RTFLastStatus, _T("OK"));    }    else if (wxStrcmp(firstArg, _T("EXIT")) == 0)    {      if (frame) frame->Close();    }    else if (wxStrcmp(firstArg, _T("MINIMIZE")) == 0 || wxStrcmp(firstArg, _T("ICONIZE")) == 0)    {      if (frame)        frame->Iconize(true);    }    else if (wxStrcmp(firstArg, _T("SHOW")) == 0 || wxStrcmp(firstArg, _T("RESTORE")) == 0)    {      if (frame)      {        frame->Iconize(false);        frame->Show(true);      }    }    else    {      // Try for a setting      wxStrcpy(Tex2RTFLastStatus, RegisterSetting(firstArg, secondArg, false));#if !defined(NO_GUI) && wxUSE_STATUSBAR      if (frame && wxStrcmp(firstArg, _T("conversionMode")) == 0)      {        wxChar buf[100];        wxStrcpy(buf, _T("In "));        if (winHelp && (convertMode == TEX_RTF))          wxStrcat(buf, _T("WinHelp RTF"));        else if (!winHelp && (convertMode == TEX_RTF))          wxStrcat(buf, _T("linear RTF"));        else if (convertMode == TEX_HTML) wxStrcat(buf, _T("HTML"));        else if (convertMode == TEX_XLP) wxStrcat(buf, _T("XLP"));          wxStrcat(buf, _T(" mode."));        frame->SetStatusText(buf, 1);      }#endif    }  }  return true;}wxChar *Tex2RTFConnection::OnRequest(const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item), int *WXUNUSED(size), wxIPCFormat WXUNUSED(format)){  return Tex2RTFLastStatus;}#endif#ifndef NO_GUI#ifndef __WXGTK__//void wxObject::Dump(wxSTD ostream& str)//{//  if (GetClassInfo() && GetClassInfo()->GetClassName())//    str << GetClassInfo()->GetClassName();//  else//    str << "unknown object class";//}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -