dvisourcesplitter.cpp

来自「okular」· C++ 代码 · 共 98 行

CPP
98
字号
// -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; c-brace-offset: 0; -*-//// C++ Implementation: dvisourcesplitter//// Author: Jeroen Wijnhout <Jeroen.Wijnhout@kdemail.net>, (C) 2004//// Copyright: See COPYING file that comes with this distribution//#include <config.h>#include "dvisourcesplitter.h"#include "kvs_debug.h"#include <QDir>//#define DEBUG_SOURCESPLITTERDVI_SourceFileSplitter::DVI_SourceFileSplitter(const QString &srclink, const QString &dviFile){  QString filepart = srclink, linepart;  // if sourcefilename starts with a number  // then there could be a mix up, i.e. src:123file.tex  // line 123 and file.tex or line 12 and 3file.tex?  bool possibleNumberMixUp = false;#ifdef DEBUG_SOURCESPLITTER  kDebug(kvs::dvi) << "DVI_SourceSplitter: srclink " << srclink << endl;#endif  //remove src: if necessary  if ( filepart.left(4) == "src:" ) filepart = srclink.mid(4);  //split first  quint32 max = filepart.length(), i = 0;  for(i=0; i<max; ++i) if ( !filepart[i].isDigit()) break;  linepart = filepart.left(i);  filepart = filepart.mid(i);  //check for number mix up  if ( filepart[0] != ' ' && (linepart.length() != 1) ) possibleNumberMixUp = true;  //remove a spaces  filepart = filepart.trimmed();  linepart = linepart.trimmed();#ifdef DEBUG_SOURCESPLITTER  kDebug(kvs::dvi) << "DVI_SourceSplitter: filepart " << filepart << " linepart " << linepart << endl;#endif  //test if the file exists  m_fileInfo.setFile(QFileInfo(dviFile).absoluteDir(), filepart);  bool fiExists = m_fileInfo.exists();  //if it doesn't exist, but adding ".tex"  if ( !fiExists && QFileInfo(m_fileInfo.absoluteFilePath() + ".tex").exists() )    m_fileInfo.setFile(m_fileInfo.absoluteFilePath() + ".tex");  //if that doesn't help either, perhaps the file started with a  //number: move the numbers from the sourceline to the filename  //one by one (also try to add .tex repeatedly)  if ( possibleNumberMixUp && !fiExists )  {    QFileInfo tempInfo(m_fileInfo);    QString tempFileName = tempInfo.fileName();    quint32 index, maxindex = linepart.length();    bool found = false;    for ( index = 1; index < maxindex; ++index)    {      tempInfo.setFile(linepart.right(index) + tempFileName);#ifdef DEBUG_SOURCESPLITTER      kDebug(kvs::dvi) << "DVI_SourceSplitter: trying " << tempInfo.fileName() << endl;#endif      if ( tempInfo.exists() ) { found = true; break;}      tempInfo.setFile(linepart.right(index) + tempFileName + ".tex");#ifdef DEBUG_SOURCESPLITTER      kDebug(kvs::dvi) << "DVI_SourceSplitter: trying " << tempInfo.fileName() << endl;#endif      if ( tempInfo.exists() ) { found = true; break;}    }    if (found)    {      m_fileInfo = tempInfo;      linepart = linepart.left(maxindex - index);    }  }  bool ok;  m_line = linepart.toInt(&ok);  if (!ok) m_line = 0;#ifdef DEBUG_SOURCESPLITTER  kDebug(kvs::dvi) << "DVI_SourceSplitter: result: file " << m_fileInfo.absoluteFilePath() << " line " << m_line << endl;#endif}

⌨️ 快捷键说明

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