91 lines
2.6 KiB
C++
91 lines
2.6 KiB
C++
#ifndef MAINWIDGET_H
|
|
#define MAINWIDGET_H
|
|
|
|
#include <QWidget>
|
|
#include <QTableWidget>
|
|
#include <QMenu>
|
|
#include <QAction>
|
|
#include <QMessageBox>
|
|
#include "src/xml_opr.h"
|
|
#include "src/config.h"
|
|
#include "src/attribute_edit.h"
|
|
|
|
struct SElement_t {
|
|
SElement_t(Element_t* e, const std::string& s);
|
|
Element_t* ele{};
|
|
std::string str{};
|
|
};
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
namespace Ui {
|
|
class MainWidget;
|
|
}
|
|
QT_END_NAMESPACE
|
|
|
|
class MainWidget : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
MainWidget(QWidget* parent = nullptr);
|
|
~MainWidget();
|
|
|
|
public:
|
|
void set_work_exe(char* path);
|
|
void generate_table_widget();
|
|
void push_content(const std::vector<Element_t*>& eles, std::size_t page = 1);
|
|
|
|
private:
|
|
void read(const QString& file_path);
|
|
void search();
|
|
void item_changed_handle(QTableWidgetItem* item);
|
|
void save();
|
|
void copy_select_line();
|
|
void insert_one_line(Element_t* ele, int row);
|
|
void del_select_line();
|
|
void reset();
|
|
void judge_btn_page();
|
|
void copy_key();
|
|
bool edit_property(Element_t* target, int row);
|
|
void init_menu();
|
|
void ele_update_gui(Element_t* target, int row);
|
|
void show_custom_menu();
|
|
void sort_by_repeat(std::vector<Element_t*>& vec);
|
|
void copy_multi_data();
|
|
void replace_content(bool is_common = true);
|
|
void backup_file();
|
|
|
|
protected:
|
|
void closeEvent(QCloseEvent* event);
|
|
void keyPressEvent(QKeyEvent* event);
|
|
void replace_str(const QString& pre, const QString& after, Element_t* ele);
|
|
void replace_str(Element_t* ele, const QString& rg, const QString& after);
|
|
private:
|
|
Element_t* get_element_by_key(const QString& key);
|
|
Element_t* get_element_by_row(int row);
|
|
Element_t* get_current_select_key();
|
|
QTableWidgetItem* get_current_select_item();
|
|
|
|
private:
|
|
QMenu* context_menu_{};
|
|
QAction* ac_edit_property_{};
|
|
QAction* ac_copy_curline_{};
|
|
QAction* ac_del_curline_{};
|
|
QAction* ac_copy_key_{};
|
|
Ui::MainWidget* ui;
|
|
ConfigIni ini_{};
|
|
CXmlOpr xml_{};
|
|
std::string exe_path_{};
|
|
QTableWidget* tab_widget_{};
|
|
std::vector<Element_t*> vec_{};
|
|
std::vector<Element_t*> current_{};
|
|
std::vector<std::string> keys_{};
|
|
std::vector<int> width_{};
|
|
bool auto_add_{false};
|
|
std::size_t cur_page_{1};
|
|
std::size_t all_page_{1};
|
|
CAttributeEdit* attri_edit_{};
|
|
OprBase base_{};
|
|
};
|
|
#endif // MAINWIDGET_H
|