editor/src/helpwords.cpp

131 lines
2.9 KiB
C++

/*******************************************
* Zira Editor
* A lightweight PHP Editor
* (C)2019 https://github.com/ziracms/editor
*******************************************/
#include "helpwords.h"
#include <QFile>
#include <QTextStream>
#include <QTimer>
const int LOAD_DELAY = 250; // should not be less then PROJECT_LOAD_DELAY
HelpWords::HelpWords(){}
HelpWords& HelpWords::instance()
{
static HelpWords _instance;
return _instance;
}
void HelpWords::loadDelayed()
{
instance()._loadDelayed();
}
void HelpWords::_loadDelayed()
{
QTimer::singleShot(LOAD_DELAY, this, SLOT(load()));
}
void HelpWords::load()
{
instance()._load();
}
void HelpWords::_load()
{
loadPHPWords();
}
void HelpWords::reload()
{
instance()._reload();
}
void HelpWords::_reload()
{
reset();
load();
}
void HelpWords::reset()
{
instance()._reset();
}
void HelpWords::_reset()
{
phpFunctionDescs.clear();
phpClassMethodDescs.clear();
phpFiles.clear();
}
void HelpWords::loadPHPWords()
{
QString k, func, desc;
// php function descriptions
QFile pf(":/help/php_function_descs");
pf.open(QIODevice::ReadOnly);
QTextStream pin(&pf);
while (!pin.atEnd()) {
k = pin.readLine();
if (k == "" || k.indexOf(" ") < 0) continue;
func = k.mid(0, k.indexOf(" "));
desc = k.mid(k.indexOf(" ")+1);
phpFunctionDescs[func.toStdString()] = desc.toStdString();
}
pf.close();
// php class method descriptions
QFile cf(":/help/php_class_method_descs");
cf.open(QIODevice::ReadOnly);
QTextStream cin(&cf);
while (!cin.atEnd()) {
k = cin.readLine();
if (k == "" || k.indexOf(" ") < 0) continue;
func = k.mid(0, k.indexOf(" "));
desc = k.mid(k.indexOf(" ")+1);
phpClassMethodDescs[func.toStdString()] = desc.toStdString();
}
cf.close();
// php manual files
QFile ff(":/help/php_manual_files");
ff.open(QIODevice::ReadOnly);
QTextStream fin(&ff);
while (!fin.atEnd()) {
k = fin.readLine();
if (k == "" || k.indexOf(" ") < 0) continue;
func = k.mid(0, k.indexOf(" "));
desc = k.mid(k.indexOf(" ")+1);
phpFiles[func.toStdString()] = desc.toStdString();
}
ff.close();
}
QString HelpWords::findHelpFile(QString name)
{
return instance()._findHelpFile(name);
}
QString HelpWords::_findHelpFile(QString name)
{
QString file = "";
phpFilesIterator = phpFiles.find(name.toStdString());
if (phpFilesIterator != phpFiles.end()) {
file = QString::fromStdString(phpFilesIterator->second);
}
if (file.size() == 0 && name.indexOf("\\") >= 0) {
name = name.mid(name.lastIndexOf("\\")+1);
phpFilesIterator = phpFiles.find(name.toStdString());
if (phpFilesIterator != phpFiles.end()) {
file = QString::fromStdString(phpFilesIterator->second);
}
}
return file;
}