aboutsummaryrefslogtreecommitdiff
path: root/VMProtect/template_save_dialog.cc
diff options
context:
space:
mode:
Diffstat (limited to 'VMProtect/template_save_dialog.cc')
-rw-r--r--VMProtect/template_save_dialog.cc122
1 files changed, 122 insertions, 0 deletions
diff --git a/VMProtect/template_save_dialog.cc b/VMProtect/template_save_dialog.cc
new file mode 100644
index 0000000..81693fb
--- /dev/null
+++ b/VMProtect/template_save_dialog.cc
@@ -0,0 +1,122 @@
+#include "../core/objects.h"
+#include "../core/files.h"
+#include "../core/lang.h"
+#include "../core/core.h"
+//#include "../core/inifile.h"
+#include "widgets.h"
+#include "template_save_dialog.h"
+#include "help_browser.h"
+#include "message_dialog.h"
+#include "moc/moc_template_save_dialog.cc"
+
+/**
+ * TemplateSaveDialog
+ */
+
+TemplateSaveDialog::TemplateSaveDialog(ProjectTemplateManager *ptm, QWidget *parent)
+ : QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint)
+{
+ setWindowTitle(QString::fromUtf8(language[lsSaveTemplateAs].c_str()));
+
+ QList<QString> list;
+ for (size_t i = 0; i < ptm->count(); i++) {
+ list.append(QString::fromUtf8(ptm->item(i)->display_name().c_str()));
+ }
+
+ QFrame *group = new QFrame(this);
+ group->setObjectName("gridEditor");
+ group->setFrameShape(QFrame::StyledPanel);
+
+ QLabel *label = new QLabel(QString::fromUtf8(language[lsName].c_str()), this);
+ label->setObjectName("editor");
+
+ nameEdit_ = new EnumEdit(this, list);
+ nameEdit_->setEditable(true);
+ nameEdit_->setFrame(false);
+ nameEdit_->setObjectName("editor");
+ connect(nameEdit_, SIGNAL(editTextChanged(const QString &)), this, SLOT(nameChanged()));
+
+ QGridLayout *layout = new QGridLayout();
+ layout->setContentsMargins(0, 0, 0, 0);
+ layout->setHorizontalSpacing(0);
+ layout->setVerticalSpacing(1);
+ layout->setColumnStretch(0, 1);
+ layout->setColumnStretch(1, 1);
+
+ layout->addWidget(label, 0, 0);
+ layout->addWidget(nameEdit_, 0, 1);
+ group->setLayout(layout);
+
+ QToolButton *helpButton = new QToolButton(this);
+ helpButton->setShortcut(HelpContentsKeySequence());
+ helpButton->setIconSize(QSize(20, 20));
+ helpButton->setIcon(QIcon(":/images/help_gray.png"));
+ helpButton->setToolTip(QString::fromUtf8(language[lsHelp].c_str()));
+ connect(helpButton, SIGNAL(clicked(bool)), this, SLOT(helpClicked()));
+
+ okButton_ = new PushButton(QString::fromUtf8(language[lsOK].c_str()), this);
+ okButton_->setEnabled(false);
+ connect(okButton_, SIGNAL(clicked()), this, SLOT(okButtonClicked()));
+
+ QPushButton *cancelButton = new PushButton(QString::fromUtf8(language[lsCancel].c_str()), this);
+ connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
+
+ QHBoxLayout *buttonLayout = new QHBoxLayout();
+ buttonLayout->setContentsMargins(0, 0, 0, 0);
+ buttonLayout->setSpacing(10);
+ buttonLayout->addWidget(helpButton);
+ buttonLayout->addStretch();
+#ifdef __APPLE__
+ buttonLayout->addWidget(cancelButton);
+ buttonLayout->addWidget(okButton_);
+#else
+ buttonLayout->addWidget(okButton_);
+ buttonLayout->addWidget(cancelButton);
+#endif
+
+ QVBoxLayout *mainLayout = new QVBoxLayout();
+ mainLayout->setContentsMargins(10, 10, 10, 10);
+ mainLayout->setSpacing(10);
+ mainLayout->addWidget(group);
+ mainLayout->addLayout(buttonLayout);
+ setLayout(mainLayout);
+
+ QString tryName, defaultName = QString::fromUtf8(language[lsNewTemplate].c_str());
+ int unique = 1;
+ do
+ {
+ tryName = defaultName;
+ if (unique > 1)
+ tryName += QString(" (%1)").arg(unique);
+ unique++;
+ } while(nameEdit_->findText(tryName) != -1);
+ nameEdit_->setCurrentText(tryName);
+ nameEdit_->lineEdit()->selectAll();
+
+ resize(600, 10);
+}
+
+void TemplateSaveDialog::okButtonClicked()
+{
+ if (nameEdit_->findText(nameEdit_->currentText()) != -1)
+ {
+ if(MessageDialog::question(this, QString::fromUtf8(language[lsOverwriteTemplate].c_str()), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No)
+ return;
+ }
+ accept();
+}
+
+void TemplateSaveDialog::helpClicked()
+{
+ //FIXME HelpBrowser::showTopic("templates");
+}
+
+void TemplateSaveDialog::nameChanged()
+{
+ okButton_->setEnabled(!nameEdit_->currentText().isEmpty());
+}
+
+QString TemplateSaveDialog::name()
+{
+ return nameEdit_->currentText();
+}