📄 hideproj.cpp
字号:
#include "hideproj.h"#include "langdef.h"#include <qfileinfo.h>#include <qdir.h>#include <fstream>#include <cstring>#include <cstdlib>#define PROJ_NAME "PROJECT="#define PROJ_ROOT "ROOT="#define PROJ_LANG "LANG="#define PROJ_COPT "COPT="#define PROJ_BOPT "BOPT="#define PROJ_AUTH "AUTH="#define PROJ_AUTOMAKE "AUTOMAKE="#define PROJ_FILES_START "[FILES]"#define PROJ_FILES_END "[/FILES]"#define PROJ_GETSTRVAL(l, var) \strtok(l, "="); \if ((p = strtok(NULL, "\n"))) \ var = p#define PROJ_GETINTVAL(l, var) \strtok(l, "="); \if ((p = strtok(NULL, "\n"))) \ var = atoi(p) bool HideProj::create(QString n, QString pr, QString l){ QFileInfo fi; QDir dir; fi.setFile((QString) pr + FILE_SEP + name + FILE_SEP + name + HIDE_PROJ_EXT); if (fi.exists()) return false; clear(); name = n; projroot = pr + FILE_SEP + name; lang = l; dir.mkdir(projroot); save(); return true;}bool HideProj::addFile(QString path){ for (unsigned i=0; i < listFiles.count(); i++) { if (listFiles[i] == path) return false; } listFiles += path; return true;}bool HideProj::removeFile(QString path){ for (unsigned i=0; i < listFiles.count(); i++) { if (listFiles[i] == path) { listFiles.erase(listFiles.at(i)); return true; } } return false;}bool HideProj::save(){ std::ofstream out; QString fpath = (QString) projroot + FILE_SEP + name + HIDE_PROJ_EXT; out.open((const char *) fpath); if (!out) return false; out << PROJ_NAME << (const char *) name << '\n'; out << PROJ_ROOT << (const char *) projroot << '\n'; out << PROJ_LANG << (const char *) lang << '\n'; if (copt != "") out << PROJ_COPT << (const char *) copt << '\n'; if (bopt != "") out << PROJ_BOPT << (const char *) bopt << '\n'; if ((lang == LANG_C) || (lang == LANG_CPP)) out << PROJ_AUTOMAKE << bAutoMake << '\n'; if (author != "") out << PROJ_AUTH << (const char *) author << '\n'; if (!listFiles.isEmpty()) { out << PROJ_FILES_START << '\n'; for (unsigned i=0; i < listFiles.count(); i++) out << (const char *) listFiles[i] << '\n'; out << PROJ_FILES_END << '\n'; } out.close(); return true;}bool HideProj::load(QString path){ std::ifstream in((const char *) path); char line[2056], *p = NULL; if (!in) return false; clear(); while (!in.eof()) { in.getline(line, sizeof(line)); if (in.eof()) break; if (strstr(line, PROJ_NAME)) { PROJ_GETSTRVAL(line, name); } else if (strstr(line, PROJ_ROOT)) { PROJ_GETSTRVAL(line, projroot); } else if (strstr(line, PROJ_LANG)) { PROJ_GETSTRVAL(line, lang); } else if (strstr(line, PROJ_COPT)) { PROJ_GETSTRVAL(line, copt); } else if (strstr(line, PROJ_BOPT)) { PROJ_GETSTRVAL(line, bopt); } else if (strstr(line, PROJ_AUTH)) { PROJ_GETSTRVAL(line, author); } else if (strstr(line, PROJ_AUTOMAKE)) { PROJ_GETINTVAL(line, bAutoMake); } else if (strstr(line, PROJ_FILES_START)) { while (!in.eof()) { in.getline(line, sizeof(line)); if (in.eof() || strstr(line, PROJ_FILES_END)) break; listFiles += line; } } } in.close(); return true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -