87 lines
2.5 KiB
C++
87 lines
2.5 KiB
C++
// ctaitextedit.h
|
|
#ifndef CTAI_TEXTEDIT_H
|
|
#define CTAI_TEXTEDIT_H
|
|
|
|
#include <QWidget>
|
|
#include <QVBoxLayout>
|
|
#include <QHBoxLayout>
|
|
#include <QLabel>
|
|
#include <QPushButton>
|
|
#include <QTextEdit>
|
|
#include <QLineEdit>
|
|
#include <QDateTime>
|
|
#include <QComboBox>
|
|
#include <QTextDocument>
|
|
#include <QApplication>
|
|
#include <QClipboard>
|
|
#include <QMenu>
|
|
|
|
#include <QFileDialog>
|
|
#include <QMessageBox>
|
|
#include <QTextBrowser>
|
|
#include "ctai_base.h"
|
|
#include "ctai_parsestring.h"
|
|
|
|
#define MD4QT_QT_SUPPORT
|
|
#include <3rdparty/md4qt/md4qt/parser.h>
|
|
#include <3rdparty/md4qt/md4qt/html.h>
|
|
|
|
typedef struct tokens_args{
|
|
QString prompt_tokens={};
|
|
QString completion_tokens={};
|
|
QString total_tokens={};
|
|
QString cache_hit_tokens={};
|
|
QString cache_miss_tokens={};
|
|
}tokens_data;
|
|
|
|
class ctai_textedit : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
ctai_textedit(msg_type msg_type_mode);
|
|
~ctai_textedit();
|
|
void add_message(const model_data &message);
|
|
int get_content_height() const;
|
|
private slots:
|
|
void on_delete_clicked(); // 删除按钮
|
|
void on_copy_clicked(); // 复制按钮
|
|
void on_save_clicked(); // 保存按钮
|
|
void on_menu_clicked(); // 菜单按钮
|
|
void on_fold_clicked(); // 折叠按钮
|
|
void on_tokens_clicked(); // tokens按钮
|
|
signals:
|
|
void delete_requested(); // 请求删除此消息
|
|
|
|
private:
|
|
void init_layout(msg_type msg_type_mode);
|
|
void connect_signals(msg_type msg_type_mode); // 连接信号和槽
|
|
private:
|
|
QSpacerItem *sparcer_item = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed);
|
|
QVBoxLayout *mainLayout={};
|
|
QVBoxLayout *headerLayout={};
|
|
QHBoxLayout *header_info_Layout={};
|
|
QVBoxLayout *historyLayout={};
|
|
QHBoxLayout *header_opts_Layout={};
|
|
|
|
QPushButton *m_msg_header_ico={};
|
|
QLineEdit *m_msg_header={};
|
|
QTextEdit *m_msg_history={};
|
|
QPushButton *m_msg_del={};
|
|
QPushButton *m_msg_copy={};
|
|
QPushButton *m_msg_save={};
|
|
QPushButton *m_msg_menu={};
|
|
QPushButton *m_msg_fold={}; // 折叠按钮
|
|
QPushButton *m_msg_tokens={};
|
|
QMenu *m_msg_tokens_menu={};
|
|
QAction *m_menu_prompt_tokens={};
|
|
QAction *m_menu_completion_tokens={};
|
|
QAction *m_menu_total_tokens={};
|
|
QAction *m_menu_cache_hit_tokens={};
|
|
QAction *m_menu_cache_miss_tokens={};
|
|
bool m_is_folded = false; // 折叠状态
|
|
tokens_data m_tokens_data;
|
|
QSpacerItem *bottom_spacer = new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding);
|
|
};
|
|
|
|
#endif // CTAI_TEXTEDIT_H
|