Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#177 Save and Load shortcut list #1276

Merged
merged 8 commits into from Nov 10, 2019
63 changes: 63 additions & 0 deletions app/src/shortcutspage.cpp
Expand Up @@ -25,6 +25,8 @@ GNU General Public License for more details.
#include <QKeySequence>
#include <QMessageBox>
#include "pencilsettings.h"
#include <QFile>
#include <QFileDialog>


static const int ACT_NAME_COLUMN = 0;
Expand All @@ -46,6 +48,8 @@ ShortcutsPage::ShortcutsPage( QWidget* parent )
connect( ui->treeView, &QTreeView::clicked, this, &ShortcutsPage::tableItemClicked );
connect( ui->keySequenceEdit, &QKeySequenceEdit::editingFinished, this, &ShortcutsPage::keyCapLineEditTextChanged );
connect( ui->restoreShortcutsButton, &QPushButton::clicked, this, &ShortcutsPage::restoreShortcutsButtonClicked );
connect(ui->btnSaveShortcuts, &QPushButton::clicked, this, &ShortcutsPage::saveShortcutsButtonClicked);
connect(ui->btnLoadShortcuts, &QPushButton::clicked, this, &ShortcutsPage::loadShortcutsButtonClicked);
connect( ui->clearButton, &QPushButton::clicked, this, &ShortcutsPage::clearButtonClicked );

ui->treeView->selectionModel()->select(QItemSelection(m_treeModel->index(0, 0), m_treeModel->index(0, m_treeModel->columnCount() - 1)), QItemSelectionModel::Select);
Expand Down Expand Up @@ -117,6 +121,65 @@ void ShortcutsPage::keyCapLineEditTextChanged()
qDebug() << "Shortcut " << strCmdName << " = " << strKeySeq;
}

void ShortcutsPage::saveShortcutsButtonClicked()
{
QSettings settings( PENCIL2D, PENCIL2D );
settings.beginGroup( "LastSavePath" );

QString fDir = settings.value("Animation").toString();
if (fDir.isEmpty())
fDir = QDir::homePath();

settings.endGroup();
QString fileName = QFileDialog::getSaveFileName(this,
tr("Save Pencil2D Shortcut file"),
fDir + "/untitled.pclshortcut",
tr("Pencil2D Shortcut File(*.pclshortcut)"));
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;

QTextStream out(&file);
out << "[shortcuts]\n";
settings.beginGroup( "shortcuts" );

foreach (QString shortCut, settings.allKeys())
{
out << shortCut + "=" + settings.value(shortCut).toString() + "\n";
}
settings.endGroup();
file.close();
}

void ShortcutsPage::loadShortcutsButtonClicked()
{
QSettings settings( PENCIL2D, PENCIL2D );
settings.beginGroup( "LastSavePath" );
QString fDir = settings.value("Animation").toString();
if (fDir.isEmpty())
fDir = QDir::homePath();

QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Pencil2D Shortcut file"),
fDir,
tr("Pencil2D Shortcut File(*.pclshortcut)"));
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly))
return;

QSettings defaultKey(fileName, QSettings::IniFormat);

QSettings curSetting( PENCIL2D, PENCIL2D );
curSetting.remove("shortcuts");

foreach (QString pShortcutsKey, defaultKey.allKeys())
{
curSetting.setValue(pShortcutsKey, defaultKey.value(pShortcutsKey));
}

treeModelLoadShortcutsSetting();
}

void ShortcutsPage::restoreShortcutsButtonClicked()
{
restoreShortcutsToDefault();
Expand Down
2 changes: 2 additions & 0 deletions app/src/shortcutspage.h
Expand Up @@ -45,6 +45,8 @@ class ShortcutsPage : public QWidget
private slots:
void tableItemClicked(const QModelIndex&);
void keyCapLineEditTextChanged();
void saveShortcutsButtonClicked();
void loadShortcutsButtonClicked();
void restoreShortcutsButtonClicked();
void clearButtonClicked();

Expand Down
16 changes: 15 additions & 1 deletion app/ui/shortcutspage.ui
Expand Up @@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>360</width>
<width>361</width>
<height>385</height>
</rect>
</property>
Expand Down Expand Up @@ -81,6 +81,20 @@
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="btnSaveShortcuts">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnLoadShortcuts">
<property name="text">
<string>Load</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
Expand Down