summaryrefslogtreecommitdiff
path: root/utils/themeeditor
diff options
context:
space:
mode:
Diffstat (limited to 'utils/themeeditor')
-rw-r--r--utils/themeeditor/gui/configdocument.cpp2
-rw-r--r--utils/themeeditor/gui/editorwindow.cpp50
-rw-r--r--utils/themeeditor/gui/skindocument.cpp24
-rw-r--r--utils/themeeditor/gui/skindocument.h14
-rw-r--r--utils/themeeditor/gui/skinviewer.ui19
-rw-r--r--utils/themeeditor/models/parsetreemodel.cpp14
-rw-r--r--utils/themeeditor/models/parsetreemodel.h15
-rw-r--r--utils/themeeditor/models/projectmodel.h5
8 files changed, 118 insertions, 25 deletions
diff --git a/utils/themeeditor/gui/configdocument.cpp b/utils/themeeditor/gui/configdocument.cpp
index a897d3b..cfdd8c5 100644
--- a/utils/themeeditor/gui/configdocument.cpp
+++ b/utils/themeeditor/gui/configdocument.cpp
@@ -100,7 +100,7 @@ void ConfigDocument::save()
saved = toPlainText();
emit titleChanged(title());
-
+ emit configFileChanged(file());
}
void ConfigDocument::saveAs()
diff --git a/utils/themeeditor/gui/editorwindow.cpp b/utils/themeeditor/gui/editorwindow.cpp
index 675520d..c40a420 100644
--- a/utils/themeeditor/gui/editorwindow.cpp
+++ b/utils/themeeditor/gui/editorwindow.cpp
@@ -56,7 +56,7 @@ void EditorWindow::loadTabFromSkinFile(QString fileName)
}
/* Adding a new document*/
- SkinDocument* doc = new SkinDocument(parseStatus, fileName);
+ SkinDocument* doc = new SkinDocument(parseStatus, fileName, project);
addTab(doc);
ui->editorTabs->setCurrentWidget(doc);
@@ -144,11 +144,6 @@ void EditorWindow::setupUI()
viewer = new SkinViewer(this);
ui->skinPreviewLayout->addWidget(viewer);
- //TODO: Remove this test code
- QGraphicsScene* test = new QGraphicsScene();
- test->addRect(0,0,50,50);
-
- viewer->setScene(test);
}
void EditorWindow::setupMenus()
@@ -204,7 +199,7 @@ void EditorWindow::addTab(TabContent *doc)
void EditorWindow::newTab()
{
- SkinDocument* doc = new SkinDocument(parseStatus);
+ SkinDocument* doc = new SkinDocument(parseStatus, project);
addTab(doc);
ui->editorTabs->setCurrentWidget(doc);
}
@@ -221,6 +216,7 @@ void EditorWindow::shiftTab(int index)
ui->actionClose_Document->setEnabled(false);
ui->actionToolbarSave->setEnabled(false);
ui->fromTree->setEnabled(false);
+ viewer->setScene(0);
}
else if(widget->type() == TabContent::Config)
{
@@ -228,8 +224,9 @@ void EditorWindow::shiftTab(int index)
ui->actionSave_Document_As->setEnabled(true);
ui->actionClose_Document->setEnabled(true);
ui->actionToolbarSave->setEnabled(true);
+ viewer->setScene(0);
}
- else
+ else if(widget->type() == TabContent::Skin)
{
/* Syncing the tree view and the status bar */
SkinDocument* doc = dynamic_cast<SkinDocument*>(widget);
@@ -244,6 +241,9 @@ void EditorWindow::shiftTab(int index)
sizeColumns();
+ /* Syncing the preview */
+ viewer->setScene(doc->scene());
+
}
}
@@ -331,6 +331,20 @@ void EditorWindow::openProject()
fileName.chop(fileName.length() - fileName.lastIndexOf('/') - 1);
settings.setValue("defaultDirectory", fileName);
+ for(int i = 0; i < ui->editorTabs->count(); i++)
+ {
+ TabContent* doc = dynamic_cast<TabContent*>
+ (ui->editorTabs->widget(i));
+ if(doc->type() == TabContent::Skin)
+ {
+ dynamic_cast<SkinDocument*>(doc)->setProject(project);
+ if(i == ui->editorTabs->currentIndex())
+ {
+ viewer->setScene(dynamic_cast<SkinDocument*>(doc)->scene());
+ }
+ }
+ }
+
}
settings.endGroup();
@@ -340,10 +354,6 @@ void EditorWindow::openProject()
void EditorWindow::configFileChanged(QString configFile)
{
- QSettings settings;
-
- settings.beginGroup("ProjectModel");
-
if(QFile::exists(configFile))
{
@@ -356,12 +366,22 @@ void EditorWindow::configFileChanged(QString configFile)
QObject::connect(ui->projectTree, SIGNAL(activated(QModelIndex)),
project, SLOT(activated(QModelIndex)));
- configFile.chop(configFile.length() - configFile.lastIndexOf('/') - 1);
- settings.setValue("defaultDirectory", configFile);
+ for(int i = 0; i < ui->editorTabs->count(); i++)
+ {
+ TabContent* doc = dynamic_cast<TabContent*>
+ (ui->editorTabs->widget(i));
+ if(doc->type() == TabContent::Skin)
+ {
+ dynamic_cast<SkinDocument*>(doc)->setProject(project);
+ if(i == ui->editorTabs->currentIndex())
+ {
+ viewer->setScene(dynamic_cast<SkinDocument*>(doc)->scene());
+ }
+ }
+ }
}
- settings.endGroup();
}
diff --git a/utils/themeeditor/gui/skindocument.cpp b/utils/themeeditor/gui/skindocument.cpp
index 82c7106..aeefcc3 100644
--- a/utils/themeeditor/gui/skindocument.cpp
+++ b/utils/themeeditor/gui/skindocument.cpp
@@ -29,8 +29,10 @@
#include <iostream>
-SkinDocument::SkinDocument(QLabel* statusLabel, QWidget *parent) :
- TabContent(parent), statusLabel(statusLabel)
+SkinDocument::SkinDocument(QLabel* statusLabel, ProjectModel* project,
+ QWidget *parent)
+ :TabContent(parent), statusLabel(statusLabel),
+ project(project)
{
setupUI();
@@ -41,8 +43,10 @@ SkinDocument::SkinDocument(QLabel* statusLabel, QWidget *parent) :
blockUpdate = false;
}
-SkinDocument::SkinDocument(QLabel* statusLabel, QString file, QWidget *parent):
- TabContent(parent), fileName(file), statusLabel(statusLabel)
+SkinDocument::SkinDocument(QLabel* statusLabel, QString file,
+ ProjectModel* project, QWidget *parent)
+ :TabContent(parent), fileName(file),
+ statusLabel(statusLabel), project(project)
{
setupUI();
blockUpdate = false;
@@ -65,8 +69,8 @@ SkinDocument::SkinDocument(QLabel* statusLabel, QString file, QWidget *parent):
SkinDocument::~SkinDocument()
{
- delete highlighter;
- delete model;
+ highlighter->deleteLater();
+ model->deleteLater();
}
void SkinDocument::connectPrefs(PreferencesDialog* prefs)
@@ -309,3 +313,11 @@ void SkinDocument::saveAs()
emit titleChanged(titleText);
}
+
+QString SkinDocument::findSetting(QString key, QString fallback)
+{
+ if(!project)
+ return fallback;
+ else
+ return project->getSetting(key, fallback);
+}
diff --git a/utils/themeeditor/gui/skindocument.h b/utils/themeeditor/gui/skindocument.h
index c6449ca..68bec43 100644
--- a/utils/themeeditor/gui/skindocument.h
+++ b/utils/themeeditor/gui/skindocument.h
@@ -25,12 +25,14 @@
#include <QWidget>
#include <QLabel>
#include <QHBoxLayout>
+#include <QGraphicsScene>
#include "skinhighlighter.h"
#include "parsetreemodel.h"
#include "preferencesdialog.h"
#include "codeeditor.h"
#include "tabcontent.h"
+#include "projectmodel.h"
class SkinDocument : public TabContent
{
@@ -46,8 +48,10 @@ public:
"All Files (*.*)");
}
- SkinDocument(QLabel* statusLabel, QWidget *parent = 0);
- SkinDocument(QLabel* statusLabel, QString file, QWidget* parent = 0);
+ SkinDocument(QLabel* statusLabel, ProjectModel* project = 0,
+ QWidget *parent = 0);
+ SkinDocument(QLabel* statusLabel, QString file, ProjectModel* project = 0,
+ QWidget* parent = 0);
virtual ~SkinDocument();
void connectPrefs(PreferencesDialog* prefs);
@@ -57,6 +61,7 @@ public:
QString title() const{ return titleText; }
QString getStatus(){ return parseStatus; }
void genCode(){ editor->document()->setPlainText(model->genCode()); }
+ void setProject(ProjectModel* project){ this->project = project; }
void save();
void saveAs();
@@ -65,6 +70,8 @@ public:
TabType type() const{ return Skin; }
+ QGraphicsScene* scene(){ return model->render(project); }
+
signals:
public slots:
@@ -76,6 +83,7 @@ private slots:
private:
void setupUI();
+ QString findSetting(QString key, QString fallback);
QString titleText;
QString fileName;
@@ -91,6 +99,8 @@ private:
QLabel* statusLabel;
bool blockUpdate;
+
+ ProjectModel* project;
};
#endif // SKINDOCUMENT_H
diff --git a/utils/themeeditor/gui/skinviewer.ui b/utils/themeeditor/gui/skinviewer.ui
index ed260d0..a5373de 100644
--- a/utils/themeeditor/gui/skinviewer.ui
+++ b/utils/themeeditor/gui/skinviewer.ui
@@ -20,10 +20,26 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
<widget class="QToolButton" name="zoomInButton">
<property name="text">
<string>Zoom In</string>
</property>
+ <property name="autoRepeat">
+ <bool>true</bool>
+ </property>
</widget>
</item>
<item>
@@ -31,6 +47,9 @@
<property name="text">
<string>Zoom Out</string>
</property>
+ <property name="autoRepeat">
+ <bool>true</bool>
+ </property>
</widget>
</item>
</layout>
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp
index a709ea7..0b80416 100644
--- a/utils/themeeditor/models/parsetreemodel.cpp
+++ b/utils/themeeditor/models/parsetreemodel.cpp
@@ -36,6 +36,8 @@ ParseTreeModel::ParseTreeModel(const char* document, QObject* parent):
this->root = new ParseTreeNode(tree);
else
this->root = 0;
+
+ scene = new QGraphicsScene();
}
@@ -264,3 +266,15 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value,
emit dataChanged(index, index);
return true;
}
+
+QGraphicsScene* ParseTreeModel::render(ProjectModel* project)
+{
+ scene->clear();
+
+ /* First we set the screen size */
+ int screenWidth = safeSetting(project, "#screenwidth", "300").toInt();
+ int screenHeight = safeSetting(project, "#screenheight", "200").toInt();
+ scene->addRect(0, 0, screenWidth, screenHeight);
+
+ return scene;
+}
diff --git a/utils/themeeditor/models/parsetreemodel.h b/utils/themeeditor/models/parsetreemodel.h
index 55af549..1f252a3 100644
--- a/utils/themeeditor/models/parsetreemodel.h
+++ b/utils/themeeditor/models/parsetreemodel.h
@@ -21,12 +21,14 @@
#include "skin_parser.h"
#include "skin_debug.h"
+#include "projectmodel.h"
#ifndef PARSETREEMODEL_H
#define PARSETREEMODEL_H
#include <QAbstractItemModel>
#include <QList>
+#include <QGraphicsScene>
#include "parsetreenode.h"
@@ -58,9 +60,22 @@ public:
Qt::ItemFlags flags(const QModelIndex &index) const;
bool setData(const QModelIndex &index, const QVariant &value, int role);
+ QGraphicsScene* render(ProjectModel* project);
+
+ static QString safeSetting(ProjectModel* project, QString key,
+ QString fallback)
+ {
+ if(project)
+ return project->getSetting(key, fallback);
+ else
+ return fallback;
+ }
+
+
private:
ParseTreeNode* root;
struct skin_element* tree;
+ QGraphicsScene* scene;
};
diff --git a/utils/themeeditor/models/projectmodel.h b/utils/themeeditor/models/projectmodel.h
index 6623917..791c07e 100644
--- a/utils/themeeditor/models/projectmodel.h
+++ b/utils/themeeditor/models/projectmodel.h
@@ -44,7 +44,10 @@ public:
int rowCount(const QModelIndex& parent) const;
QVariant data(const QModelIndex &index, int role) const;
- QString getSetting(QString key){ return settings.value(key, ""); }
+ QString getSetting(QString key, QString fallback = "")
+ {
+ return settings.value(key, fallback);
+ }
signals: