Skip to content

Commit

Permalink
Add record script feature
Browse files Browse the repository at this point in the history
Signed-off-by: xiaoming <2014500726@smail.xtu.edu.cn>
  • Loading branch information
QQxiaoming committed Sep 4, 2024
1 parent 42a6bab commit e4d1402
Show file tree
Hide file tree
Showing 5 changed files with 279 additions and 163 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,16 @@ en-US:
- Automatically use the default configuration if the Profile does not exist on Windows
- Add ToolTip to the connection bar
- Add system beep support
- Add record script feature
- Fix the small probability memory leak problem

zh-CN:

- Windows下Profile如果不存在则自动使用默认配置
- 增加连接条ToolTip显示
- 增加系统响铃支持
- 增加记录脚本功能
- 修复可能存在的小概率内存泄漏问题

## [[V0.5.0](https://github.com/QQxiaoming/quardCRT/releases/tag/V0.5.0)] - 2024-08-26

Expand Down
2 changes: 2 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
- Automatically use the default configuration if the Profile does not exist on Windows
- Add ToolTip to the connection bar
- Add system beep support
- Add record script feature
- Fix the small probability memory leak problem

## [[V0.5.0](https://github.com/QQxiaoming/quardCRT/releases/tag/V0.5.0)] - 2024-08-26

Expand Down
54 changes: 51 additions & 3 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,10 @@ CentralWidget::CentralWidget(QString dir, StartupUIMode mode, QLocale lang, bool
if(sessionsWindow->getMainWidget() == widget) {
logSessionAction->setChecked(sessionsWindow->isLog());
rawLogSessionAction->setChecked(sessionsWindow->isRawLog());
bool isRS = sessionsWindow->isRecordingScript();
startRecordingScriptAction->setEnabled(!isRS);
stopRecordingScriptAction->setEnabled(isRS);
canlcelRecordingScriptAction->setEnabled(isRS);
if(hexViewAction->isChecked()) {
connect(sessionsWindow,&SessionsWindow::hexDataDup,
hexViewWindow,&HexViewWindow::recvData);
Expand Down Expand Up @@ -938,6 +942,9 @@ CentralWidget::CentralWidget(QString dir, StartupUIMode mode, QLocale lang, bool
#else
runAction->setEnabled(false);
cancelAction->setEnabled(false);
startRecordingScriptAction->setEnabled(false);
stopRecordingScriptAction->setEnabled(false);
canlcelRecordingScriptAction->setEnabled(false);
#endif
#if defined(Q_OS_MACOS)
if(mainWindow) {
Expand Down Expand Up @@ -1126,9 +1133,6 @@ CentralWidget::CentralWidget(QString dir, StartupUIMode mode, QLocale lang, bool
});

// TODO:Unimplemented functions are temporarily closed
startRecordingScriptAction->setEnabled(false);
stopRecordingScriptAction->setEnabled(false);
canlcelRecordingScriptAction->setEnabled(false);
createPublicKeyAction->setEnabled(false);
publickeyManagerAction->setEnabled(false);
tileAction->setEnabled(false);
Expand Down Expand Up @@ -2195,8 +2199,10 @@ void CentralWidget::menuAndToolBarInit(void) {
startRecordingScriptAction = new QAction(this);
scriptMenu->addAction(startRecordingScriptAction);
stopRecordingScriptAction = new QAction(this);
stopRecordingScriptAction->setEnabled(false);
scriptMenu->addAction(stopRecordingScriptAction);
canlcelRecordingScriptAction = new QAction(this);
canlcelRecordingScriptAction->setEnabled(false);
scriptMenu->addAction(canlcelRecordingScriptAction);

addBookmarkAction = new QAction(this);
Expand Down Expand Up @@ -3369,6 +3375,48 @@ void CentralWidget::menuAndToolBarConnectSignals(void) {
connect(cancelAction,&QAction::triggered,this,[=](){
pyRun->cancelScript();
});
connect(startRecordingScriptAction,&QAction::triggered,this,[=](){
QWidget *widget = findCurrentFocusWidget();
if(widget == nullptr) {
return;
}
SessionsWindow *sessionsWindow = widget->property("session").value<SessionsWindow *>();
if(!sessionsWindow->isRecordingScript()) {
sessionsWindow->startRecordingScript();
}
bool isRS = sessionsWindow->isRecordingScript();
startRecordingScriptAction->setEnabled(!isRS);
stopRecordingScriptAction->setEnabled(isRS);
canlcelRecordingScriptAction->setEnabled(isRS);
});
connect(stopRecordingScriptAction,&QAction::triggered,this,[=](){
QWidget *widget = findCurrentFocusWidget();
if(widget == nullptr) {
return;
}
SessionsWindow *sessionsWindow = widget->property("session").value<SessionsWindow *>();
if(sessionsWindow->isRecordingScript()) {
sessionsWindow->stopRecordingScript();
}
bool isRS = sessionsWindow->isRecordingScript();
startRecordingScriptAction->setEnabled(!isRS);
stopRecordingScriptAction->setEnabled(isRS);
canlcelRecordingScriptAction->setEnabled(isRS);
});
connect(canlcelRecordingScriptAction,&QAction::triggered,this,[=](){
QWidget *widget = findCurrentFocusWidget();
if(widget == nullptr) {
return;
}
SessionsWindow *sessionsWindow = widget->property("session").value<SessionsWindow *>();
if(sessionsWindow->isRecordingScript()) {
sessionsWindow->canlcelRecordingScript();
}
bool isRS = sessionsWindow->isRecordingScript();
startRecordingScriptAction->setEnabled(!isRS);
stopRecordingScriptAction->setEnabled(isRS);
canlcelRecordingScriptAction->setEnabled(isRS);
});
#endif
connect(addBookmarkAction, &QAction::triggered, this, [&]() {
QString path = FileDialog::getExistingDirectory(this,tr("Select a directory"),QDir::homePath());
Expand Down
Loading

0 comments on commit e4d1402

Please sign in to comment.