00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include "filetemplate.h"
00021
00022
#include <qdatetime.h>
00023
#include <qfile.h>
00024
#include <qfileinfo.h>
00025
#include <qregexp.h>
00026
#include <qtextstream.h>
00027
00028
#include <kstandarddirs.h>
00029
00030
#include "kdevplugin.h"
00031
#include "kdevproject.h"
00032
#include "domutil.h"
00033
00034
00035 bool FileTemplate::exists(
KDevPlugin *part,
const QString &name, Policy p)
00036 {
00037
00038
00039
00040
return QFile::exists(
fullPathForName(part,name,p) );
00041 }
00042
00043 QString FileTemplate::read(
KDevPlugin *part,
const QString &name, Policy p)
00044 {
00045
00046
00047
00048
00049
00050
return readFile(part,
fullPathForName(part, name, p) );
00051 }
00052
00053
00054 QString FileTemplate::readFile(
KDevPlugin *part,
const QString &fileName)
00055 {
00056
QDomDocument &dom = *part->
projectDom();
00057
00058
QFile f(fileName);
00059
if (!f.open(IO_ReadOnly))
00060
return QString::null;
00061
QTextStream stream(&f);
00062
QString str = stream.read();
00063
00064
QString author = DomUtil::readEntry(dom,
"/general/author");
00065
QString email = DomUtil::readEntry(dom,
"/general/email");
00066
QString version = DomUtil::readEntry(dom,
"/general/version");
00067
QString date = QDate::currentDate().toString();
00068
QString year = QString::number(QDate::currentDate().year());
00069
00070 str.replace(
QRegExp(
"\\$EMAIL\\$"),email);
00071 str.replace(
QRegExp(
"\\$AUTHOR\\$"),author);
00072 str.replace(
QRegExp(
"\\$VERSION\\$"),version);
00073 str.replace(
QRegExp(
"\\$DATE\\$"),date);
00074 str.replace(
QRegExp(
"\\$YEAR\\$"),year);
00075
00076
return str;
00077 }
00078
00079
00080 bool FileTemplate::copy(
KDevPlugin *part,
const QString &name,
00081
const QString &dest, Policy p)
00082 {
00083
QString text =
read(part, name, p);
00084
00085
QFile f(dest);
00086
if (!f.open(IO_WriteOnly))
00087
return false;
00088
00089
QFileInfo fi(f);
00090
QString module = fi.baseName();
00091
QString basefilename = fi.baseName(
true);
00092
text.replace(
QRegExp(
"\\$MODULE\\$"),module);
00093
text.replace(
QRegExp(
"\\$FILENAME\\$"),basefilename);
00094
00095
QTextStream stream(&f);
00096 stream <<
text;
00097 f.close();
00098
00099
return true;
00100 }
00101
00102 QString FileTemplate::fullPathForName(
KDevPlugin *part,
const QString &name,
00103 Policy p) {
00104
00105
if (p!=
Default)
return name;
00106
00107
00108
QString fileName = (part->
project()->
projectDirectory() +
"/templates/" + name);
00109
if (QFile::exists(fileName))
return fileName;
00110
00111
00112
QString globalName = ::locate(
"data",
"kdevfilecreate/file-templates/" + name);
00113
return globalName.isNull() ? fileName : globalName;
00114 }