summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/themeeditor/editorwindow.cpp12
-rw-r--r--utils/themeeditor/editorwindow.h2
-rw-r--r--utils/themeeditor/parsetreemodel.cpp13
-rw-r--r--utils/themeeditor/parsetreemodel.h3
-rw-r--r--utils/themeeditor/skin_debug.c40
-rw-r--r--utils/themeeditor/skin_debug.h2
-rw-r--r--utils/themeeditor/skindocument.cpp11
-rw-r--r--utils/themeeditor/skindocument.h9
8 files changed, 65 insertions, 27 deletions
diff --git a/utils/themeeditor/editorwindow.cpp b/utils/themeeditor/editorwindow.cpp
index 8e81829a41..ca5f8bfa73 100644
--- a/utils/themeeditor/editorwindow.cpp
+++ b/utils/themeeditor/editorwindow.cpp
@@ -94,6 +94,10 @@ void EditorWindow::setupUI()
94 QObject::connect(ui->actionPreferences, SIGNAL(triggered()), 94 QObject::connect(ui->actionPreferences, SIGNAL(triggered()),
95 prefs, SLOT(exec())); 95 prefs, SLOT(exec()));
96 96
97 /* Setting up the parse status label */
98 parseStatus = new QLabel(this);
99 ui->statusbar->addWidget(parseStatus);
100
97} 101}
98 102
99void EditorWindow::setupMenus() 103void EditorWindow::setupMenus()
@@ -144,7 +148,7 @@ void EditorWindow::addTab(SkinDocument *doc)
144 148
145void EditorWindow::newTab() 149void EditorWindow::newTab()
146{ 150{
147 SkinDocument* doc = new SkinDocument; 151 SkinDocument* doc = new SkinDocument(parseStatus);
148 addTab(doc); 152 addTab(doc);
149} 153}
150 154
@@ -161,8 +165,12 @@ void EditorWindow::shiftTab(int index)
161 } 165 }
162 else 166 else
163 { 167 {
168 /* Syncing the tree view and the status bar */
164 ui->parseTree->setModel(dynamic_cast<SkinDocument*> 169 ui->parseTree->setModel(dynamic_cast<SkinDocument*>
165 (ui->editorTabs->currentWidget())->getModel()); 170 (ui->editorTabs->currentWidget())->getModel());
171 parseStatus->setText(dynamic_cast<SkinDocument*>
172 (ui->editorTabs->currentWidget())->getStatus());
173
166 ui->actionSave_Document->setEnabled(true); 174 ui->actionSave_Document->setEnabled(true);
167 ui->actionSave_Document_As->setEnabled(true); 175 ui->actionSave_Document_As->setEnabled(true);
168 ui->actionClose_Document->setEnabled(true); 176 ui->actionClose_Document->setEnabled(true);
@@ -220,7 +228,7 @@ void EditorWindow::openFile()
220 QString current = fileNames[i]; 228 QString current = fileNames[i];
221 229
222 /* Adding a new document for each file name */ 230 /* Adding a new document for each file name */
223 SkinDocument* doc = new SkinDocument(current); 231 SkinDocument* doc = new SkinDocument(parseStatus, current);
224 addTab(doc); 232 addTab(doc);
225 233
226 /* And setting the new default directory */ 234 /* And setting the new default directory */
diff --git a/utils/themeeditor/editorwindow.h b/utils/themeeditor/editorwindow.h
index 5f39ed35d6..3bab704bb6 100644
--- a/utils/themeeditor/editorwindow.h
+++ b/utils/themeeditor/editorwindow.h
@@ -23,6 +23,7 @@
23#define EDITORWINDOW_H 23#define EDITORWINDOW_H
24 24
25#include <QMainWindow> 25#include <QMainWindow>
26#include <QLabel>
26 27
27#include "parsetreemodel.h" 28#include "parsetreemodel.h"
28#include "skinhighlighter.h" 29#include "skinhighlighter.h"
@@ -64,6 +65,7 @@ private:
64 65
65 Ui::EditorWindow *ui; 66 Ui::EditorWindow *ui;
66 PreferencesDialog* prefs; 67 PreferencesDialog* prefs;
68 QLabel* parseStatus;
67}; 69};
68 70
69#endif // EDITORWINDOW_H 71#endif // EDITORWINDOW_H
diff --git a/utils/themeeditor/parsetreemodel.cpp b/utils/themeeditor/parsetreemodel.cpp
index 8da0c26ef3..787122d02d 100644
--- a/utils/themeeditor/parsetreemodel.cpp
+++ b/utils/themeeditor/parsetreemodel.cpp
@@ -55,18 +55,23 @@ QString ParseTreeModel::genCode()
55 return ""; 55 return "";
56} 56}
57 57
58bool ParseTreeModel::changeTree(const char *document) 58QString ParseTreeModel::changeTree(const char *document)
59{ 59{
60 struct skin_element* test = skin_parse(document); 60 struct skin_element* test = skin_parse(document);
61 61
62 if(!test) 62 if(!test)
63 return false; 63 {
64 QString error = tr("Error on line ") +
65 QString::number(skin_error_line())
66 + tr(": ") + QString(skin_error_message());
67 return error;
68 }
64 69
65 ParseTreeNode* temp = new ParseTreeNode(test); 70 ParseTreeNode* temp = new ParseTreeNode(test);
66 if(root && temp->genHash() == root->genHash()) 71 if(root && temp->genHash() == root->genHash())
67 { 72 {
68 delete temp; 73 delete temp;
69 return true; 74 return tr("Document Parses Successfully");
70 } 75 }
71 76
72 if(root) 77 if(root)
@@ -81,7 +86,7 @@ bool ParseTreeModel::changeTree(const char *document)
81 emit beginInsertRows(QModelIndex(), 0, temp->numChildren() - 1); 86 emit beginInsertRows(QModelIndex(), 0, temp->numChildren() - 1);
82 emit endInsertRows(); 87 emit endInsertRows();
83 88
84 return true; 89 return tr("Document Parses Successfully");
85 90
86} 91}
87 92
diff --git a/utils/themeeditor/parsetreemodel.h b/utils/themeeditor/parsetreemodel.h
index 76960937f1..55af549e6c 100644
--- a/utils/themeeditor/parsetreemodel.h
+++ b/utils/themeeditor/parsetreemodel.h
@@ -48,8 +48,7 @@ public:
48 48
49 QString genCode(); 49 QString genCode();
50 /* Changes the parse tree to a new document */ 50 /* Changes the parse tree to a new document */
51 bool changeTree(const char* document); 51 QString changeTree(const char* document);
52
53 QModelIndex index(int row, int column, const QModelIndex& parent) const; 52 QModelIndex index(int row, int column, const QModelIndex& parent) const;
54 QModelIndex parent(const QModelIndex &child) const; 53 QModelIndex parent(const QModelIndex &child) const;
55 int rowCount(const QModelIndex &parent) const; 54 int rowCount(const QModelIndex &parent) const;
diff --git a/utils/themeeditor/skin_debug.c b/utils/themeeditor/skin_debug.c
index 4d691892ff..4a2ef32206 100644
--- a/utils/themeeditor/skin_debug.c
+++ b/utils/themeeditor/skin_debug.c
@@ -31,54 +31,68 @@
31int debug_indent_level = 0; 31int debug_indent_level = 0;
32extern int skin_line; 32extern int skin_line;
33 33
34/* Global error variables */
35int error_line;
36char* error_message;
37
34/* Debugging functions */ 38/* Debugging functions */
35void skin_error(enum skin_errorcode error) 39void skin_error(enum skin_errorcode error)
36{ 40{
37 41
38 fprintf(stderr, "Error on line %d: ", skin_line); 42 error_line = skin_line;
39 43
40 switch(error) 44 switch(error)
41 { 45 {
42 case MEMORY_LIMIT_EXCEEDED: 46 case MEMORY_LIMIT_EXCEEDED:
43 fprintf(stderr, "Memory limit exceeded\n"); 47 error_message = "Memory limit exceeded";
44 break; 48 break;
45 case NEWLINE_EXPECTED: 49 case NEWLINE_EXPECTED:
46 fprintf(stderr, "Newline expected\n"); 50 error_message = "Newline expected";
47 break; 51 break;
48 case ILLEGAL_TAG: 52 case ILLEGAL_TAG:
49 fprintf(stderr, "Illegal tag\n"); 53 error_message = "Illegal tag";
50 break; 54 break;
51 case ARGLIST_EXPECTED: 55 case ARGLIST_EXPECTED:
52 fprintf(stderr, "Argument list expected\n"); 56 error_message = "Argument list expected";
53 break; 57 break;
54 case TOO_MANY_ARGS: 58 case TOO_MANY_ARGS:
55 fprintf(stderr, "Too many arguments given\n"); 59 error_message = "Too many arguments given";
56 break; 60 break;
57 case DEFAULT_NOT_ALLOWED: 61 case DEFAULT_NOT_ALLOWED:
58 fprintf(stderr, "Argument can not be set to default\n"); 62 error_message = "Argument can not be set to default";
59 break; 63 break;
60 case UNEXPECTED_NEWLINE: 64 case UNEXPECTED_NEWLINE:
61 fprintf(stderr, "Unexpected newline\n"); 65 error_message = "Unexpected newline";
62 break; 66 break;
63 case INSUFFICIENT_ARGS: 67 case INSUFFICIENT_ARGS:
64 fprintf(stderr, "Not enough arguments\n"); 68 error_message = "Not enough arguments";
65 break; 69 break;
66 case INT_EXPECTED: 70 case INT_EXPECTED:
67 fprintf(stderr, "Expected integer\n"); 71 error_message = "Expected integer";
68 break; 72 break;
69 case SEPERATOR_EXPECTED: 73 case SEPERATOR_EXPECTED:
70 fprintf(stderr, "Expected argument seperator\n"); 74 error_message = "Expected argument seperator";
71 break; 75 break;
72 case CLOSE_EXPECTED: 76 case CLOSE_EXPECTED:
73 fprintf(stderr, "Expected list close\n"); 77 error_message = "Expected list close";
74 break; 78 break;
75 case MULTILINE_EXPECTED: 79 case MULTILINE_EXPECTED:
76 fprintf(stderr, "Expected subline seperator\n"); 80 error_message = "Expected subline seperator";
77 break; 81 break;
78 }; 82 };
79 83
80} 84}
81 85
86int skin_error_line()
87{
88 return error_line;
89}
90
91char* skin_error_message()
92{
93 return error_message;
94}
95
82void skin_debug_tree(struct skin_element* root) 96void skin_debug_tree(struct skin_element* root)
83{ 97{
84 int i; 98 int i;
diff --git a/utils/themeeditor/skin_debug.h b/utils/themeeditor/skin_debug.h
index 6b2a1bd1f5..24c66e6671 100644
--- a/utils/themeeditor/skin_debug.h
+++ b/utils/themeeditor/skin_debug.h
@@ -32,6 +32,8 @@ extern "C"
32 32
33/* Debugging functions */ 33/* Debugging functions */
34void skin_error(enum skin_errorcode error); 34void skin_error(enum skin_errorcode error);
35int skin_error_line();
36char* skin_error_message();
35void skin_debug_tree(struct skin_element* root); 37void skin_debug_tree(struct skin_element* root);
36 38
37/* Auxiliary debug functions */ 39/* Auxiliary debug functions */
diff --git a/utils/themeeditor/skindocument.cpp b/utils/themeeditor/skindocument.cpp
index 80a4fa330d..c7b69688f6 100644
--- a/utils/themeeditor/skindocument.cpp
+++ b/utils/themeeditor/skindocument.cpp
@@ -27,7 +27,8 @@
27#include <QMessageBox> 27#include <QMessageBox>
28#include <QFileDialog> 28#include <QFileDialog>
29 29
30SkinDocument::SkinDocument(QWidget *parent) : QWidget(parent) 30SkinDocument::SkinDocument(QLabel* statusLabel, QWidget *parent) :
31 QWidget(parent), statusLabel(statusLabel)
31{ 32{
32 setupUI(); 33 setupUI();
33 34
@@ -36,8 +37,8 @@ SkinDocument::SkinDocument(QWidget *parent) : QWidget(parent)
36 saved = ""; 37 saved = "";
37} 38}
38 39
39SkinDocument::SkinDocument(QString file, QWidget *parent): 40SkinDocument::SkinDocument(QLabel* statusLabel, QString file, QWidget *parent):
40 QWidget(parent), fileName(file) 41 QWidget(parent), fileName(file), statusLabel(statusLabel)
41{ 42{
42 setupUI(); 43 setupUI();
43 44
@@ -155,7 +156,9 @@ void SkinDocument::settingsChanged()
155 156
156void SkinDocument::codeChanged() 157void SkinDocument::codeChanged()
157{ 158{
158 model->changeTree(editor->document()->toPlainText().toAscii()); 159 parseStatus = model->changeTree(editor->document()->
160 toPlainText().toAscii());
161 statusLabel->setText(parseStatus);
159 162
160 if(editor->document()->toPlainText() != saved) 163 if(editor->document()->toPlainText() != saved)
161 emit titleChanged(title + QChar('*')); 164 emit titleChanged(title + QChar('*'));
diff --git a/utils/themeeditor/skindocument.h b/utils/themeeditor/skindocument.h
index cf8f8a0313..4a6516f6de 100644
--- a/utils/themeeditor/skindocument.h
+++ b/utils/themeeditor/skindocument.h
@@ -23,6 +23,7 @@
23#define SKINDOCUMENT_H 23#define SKINDOCUMENT_H
24 24
25#include <QWidget> 25#include <QWidget>
26#include <QLabel>
26#include <QHBoxLayout> 27#include <QHBoxLayout>
27#include <QPlainTextEdit> 28#include <QPlainTextEdit>
28 29
@@ -44,14 +45,15 @@ public:
44 "All Files (*.*)"); 45 "All Files (*.*)");
45 } 46 }
46 47
47 SkinDocument(QWidget *parent = 0); 48 SkinDocument(QLabel* statusLabel, QWidget *parent = 0);
48 SkinDocument(QString file, QWidget* parent = 0); 49 SkinDocument(QLabel* statusLabel, QString file, QWidget* parent = 0);
49 virtual ~SkinDocument(); 50 virtual ~SkinDocument();
50 51
51 void connectPrefs(PreferencesDialog* prefs); 52 void connectPrefs(PreferencesDialog* prefs);
52 53
53 ParseTreeModel* getModel(){ return model; } 54 ParseTreeModel* getModel(){ return model; }
54 QString getTitle(){ return title; } 55 QString getTitle(){ return title; }
56 QString getStatus(){ return parseStatus; }
55 void genCode(){ editor->document()->setPlainText(model->genCode()); } 57 void genCode(){ editor->document()->setPlainText(model->genCode()); }
56 58
57 void save(); 59 void save();
@@ -74,12 +76,15 @@ private:
74 QString title; 76 QString title;
75 QString fileName; 77 QString fileName;
76 QString saved; 78 QString saved;
79 QString parseStatus;
77 80
78 QLayout* layout; 81 QLayout* layout;
79 QPlainTextEdit* editor; 82 QPlainTextEdit* editor;
80 83
81 SkinHighlighter* highlighter; 84 SkinHighlighter* highlighter;
82 ParseTreeModel* model; 85 ParseTreeModel* model;
86
87 QLabel* statusLabel;
83}; 88};
84 89
85#endif // SKINDOCUMENT_H 90#endif // SKINDOCUMENT_H