mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-27 14:29:21 +00:00
253 lines
5.5 KiB
C++
253 lines
5.5 KiB
C++
|
|
#include "LayoutEditor.h"
|
|
|
|
#include "ui_MainWindowUi.h"
|
|
|
|
#include <QDebug>
|
|
#include <QFile>
|
|
#include <QList>
|
|
#include <QStandardItem>
|
|
#include <QStandardItemModel>
|
|
#include <QString>
|
|
#include <QTreeView>
|
|
|
|
|
|
namespace lyx {
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// LayoutTree
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
LayoutTree::LayoutTree(QWidget * parent)
|
|
: QTreeView(parent)
|
|
{}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// LayoutEditor
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
LayoutEditor::LayoutEditor(QWidget * parent)
|
|
: QWidget(parent)
|
|
{}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// MainWindow
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
MainWindow::MainWindow()
|
|
{
|
|
ui_ = new Ui::MainWindow;
|
|
ui_->setupUi(this);
|
|
|
|
model_ = new QStandardItemModel(this);
|
|
view_ = new LayoutTree(this);
|
|
view_->setModel(model_);
|
|
//setCentralWidget(view_);
|
|
|
|
ui_->dockLayoutTree->setWidget(view_);
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
{
|
|
delete ui_;
|
|
}
|
|
|
|
static bool isInsensitivelyEqual(QString const & s1, QString const & s2)
|
|
{
|
|
return s1.compare(s2, Qt::CaseInsensitive) == 0;
|
|
}
|
|
|
|
void MainWindow::loadLayoutFile(QString const & fileName)
|
|
{
|
|
loadLayoutFile(fileName, model_->invisibleRootItem());
|
|
view_->expandAll();
|
|
}
|
|
|
|
|
|
void MainWindow::loadLayoutFile(QString const & fileName,
|
|
QStandardItem * parent)
|
|
{
|
|
QFile file(fileName);
|
|
#if 0
|
|
file.open(QIODevice::ReadOnly);
|
|
QString contents = file.readAll();
|
|
file.close();
|
|
qDebug() << "contents: " << contents;
|
|
#endif
|
|
|
|
file.open(QIODevice::ReadOnly);
|
|
|
|
QTextStream ts(&file);
|
|
while (!ts.atEnd()) {
|
|
QList<QStandardItem *> row;
|
|
QString code;
|
|
ts >> code;
|
|
//qDebug() << "CODE: " << code;
|
|
if (code.startsWith('#')) {
|
|
QString line = code + ' ' + ts.readLine();
|
|
//row.append(new QStandardItem("Comment"));
|
|
//row.append(new QStandardItem(code + ' ' + ts.readLine()));
|
|
//parent->appendRow(row);
|
|
} else if (isInsensitivelyEqual(code, "Input")) {
|
|
QString inputFile;
|
|
ts >> inputFile;
|
|
QStandardItem * item = new QStandardItem(inputFile);
|
|
row.append(item);
|
|
parent->appendRow(row);
|
|
inputFile = fileName.left(fileName.lastIndexOf('/')) + '/' + inputFile;
|
|
qDebug() << "INPUT: " << inputFile;
|
|
loadLayoutFile(inputFile, item);
|
|
} else if (isInsensitivelyEqual(code, "Style")) {
|
|
QString style;
|
|
ts >> style;
|
|
//while (!ts.atEnd() && !isInsensitivelyEqual(code, "EndStyle"))
|
|
// ts >> code;
|
|
QStandardItem * item = new QStandardItem(style);
|
|
row.append(item);
|
|
parent->appendRow(row);
|
|
} else {
|
|
//row.append(new QStandardItem(code));
|
|
//parent->appendRow(row);
|
|
}
|
|
}
|
|
|
|
file.close();
|
|
}
|
|
|
|
} // namespace lyx
|
|
|
|
#include "LayoutEditor.h"
|
|
|
|
#include "ui_MainWindowUi.h"
|
|
|
|
#include <QDebug>
|
|
#include <QFile>
|
|
#include <QList>
|
|
#include <QStandardItem>
|
|
#include <QStandardItemModel>
|
|
#include <QString>
|
|
#include <QTreeView>
|
|
|
|
|
|
namespace lyx {
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// LayoutTree
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
LayoutTree::LayoutTree(QWidget * parent)
|
|
: QTreeView(parent)
|
|
{}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// LayoutEditor
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
LayoutEditor::LayoutEditor(QWidget * parent)
|
|
: QWidget(parent)
|
|
{}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// MainWindow
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
MainWindow::MainWindow()
|
|
{
|
|
ui_ = new Ui::MainWindow;
|
|
ui_->setupUi(this);
|
|
|
|
model_ = new QStandardItemModel(this);
|
|
view_ = new LayoutTree(this);
|
|
view_->setModel(model_);
|
|
//setCentralWidget(view_);
|
|
|
|
ui_->dockLayoutTree->setWidget(view_);
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
{
|
|
delete ui_;
|
|
}
|
|
|
|
static bool isInsensitivelyEqual(QString const & s1, QString const & s2)
|
|
{
|
|
return s1.compare(s2, Qt::CaseInsensitive) == 0;
|
|
}
|
|
|
|
void MainWindow::loadLayoutFile(QString const & fileName)
|
|
{
|
|
loadLayoutFile(fileName, model_->invisibleRootItem());
|
|
view_->expandAll();
|
|
}
|
|
|
|
|
|
void MainWindow::loadLayoutFile(QString const & fileName,
|
|
QStandardItem * parent)
|
|
{
|
|
QFile file(fileName);
|
|
#if 0
|
|
file.open(QIODevice::ReadOnly);
|
|
QString contents = file.readAll();
|
|
file.close();
|
|
qDebug() << "contents: " << contents;
|
|
#endif
|
|
|
|
file.open(QIODevice::ReadOnly);
|
|
|
|
QTextStream ts(&file);
|
|
while (!ts.atEnd()) {
|
|
QList<QStandardItem *> row;
|
|
QString code;
|
|
ts >> code;
|
|
//qDebug() << "CODE: " << code;
|
|
if (code.startsWith('#')) {
|
|
QString line = code + ' ' + ts.readLine();
|
|
//row.append(new QStandardItem("Comment"));
|
|
//row.append(new QStandardItem(code + ' ' + ts.readLine()));
|
|
//parent->appendRow(row);
|
|
} else if (isInsensitivelyEqual(code, "Input")) {
|
|
QString inputFile;
|
|
ts >> inputFile;
|
|
QStandardItem * item = new QStandardItem(inputFile);
|
|
row.append(item);
|
|
parent->appendRow(row);
|
|
inputFile = fileName.left(fileName.lastIndexOf('/')) + '/' + inputFile;
|
|
qDebug() << "INPUT: " << inputFile;
|
|
loadLayoutFile(inputFile, item);
|
|
} else if (isInsensitivelyEqual(code, "Style")) {
|
|
QString style;
|
|
ts >> style;
|
|
//while (!ts.atEnd() && !isInsensitivelyEqual(code, "EndStyle"))
|
|
// ts >> code;
|
|
QStandardItem * item = new QStandardItem(style);
|
|
row.append(item);
|
|
parent->appendRow(row);
|
|
} else {
|
|
//row.append(new QStandardItem(code));
|
|
//parent->appendRow(row);
|
|
}
|
|
}
|
|
|
|
file.close();
|
|
}
|
|
|
|
} // namespace lyx
|