RedPanda-CPP/RedPandaIDE/systemconsts.h

153 lines
5.1 KiB
C
Raw Normal View History

2021-12-26 23:18:28 +08:00
/*
* Copyright (C) 2020-2022 Roy Qu (royqh1979@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
2021-04-11 21:33:08 +08:00
#ifndef SYSTEMCONSTS_H
#define SYSTEMCONSTS_H
#include <QStringList>
#define APP_SETTSINGS_FILENAME "redpandacpp.ini"
#ifdef Q_OS_WIN
2021-04-15 11:18:14 +08:00
#define GCC_PROGRAM "gcc.exe"
#define GPP_PROGRAM "g++.exe"
#define GDB_PROGRAM "gdb.exe"
#define GDB_SERVER_PROGRAM "gdbserver.exe"
2021-04-15 11:18:14 +08:00
#define GDB32_PROGRAM "gdb32.exe"
#define MAKE_PROGRAM "mingw32-make.exe"
#define WINDRES_PROGRAM "windres.exe"
#define GPROF_PROGRAM "gprof.exe"
2021-09-13 22:45:50 +08:00
#define CLEAN_PROGRAM "del /q /f"
2021-04-15 11:18:14 +08:00
#define CPP_PROGRAM "cpp.exe"
#define GIT_PROGRAM "git.exe"
2022-04-27 11:24:40 +08:00
#define CLANG_PROGRAM "clang.exe"
#define CLANG_CPP_PROGRAM "clang++.exe"
#define LLDB_MI_PROGRAM "lldb-mi.exe"
#elif defined(Q_OS_LINUX)
#define GCC_PROGRAM "gcc"
#define GPP_PROGRAM "g++"
#define GDB_PROGRAM "gdb"
#define GDB_SERVER_PROGRAM "gdbserver"
#define GDB32_PROGRAM "gdb32"
#define MAKE_PROGRAM "make"
2021-12-24 23:18:20 +08:00
#define WINDRES_PROGRAM ""
#define GPROF_PROGRAM "gprof"
#define CLEAN_PROGRAM "rm -rf"
#define CPP_PROGRAM "cpp"
#define GIT_PROGRAM "git"
2022-04-27 11:24:40 +08:00
#define CLANG_PROGRAM "clang"
#define CLANG_CPP_PROGRAM "clang++"
#define LLDB_MI_PROGRAM "lldb-mi"
#elif defined(Q_OS_MACOS)
#define GCC_PROGRAM "gcc"
#define GPP_PROGRAM "g++"
#define GDB_PROGRAM "gdb"
#define GDB_SERVER_PROGRAM "gdbserver"
#define GDB32_PROGRAM "gdb32"
#define MAKE_PROGRAM "make"
#define WINDRES_PROGRAM ""
#define GPROF_PROGRAM "gprof"
#define CLEAN_PROGRAM "rm -rf"
#define CPP_PROGRAM "cpp"
#define GIT_PROGRAM "git"
#define CLANG_PROGRAM "clang"
#define CLANG_CPP_PROGRAM "clang++"
#define LLDB_MI_PROGRAM "lldb-mi"
2021-04-24 15:57:45 +08:00
#else
#error "Only support windows and linux now!"
2021-04-24 15:57:45 +08:00
#endif
2021-04-15 11:18:14 +08:00
2021-09-07 10:28:40 +08:00
#define DEV_PROJECT_EXT "dev"
#define PROJECT_BOOKMARKS_EXT "bookmarks"
#define PROJECT_DEBUG_EXT "debug"
2021-09-07 10:28:40 +08:00
#define RC_EXT "rc"
#define RES_EXT "res"
2021-09-07 10:28:40 +08:00
#define H_EXT "h"
2021-09-13 10:48:44 +08:00
#define OBJ_EXT "o"
2021-09-13 19:09:15 +08:00
#define DEF_EXT "def"
#define LIB_EXT "a"
#define GCH_EXT "gch"
2021-09-16 12:03:10 +08:00
#define TEMPLATE_EXT "template"
#define TEMPLATE_INFO_FILE "info.template"
2021-09-07 16:49:35 +08:00
#define DEV_INTERNAL_OPEN "$__DEV_INTERNAL_OPEN"
#define DEV_LASTOPENS_FILE "lastopens.json"
#define DEV_SYMBOLUSAGE_FILE "symbolusage.json"
#define DEV_CODESNIPPET_FILE "codesnippets.json"
#define DEV_NEWFILETEMPLATES_FILE "newfiletemplate.txt"
2021-10-06 23:19:18 +08:00
#define DEV_AUTOLINK_FILE "autolink.json"
#define DEV_SHORTCUT_FILE "shortcuts.json"
2021-10-08 00:06:41 +08:00
#define DEV_TOOLS_FILE "tools.json"
2021-10-21 17:31:25 +08:00
#define DEV_BOOKMARK_FILE "bookmarks.json"
#define DEV_DEBUGGER_FILE "debugger.json"
#define DEV_HISTORY_FILE "history.json"
2021-10-06 23:19:18 +08:00
2021-04-20 22:24:33 +08:00
#ifdef Q_OS_WIN
# define PATH_SENSITIVITY Qt::CaseInsensitive
# define PATH_SEPARATOR ";"
2021-12-09 11:22:28 +08:00
# define LINE_BREAKER "\r\n"
2021-04-20 22:24:33 +08:00
# define NULL_FILE "NUL"
# define DEFAULT_EXECUTABLE_SUFFIX "exe"
# define DEFAULT_PREPROCESSING_SUFFIX "p"
# define DEFAULT_COMPILATION_SUFFIX "s"
# define DEFAULT_ASSEMBLING_SUFFIX "o"
2021-09-06 08:45:53 +08:00
# define STATIC_LIB_EXT "a"
# define DYNAMIC_LIB_EXT "dll"
2021-09-06 12:58:29 +08:00
# define MAKEFILE_NAME "makefile.win"
# define ALL_FILE_WILDCARD "*.*"
#elif defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
2021-04-20 22:24:33 +08:00
# define PATH_SENSITIVITY Qt::CaseSensitive
# define PATH_SEPARATOR ":"
2021-12-09 11:22:28 +08:00
# define LINE_BREAKER "\n"
2021-04-20 22:24:33 +08:00
# define NULL_FILE "/dev/null"
# define DEFAULT_EXECUTABLE_SUFFIX ""
# define DEFAULT_PREPROCESSING_SUFFIX "p"
# define DEFAULT_COMPILATION_SUFFIX "s"
# define DEFAULT_ASSEMBLING_SUFFIX "o"
2021-09-06 08:45:53 +08:00
# define STATIC_LIB_EXT "a"
# define DYNAMIC_LIB_EXT "d"
2021-09-06 12:58:29 +08:00
# define MAKEFILE_NAME "makefile"
# define ALL_FILE_WILDCARD "*"
2021-04-20 22:24:33 +08:00
#else
#error "Only support windows and linux now!"
#endif
2021-04-11 21:33:08 +08:00
class SystemConsts
{
public:
SystemConsts();
const QStringList& defaultFileFilters() const noexcept;
const QString& defaultCFileFilter() const noexcept;
const QString& defaultCPPFileFilter() const noexcept;
2021-08-30 19:52:38 +08:00
const QString& defaultAllFileFilter() const noexcept;
2021-04-11 21:33:08 +08:00
void addDefaultFileFilter(const QString& name, const QString& fileExtensions);
const QStringList &iconFileFilters() const;
const QString& iconFileFilter() const;
void setIconFileFilters(const QStringList &newIconFileFilters);
const QStringList &codecNames() const;
const QStringList &defaultFileNameFilters() const;
2021-04-11 21:33:08 +08:00
private:
2021-09-16 23:51:05 +08:00
void addFileFilter(QStringList& filters, const QString& name, const QString& fileExtensions);
2021-04-11 21:33:08 +08:00
QStringList mDefaultFileFilters;
QStringList mIconFileFilters;
QStringList mDefaultFileNameFilters;
QStringList mCodecNames;
2021-04-11 21:33:08 +08:00
};
extern SystemConsts* pSystemConsts;
#endif // SYSTEMCONSTS_H