Theme Editor: Got document title change signal working, beginning work on save function
[kugel-rb.git] / utils / themeeditor / skindocument.cpp
blob2e4f6f464b364486f2f48013b1a3d1db49e7b938
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright (C) 2010 Robert Bieber
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
22 #include "skindocument.h"
24 #include <QFile>
25 #include <QTimer>
26 #include <QSettings>
28 SkinDocument::SkinDocument(QWidget *parent) :
29 QWidget(parent)
31 setupUI();
33 title = "Untitled";
34 fileName = "";
35 saved = true;
38 SkinDocument::~SkinDocument()
40 delete highlighter;
41 delete model;
44 bool SkinDocument::requestClose()
46 return true;
49 void SkinDocument::setupUI()
51 /* Setting up the text edit */
52 layout = new QHBoxLayout;
53 editor = new QPlainTextEdit(this);
54 layout->addWidget(editor);
56 setLayout(layout);
58 /* Attaching the syntax highlighter */
59 highlighter = new SkinHighlighter(QColor(0,180,0), QColor(255,0,0),
60 QColor(0,0,255), QColor(120,120,120),
61 editor->document());
63 /* Setting up the model */
64 model = new ParseTreeModel("");
66 /* Connecting the editor's signal */
67 QObject::connect(editor, SIGNAL(textChanged()),
68 this, SLOT(codeChanged()));
71 void SkinDocument::codeChanged()
73 model->changeTree(editor->document()->toPlainText().toAscii());
74 if(saved == true)
76 saved = false;
77 title.append(tr("*"));
78 emit titleChanged(title);
82 void SkinDocument::save()
84 QFile fout(fileName);
86 if(!fout.exists())
88 QTimer::singleShot(0, this, SLOT(saveAs()));
89 return;
92 fout.open(QFile::WriteOnly);
93 fout.write(editor->document()->toPlainText().toAscii());
94 fout.close();
96 saved = true;
99 void SkinDocument::saveAs()
101 /* Determining the directory to open */