mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-16 11:37:38 -04:00
Theme Editor: Changed anged error reporting method in parser, added error messages to status bar in editor
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26672 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
bd2ba8068c
commit
0e44ce9bed
8 changed files with 65 additions and 27 deletions
|
@ -94,6 +94,10 @@ void EditorWindow::setupUI()
|
|||
QObject::connect(ui->actionPreferences, SIGNAL(triggered()),
|
||||
prefs, SLOT(exec()));
|
||||
|
||||
/* Setting up the parse status label */
|
||||
parseStatus = new QLabel(this);
|
||||
ui->statusbar->addWidget(parseStatus);
|
||||
|
||||
}
|
||||
|
||||
void EditorWindow::setupMenus()
|
||||
|
@ -144,7 +148,7 @@ void EditorWindow::addTab(SkinDocument *doc)
|
|||
|
||||
void EditorWindow::newTab()
|
||||
{
|
||||
SkinDocument* doc = new SkinDocument;
|
||||
SkinDocument* doc = new SkinDocument(parseStatus);
|
||||
addTab(doc);
|
||||
}
|
||||
|
||||
|
@ -161,8 +165,12 @@ void EditorWindow::shiftTab(int index)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* Syncing the tree view and the status bar */
|
||||
ui->parseTree->setModel(dynamic_cast<SkinDocument*>
|
||||
(ui->editorTabs->currentWidget())->getModel());
|
||||
parseStatus->setText(dynamic_cast<SkinDocument*>
|
||||
(ui->editorTabs->currentWidget())->getStatus());
|
||||
|
||||
ui->actionSave_Document->setEnabled(true);
|
||||
ui->actionSave_Document_As->setEnabled(true);
|
||||
ui->actionClose_Document->setEnabled(true);
|
||||
|
@ -220,7 +228,7 @@ void EditorWindow::openFile()
|
|||
QString current = fileNames[i];
|
||||
|
||||
/* Adding a new document for each file name */
|
||||
SkinDocument* doc = new SkinDocument(current);
|
||||
SkinDocument* doc = new SkinDocument(parseStatus, current);
|
||||
addTab(doc);
|
||||
|
||||
/* And setting the new default directory */
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#define EDITORWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QLabel>
|
||||
|
||||
#include "parsetreemodel.h"
|
||||
#include "skinhighlighter.h"
|
||||
|
@ -64,6 +65,7 @@ private:
|
|||
|
||||
Ui::EditorWindow *ui;
|
||||
PreferencesDialog* prefs;
|
||||
QLabel* parseStatus;
|
||||
};
|
||||
|
||||
#endif // EDITORWINDOW_H
|
||||
|
|
|
@ -55,18 +55,23 @@ QString ParseTreeModel::genCode()
|
|||
return "";
|
||||
}
|
||||
|
||||
bool ParseTreeModel::changeTree(const char *document)
|
||||
QString ParseTreeModel::changeTree(const char *document)
|
||||
{
|
||||
struct skin_element* test = skin_parse(document);
|
||||
|
||||
if(!test)
|
||||
return false;
|
||||
{
|
||||
QString error = tr("Error on line ") +
|
||||
QString::number(skin_error_line())
|
||||
+ tr(": ") + QString(skin_error_message());
|
||||
return error;
|
||||
}
|
||||
|
||||
ParseTreeNode* temp = new ParseTreeNode(test);
|
||||
if(root && temp->genHash() == root->genHash())
|
||||
{
|
||||
delete temp;
|
||||
return true;
|
||||
return tr("Document Parses Successfully");
|
||||
}
|
||||
|
||||
if(root)
|
||||
|
@ -81,7 +86,7 @@ bool ParseTreeModel::changeTree(const char *document)
|
|||
emit beginInsertRows(QModelIndex(), 0, temp->numChildren() - 1);
|
||||
emit endInsertRows();
|
||||
|
||||
return true;
|
||||
return tr("Document Parses Successfully");
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -48,8 +48,7 @@ public:
|
|||
|
||||
QString genCode();
|
||||
/* Changes the parse tree to a new document */
|
||||
bool changeTree(const char* document);
|
||||
|
||||
QString changeTree(const char* document);
|
||||
QModelIndex index(int row, int column, const QModelIndex& parent) const;
|
||||
QModelIndex parent(const QModelIndex &child) const;
|
||||
int rowCount(const QModelIndex &parent) const;
|
||||
|
|
|
@ -31,54 +31,68 @@
|
|||
int debug_indent_level = 0;
|
||||
extern int skin_line;
|
||||
|
||||
/* Global error variables */
|
||||
int error_line;
|
||||
char* error_message;
|
||||
|
||||
/* Debugging functions */
|
||||
void skin_error(enum skin_errorcode error)
|
||||
{
|
||||
|
||||
fprintf(stderr, "Error on line %d: ", skin_line);
|
||||
error_line = skin_line;
|
||||
|
||||
switch(error)
|
||||
{
|
||||
case MEMORY_LIMIT_EXCEEDED:
|
||||
fprintf(stderr, "Memory limit exceeded\n");
|
||||
error_message = "Memory limit exceeded";
|
||||
break;
|
||||
case NEWLINE_EXPECTED:
|
||||
fprintf(stderr, "Newline expected\n");
|
||||
error_message = "Newline expected";
|
||||
break;
|
||||
case ILLEGAL_TAG:
|
||||
fprintf(stderr, "Illegal tag\n");
|
||||
error_message = "Illegal tag";
|
||||
break;
|
||||
case ARGLIST_EXPECTED:
|
||||
fprintf(stderr, "Argument list expected\n");
|
||||
error_message = "Argument list expected";
|
||||
break;
|
||||
case TOO_MANY_ARGS:
|
||||
fprintf(stderr, "Too many arguments given\n");
|
||||
error_message = "Too many arguments given";
|
||||
break;
|
||||
case DEFAULT_NOT_ALLOWED:
|
||||
fprintf(stderr, "Argument can not be set to default\n");
|
||||
error_message = "Argument can not be set to default";
|
||||
break;
|
||||
case UNEXPECTED_NEWLINE:
|
||||
fprintf(stderr, "Unexpected newline\n");
|
||||
error_message = "Unexpected newline";
|
||||
break;
|
||||
case INSUFFICIENT_ARGS:
|
||||
fprintf(stderr, "Not enough arguments\n");
|
||||
error_message = "Not enough arguments";
|
||||
break;
|
||||
case INT_EXPECTED:
|
||||
fprintf(stderr, "Expected integer\n");
|
||||
error_message = "Expected integer";
|
||||
break;
|
||||
case SEPERATOR_EXPECTED:
|
||||
fprintf(stderr, "Expected argument seperator\n");
|
||||
error_message = "Expected argument seperator";
|
||||
break;
|
||||
case CLOSE_EXPECTED:
|
||||
fprintf(stderr, "Expected list close\n");
|
||||
error_message = "Expected list close";
|
||||
break;
|
||||
case MULTILINE_EXPECTED:
|
||||
fprintf(stderr, "Expected subline seperator\n");
|
||||
error_message = "Expected subline seperator";
|
||||
break;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
int skin_error_line()
|
||||
{
|
||||
return error_line;
|
||||
}
|
||||
|
||||
char* skin_error_message()
|
||||
{
|
||||
return error_message;
|
||||
}
|
||||
|
||||
void skin_debug_tree(struct skin_element* root)
|
||||
{
|
||||
int i;
|
||||
|
|
|
@ -32,6 +32,8 @@ extern "C"
|
|||
|
||||
/* Debugging functions */
|
||||
void skin_error(enum skin_errorcode error);
|
||||
int skin_error_line();
|
||||
char* skin_error_message();
|
||||
void skin_debug_tree(struct skin_element* root);
|
||||
|
||||
/* Auxiliary debug functions */
|
||||
|
|
|
@ -27,7 +27,8 @@
|
|||
#include <QMessageBox>
|
||||
#include <QFileDialog>
|
||||
|
||||
SkinDocument::SkinDocument(QWidget *parent) : QWidget(parent)
|
||||
SkinDocument::SkinDocument(QLabel* statusLabel, QWidget *parent) :
|
||||
QWidget(parent), statusLabel(statusLabel)
|
||||
{
|
||||
setupUI();
|
||||
|
||||
|
@ -36,8 +37,8 @@ SkinDocument::SkinDocument(QWidget *parent) : QWidget(parent)
|
|||
saved = "";
|
||||
}
|
||||
|
||||
SkinDocument::SkinDocument(QString file, QWidget *parent):
|
||||
QWidget(parent), fileName(file)
|
||||
SkinDocument::SkinDocument(QLabel* statusLabel, QString file, QWidget *parent):
|
||||
QWidget(parent), fileName(file), statusLabel(statusLabel)
|
||||
{
|
||||
setupUI();
|
||||
|
||||
|
@ -155,7 +156,9 @@ void SkinDocument::settingsChanged()
|
|||
|
||||
void SkinDocument::codeChanged()
|
||||
{
|
||||
model->changeTree(editor->document()->toPlainText().toAscii());
|
||||
parseStatus = model->changeTree(editor->document()->
|
||||
toPlainText().toAscii());
|
||||
statusLabel->setText(parseStatus);
|
||||
|
||||
if(editor->document()->toPlainText() != saved)
|
||||
emit titleChanged(title + QChar('*'));
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#define SKINDOCUMENT_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QLabel>
|
||||
#include <QHBoxLayout>
|
||||
#include <QPlainTextEdit>
|
||||
|
||||
|
@ -44,14 +45,15 @@ public:
|
|||
"All Files (*.*)");
|
||||
}
|
||||
|
||||
SkinDocument(QWidget *parent = 0);
|
||||
SkinDocument(QString file, QWidget* parent = 0);
|
||||
SkinDocument(QLabel* statusLabel, QWidget *parent = 0);
|
||||
SkinDocument(QLabel* statusLabel, QString file, QWidget* parent = 0);
|
||||
virtual ~SkinDocument();
|
||||
|
||||
void connectPrefs(PreferencesDialog* prefs);
|
||||
|
||||
ParseTreeModel* getModel(){ return model; }
|
||||
QString getTitle(){ return title; }
|
||||
QString getStatus(){ return parseStatus; }
|
||||
void genCode(){ editor->document()->setPlainText(model->genCode()); }
|
||||
|
||||
void save();
|
||||
|
@ -74,12 +76,15 @@ private:
|
|||
QString title;
|
||||
QString fileName;
|
||||
QString saved;
|
||||
QString parseStatus;
|
||||
|
||||
QLayout* layout;
|
||||
QPlainTextEdit* editor;
|
||||
|
||||
SkinHighlighter* highlighter;
|
||||
ParseTreeModel* model;
|
||||
|
||||
QLabel* statusLabel;
|
||||
};
|
||||
|
||||
#endif // SKINDOCUMENT_H
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue