feat: Implement core functionality for DTC C/C++ IDE

- Added ProjectManager class to handle project operations including opening, closing, building, and running projects.
- Introduced SyntaxHighlighter class for syntax highlighting in C and C++ files.
- Developed TerminalWidget for command execution and output display.
- Created TextEditor with line numbering and auto-indentation features.
- Established main application entry point in main.cpp.
- Designed UI layout for MainWindow using Qt Designer.
This commit is contained in:
TIPC1110
2025-07-04 12:23:20 +07:00
parent cb1b9863e0
commit a32f79f6d5
22 changed files with 2930 additions and 0 deletions

47
include/FileTreeWidget.h Normal file
View File

@@ -0,0 +1,47 @@
#pragma once
#include <QtWidgets/QTreeWidget>
#include <QtWidgets/QTreeWidgetItem>
#include <QtWidgets/QMenu>
#include <QtCore/QFileSystemWatcher>
#include <QtCore/QDir>
class FileTreeWidget : public QTreeWidget
{
Q_OBJECT
public:
explicit FileTreeWidget(QWidget *parent = nullptr);
~FileTreeWidget();
void setRootPath(const QString &path);
QString rootPath() const;
void refreshTree();
signals:
void fileSelected(const QString &filePath);
void fileDoubleClicked(const QString &filePath);
void directorySelected(const QString &dirPath);
private slots:
void onItemClicked(QTreeWidgetItem *item, int column);
void onItemDoubleClicked(QTreeWidgetItem *item, int column);
void onCustomContextMenu(const QPoint &point);
void onDirectoryChanged(const QString &path);
void newFile();
void newFolder();
void deleteItem();
void renameItem();
private:
void populateTree(const QString &path, QTreeWidgetItem *parent = nullptr);
void setupContextMenu();
QString getItemPath(QTreeWidgetItem *item) const;
bool isDirectory(QTreeWidgetItem *item) const;
QString m_rootPath;
QFileSystemWatcher *m_fileWatcher;
QMenu *m_contextMenu;
QTreeWidgetItem *m_contextItem;
};