pgLab/pglab/CodeGenerator.cpp
eelke be0064f730 The codegen now can properly lookup array types.
Array type lookup failed previously because the typemapping class was
not yet receiving the list of types from the database. Fix was to pass
this data
2018-11-17 09:47:50 +01:00

53 lines
1.2 KiB
C++

#include "CodeGenerator.h"
#include "ui_CodeGenerator.h"
#include "codebuilder/CodeBuilder.h"
#include "codebuilder/DefaultConfigs.h"
#include "UserConfiguration.h"
#include <QTextStream>
CodeGenerator::CodeGenerator(QWidget *parent) :
PlgPage(parent),
ui(new Ui::CodeGenerator)
{
ui->setupUi(this);
ui->generatedCodeEditor->setFont(UserConfiguration::instance()->codeFont());
ui->generatedCodeEditor->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
}
CodeGenerator::~CodeGenerator()
{
delete ui;
}
void CodeGenerator::Init(std::shared_ptr<PgDatabaseCatalog> catalog, QString query,
std::shared_ptr<const Pgsql::Result> dbres)
{
m_catalog = catalog;
m_query = query;
m_dbres = dbres;
generateCode();
}
void CodeGenerator::on_updateCodeButton_clicked()
{
generateCode();
}
void CodeGenerator::generateCode()
{
QString struct_name = ui->structNameEdit->text();
QString buffer;
QTextStream stream(&buffer);
CodeBuilder builder;
builder.setLanguageConfig(getPglabCppLanguageConfig(m_catalog));
builder.GenCodeForExecutingQuery(stream, m_query, *m_dbres, struct_name);
stream.flush();
ui->generatedCodeEditor->setPlainText(buffer);
// QApplication::clipboard()->setText(buffer);
}