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();
|
||||
emit titleChanged(title());
|
||||
emit configFileChanged(file());
|
||||
|
||||
}
|
||||
|
||||
|
@ -150,7 +151,7 @@ bool ConfigDocument::requestClose()
|
|||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
QString ConfigDocument::toPlainText() const
|
||||
|
@ -185,6 +186,11 @@ void ConfigDocument::addRow(QString key, QString value)
|
|||
QObject::connect(delButton, SIGNAL(clicked()),
|
||||
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);
|
||||
|
||||
containers.append(layout);
|
||||
|
@ -219,3 +225,11 @@ void ConfigDocument::addClicked()
|
|||
{
|
||||
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);
|
||||
|
||||
signals:
|
||||
void configFileChanged(QString);
|
||||
|
||||
private slots:
|
||||
void deleteClicked();
|
||||
void addClicked();
|
||||
void textChanged();
|
||||
};
|
||||
|
||||
#endif // CONFIGDOCUMENT_H
|
||||
|
|
|
@ -201,7 +201,7 @@ void EditorWindow::shiftTab(int index)
|
|||
{
|
||||
TabContent* widget = dynamic_cast<TabContent*>
|
||||
(ui->editorTabs->currentWidget());
|
||||
if(index < 0 || widget->type() != TabContent::Skin)
|
||||
if(index < 0)
|
||||
{
|
||||
ui->parseTree->setModel(0);
|
||||
ui->actionSave_Document->setEnabled(false);
|
||||
|
@ -210,6 +210,13 @@ void EditorWindow::shiftTab(int index)
|
|||
ui->actionToolbarSave->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
|
||||
{
|
||||
/* 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)
|
||||
{
|
||||
TabContent* sender = dynamic_cast<TabContent*>(QObject::sender());
|
||||
|
@ -342,7 +377,7 @@ void EditorWindow::closeEvent(QCloseEvent* event)
|
|||
/* Closing all the tabs */
|
||||
for(int i = 0; i < ui->editorTabs->count(); i++)
|
||||
{
|
||||
if(!dynamic_cast<SkinDocument*>
|
||||
if(!dynamic_cast<TabContent*>
|
||||
(ui->editorTabs->widget(i))->requestClose())
|
||||
{
|
||||
event->ignore();
|
||||
|
|
|
@ -53,6 +53,9 @@ public:
|
|||
protected:
|
||||
virtual void closeEvent(QCloseEvent* event);
|
||||
|
||||
public slots:
|
||||
void configFileChanged(QString configFile);
|
||||
|
||||
private slots:
|
||||
void showPanel();
|
||||
void newTab();
|
||||
|
|
|
@ -114,11 +114,18 @@ QVariant ProjectModel::data(const QModelIndex &index, int role) const
|
|||
void ProjectModel::activated(const QModelIndex &index)
|
||||
{
|
||||
if(index.row() == 0)
|
||||
mainWindow->loadConfigTab(new ConfigDocument(settings,
|
||||
settings.value("themebase",
|
||||
"") + "/" +
|
||||
files[index.row()]));
|
||||
{
|
||||
ConfigDocument* doc = new ConfigDocument(settings,
|
||||
settings.value("themebase",
|
||||
"") + "/" +
|
||||
files[index.row()]);
|
||||
QObject::connect(doc, SIGNAL(configFileChanged(QString)),
|
||||
mainWindow, SLOT(configFileChanged(QString)));
|
||||
mainWindow->loadConfigTab(doc);
|
||||
}
|
||||
else
|
||||
{
|
||||
mainWindow->loadTabFromSkinFile(settings.value("themebase", "")
|
||||
+ "/" + files[index.row()]);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue