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:
@@ -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();
|
||||
|
@@ -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;
|
||||
|
||||
};
|
||||
|
Reference in New Issue
Block a user