0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-09-23 08:29:07 +03:00

TextItem editor has been refactored

This commit is contained in:
Arin Alexander
2017-09-21 00:44:09 +03:00
parent 2b708b38f5
commit fcf165df66
5 changed files with 135 additions and 350 deletions

View File

@@ -11,12 +11,13 @@ namespace LimeReport{
ScriptEditor::ScriptEditor(QWidget *parent) :
QWidget(parent),
ui(new Ui::ScriptEditor)
ui(new Ui::ScriptEditor), m_reportEngine(0), m_page(0)
{
ui->setupUi(this);
setFocusProxy(ui->textEdit);
m_completer = new QCompleter(this);
ui->textEdit->setCompleter(m_completer);
connect(ui->splitter, SIGNAL(splitterMoved(int,int)), this, SIGNAL(splitterMoved(int,int)));
}
ScriptEditor::~ScriptEditor()
@@ -42,10 +43,50 @@ void ScriptEditor::setReportEngine(ReportEnginePrivate* reportEngine)
}
void ScriptEditor::setReportPage(PageDesignIntf* page)
{
m_page = page;
DataSourceManager* dm = page->datasourceManager();
ScriptEngineManager& se = LimeReport::ScriptEngineManager::instance();
se.setDataManager(dm);
initCompleter();
if (dm){
if (dm->isNeedUpdateDatasourceModel())
dm->updateDatasourceModel();
ui->twData->setModel(dm->datasourcesModel());
ui->twScriptEngine->setModel(se.model());
}
}
void ScriptEditor::setPageBand(BandDesignIntf* band)
{
if (band && ui->twData->model() && !band->datasourceName().isEmpty()){
QModelIndexList nodes = ui->twData->model()->match(
ui->twData->model()->index(0,0),
Qt::DisplayRole,
band->datasourceName(),
2,
Qt::MatchRecursive
);
if (!nodes.isEmpty()){
ui->twData->expand(nodes.at(0).parent());
ui->twData->expand(nodes.at(0));
}
}
}
void ScriptEditor::initCompleter()
{
QStringList dataWords;
DataSourceManager* dm = m_reportEngine->dataManager();
DataSourceManager* dm = 0;
if (m_reportEngine)
dm = m_reportEngine->dataManager();
if (m_page)
dm = m_page->datasourceManager();
ScriptEngineManager& se = LimeReport::ScriptEngineManager::instance();
QJSValue globalObject = se.scriptEngine()->globalObject();
@@ -68,11 +109,13 @@ void ScriptEditor::initCompleter()
dataWords << varName.remove("#");
}
for ( int i = 0; i < m_reportEngine->pageCount(); ++i){
PageDesignIntf* page = m_reportEngine->pageAt(i);
dataWords << page->pageItem()->objectName();
foreach (BaseDesignIntf* item, page->pageItem()->childBaseItems()){
addItemToCompleater(page->pageItem()->objectName(), item, dataWords);
if (m_reportEngine){
for ( int i = 0; i < m_reportEngine->pageCount(); ++i){
PageDesignIntf* page = m_reportEngine->pageAt(i);
dataWords << page->pageItem()->objectName();
foreach (BaseDesignIntf* item, page->pageItem()->childBaseItems()){
addItemToCompleater(page->pageItem()->objectName(), item, dataWords);
}
}
}
@@ -94,6 +137,16 @@ void ScriptEditor::setPlainText(const QString& text)
ui->textEdit->setPlainText(text);
}
void ScriptEditor::setEditorFont(QFont font)
{
ui->textEdit->setFont(font);
}
QFont ScriptEditor::editorFont()
{
return ui->textEdit->font();
}
QString ScriptEditor::toPlainText()
{
return ui->textEdit->toPlainText();

View File

@@ -11,6 +11,8 @@ namespace LimeReport{
class ReportEnginePrivate;
class BaseDesignIntf;
class PageDesignIntf;
class BandDesignIntf;
namespace Ui {
class ScriptEditor;
@@ -23,21 +25,26 @@ public:
explicit ScriptEditor(QWidget *parent = 0);
~ScriptEditor();
void setReportEngine(ReportEnginePrivate* reportEngine);
void setReportPage(PageDesignIntf* page);
void setPageBand(BandDesignIntf* band);
void initCompleter();
QByteArray saveState();
void restoreState(QByteArray state);
void setPlainText(const QString &text);
void setEditorFont(QFont font);
QFont editorFont();
QString toPlainText();
signals:
void splitterMoved(int, int);
private slots:
void on_twData_doubleClicked(const QModelIndex &index);
void on_twScriptEngine_doubleClicked(const QModelIndex &index);
private:
void addItemToCompleater(const QString& pageName, BaseDesignIntf* item, QStringList& dataWords);
private:
Ui::ScriptEditor *ui;
ReportEnginePrivate* m_reportEngine;
PageDesignIntf* m_page;
QCompleter* m_completer;
};