forked from len0rd/rockbox
Theme Editor: Implemented save/save as in the configuration file editor
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26863 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
0c26a790ee
commit
267a446887
5 changed files with 70 additions and 7 deletions
|
@ -116,6 +116,7 @@ void ConfigDocument::saveAs()
|
||||||
|
|
||||||
saved = toPlainText();
|
saved = toPlainText();
|
||||||
emit titleChanged(title());
|
emit titleChanged(title());
|
||||||
|
emit configFileChanged(file());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +151,7 @@ bool ConfigDocument::requestClose()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ConfigDocument::toPlainText() const
|
QString ConfigDocument::toPlainText() const
|
||||||
|
@ -185,6 +186,11 @@ void ConfigDocument::addRow(QString key, QString value)
|
||||||
QObject::connect(delButton, SIGNAL(clicked()),
|
QObject::connect(delButton, SIGNAL(clicked()),
|
||||||
this, SLOT(deleteClicked()));
|
this, SLOT(deleteClicked()));
|
||||||
|
|
||||||
|
QObject::connect(keyEdit, SIGNAL(textChanged(QString)),
|
||||||
|
this, SLOT(textChanged()));
|
||||||
|
QObject::connect(valueEdit, SIGNAL(textChanged(QString)),
|
||||||
|
this, SLOT(textChanged()));
|
||||||
|
|
||||||
ui->configBoxes->addLayout(layout);
|
ui->configBoxes->addLayout(layout);
|
||||||
|
|
||||||
containers.append(layout);
|
containers.append(layout);
|
||||||
|
@ -219,3 +225,11 @@ void ConfigDocument::addClicked()
|
||||||
{
|
{
|
||||||
addRow(tr("Key"), tr("Value"));
|
addRow(tr("Key"), tr("Value"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigDocument::textChanged()
|
||||||
|
{
|
||||||
|
if(toPlainText() != saved)
|
||||||
|
emit titleChanged(title() + "*");
|
||||||
|
else
|
||||||
|
emit titleChanged(title());
|
||||||
|
}
|
||||||
|
|
|
@ -67,9 +67,13 @@ private:
|
||||||
|
|
||||||
void addRow(QString key, QString value);
|
void addRow(QString key, QString value);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void configFileChanged(QString);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void deleteClicked();
|
void deleteClicked();
|
||||||
void addClicked();
|
void addClicked();
|
||||||
|
void textChanged();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CONFIGDOCUMENT_H
|
#endif // CONFIGDOCUMENT_H
|
||||||
|
|
|
@ -201,7 +201,7 @@ void EditorWindow::shiftTab(int index)
|
||||||
{
|
{
|
||||||
TabContent* widget = dynamic_cast<TabContent*>
|
TabContent* widget = dynamic_cast<TabContent*>
|
||||||
(ui->editorTabs->currentWidget());
|
(ui->editorTabs->currentWidget());
|
||||||
if(index < 0 || widget->type() != TabContent::Skin)
|
if(index < 0)
|
||||||
{
|
{
|
||||||
ui->parseTree->setModel(0);
|
ui->parseTree->setModel(0);
|
||||||
ui->actionSave_Document->setEnabled(false);
|
ui->actionSave_Document->setEnabled(false);
|
||||||
|
@ -210,6 +210,13 @@ void EditorWindow::shiftTab(int index)
|
||||||
ui->actionToolbarSave->setEnabled(false);
|
ui->actionToolbarSave->setEnabled(false);
|
||||||
ui->fromTree->setEnabled(false);
|
ui->fromTree->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
else if(widget->type() == TabContent::Config)
|
||||||
|
{
|
||||||
|
ui->actionSave_Document->setEnabled(true);
|
||||||
|
ui->actionSave_Document_As->setEnabled(true);
|
||||||
|
ui->actionClose_Document->setEnabled(true);
|
||||||
|
ui->actionToolbarSave->setEnabled(true);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Syncing the tree view and the status bar */
|
/* Syncing the tree view and the status bar */
|
||||||
|
@ -318,6 +325,34 @@ void EditorWindow::openProject()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorWindow::configFileChanged(QString configFile)
|
||||||
|
{
|
||||||
|
|
||||||
|
QSettings settings;
|
||||||
|
|
||||||
|
settings.beginGroup("ProjectModel");
|
||||||
|
|
||||||
|
if(QFile::exists(configFile))
|
||||||
|
{
|
||||||
|
|
||||||
|
if(project)
|
||||||
|
delete project;
|
||||||
|
|
||||||
|
project = new ProjectModel(configFile, this);
|
||||||
|
ui->projectTree->setModel(project);
|
||||||
|
|
||||||
|
QObject::connect(ui->projectTree, SIGNAL(activated(QModelIndex)),
|
||||||
|
project, SLOT(activated(QModelIndex)));
|
||||||
|
|
||||||
|
configFile.chop(configFile.length() - configFile.lastIndexOf('/') - 1);
|
||||||
|
settings.setValue("defaultDirectory", configFile);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void EditorWindow::tabTitleChanged(QString title)
|
void EditorWindow::tabTitleChanged(QString title)
|
||||||
{
|
{
|
||||||
TabContent* sender = dynamic_cast<TabContent*>(QObject::sender());
|
TabContent* sender = dynamic_cast<TabContent*>(QObject::sender());
|
||||||
|
@ -342,7 +377,7 @@ void EditorWindow::closeEvent(QCloseEvent* event)
|
||||||
/* Closing all the tabs */
|
/* Closing all the tabs */
|
||||||
for(int i = 0; i < ui->editorTabs->count(); i++)
|
for(int i = 0; i < ui->editorTabs->count(); i++)
|
||||||
{
|
{
|
||||||
if(!dynamic_cast<SkinDocument*>
|
if(!dynamic_cast<TabContent*>
|
||||||
(ui->editorTabs->widget(i))->requestClose())
|
(ui->editorTabs->widget(i))->requestClose())
|
||||||
{
|
{
|
||||||
event->ignore();
|
event->ignore();
|
||||||
|
|
|
@ -53,6 +53,9 @@ public:
|
||||||
protected:
|
protected:
|
||||||
virtual void closeEvent(QCloseEvent* event);
|
virtual void closeEvent(QCloseEvent* event);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void configFileChanged(QString configFile);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void showPanel();
|
void showPanel();
|
||||||
void newTab();
|
void newTab();
|
||||||
|
|
|
@ -114,11 +114,18 @@ QVariant ProjectModel::data(const QModelIndex &index, int role) const
|
||||||
void ProjectModel::activated(const QModelIndex &index)
|
void ProjectModel::activated(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
if(index.row() == 0)
|
if(index.row() == 0)
|
||||||
mainWindow->loadConfigTab(new ConfigDocument(settings,
|
{
|
||||||
settings.value("themebase",
|
ConfigDocument* doc = new ConfigDocument(settings,
|
||||||
"") + "/" +
|
settings.value("themebase",
|
||||||
files[index.row()]));
|
"") + "/" +
|
||||||
|
files[index.row()]);
|
||||||
|
QObject::connect(doc, SIGNAL(configFileChanged(QString)),
|
||||||
|
mainWindow, SLOT(configFileChanged(QString)));
|
||||||
|
mainWindow->loadConfigTab(doc);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
mainWindow->loadTabFromSkinFile(settings.value("themebase", "")
|
mainWindow->loadTabFromSkinFile(settings.value("themebase", "")
|
||||||
+ "/" + files[index.row()]);
|
+ "/" + files[index.row()]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue