123 lines
3.6 KiB
C++
123 lines
3.6 KiB
C++
|
#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();
|
||
|
}
|