You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/languages/cpp/app_templates/qt4makeapp/qt4makeapp.cpp

286 lines
8.5 KiB

%{CPP_TEMPLATE}
#include <TQtGui>
#include "%{APPNAMELC}.h"
#include <TQTextEdit>
#include <TQTextStream>
#include <TQCloseEvent>
#include <TQFileDialog>
%{APPNAME}::%{APPNAME}()
{
textEdit = new TQTextEdit;
setCentralWidget(textEdit);
createActions();
createMenus();
createToolBars();
createStatusBar();
readSettings();
connect(textEdit->document(), TQT_SIGNAL(contentsChanged()),
this, TQT_SLOT(documentWasModified()));
setCurrentFile("");
}
void %{APPNAME}::closeEvent(TQCloseEvent *event)
{
if (maybeSave()) {
writeSettings();
event->accept();
} else {
event->ignore();
}
}
void %{APPNAME}::newFile()
{
if (maybeSave()) {
textEdit->clear();
setCurrentFile("");
}
}
void %{APPNAME}::open()
{
if (maybeSave()) {
TQString fileName = TQFileDialog::getOpenFileName(this);
if (!fileName.isEmpty())
loadFile(fileName);
}
}
bool %{APPNAME}::save()
{
if (curFile.isEmpty()) {
return saveAs();
} else {
return saveFile(curFile);
}
}
bool %{APPNAME}::saveAs()
{
TQString fileName = TQFileDialog::getSaveFileName(this);
if (fileName.isEmpty())
return false;
return saveFile(fileName);
}
void %{APPNAME}::about()
{
TQMessageBox::about(this, tr("About Application"),
tr("The <b>Application</b> example demonstrates how to "
"write modern GUI applications using TQt, with a menu bar, "
"toolbars, and a status bar."));
}
void %{APPNAME}::documentWasModified()
{
setWindowModified(true);
}
void %{APPNAME}::createActions()
{
newAct = new TQAction(TQIcon(":/filenew.xpm"), tr("&New"), this);
newAct->setShortcut(tr("Ctrl+N"));
newAct->setStatusTip(tr("Create a new file"));
connect(newAct, TQT_SIGNAL(triggered()), this, TQT_SLOT(newFile()));
openAct = new TQAction(TQIcon(":/fileopen.xpm"), tr("&Open..."), this);
openAct->setShortcut(tr("Ctrl+O"));
openAct->setStatusTip(tr("Open an existing file"));
connect(openAct, TQT_SIGNAL(triggered()), this, TQT_SLOT(open()));
saveAct = new TQAction(TQIcon(":/filesave.xpm"), tr("&Save"), this);
saveAct->setShortcut(tr("Ctrl+S"));
saveAct->setStatusTip(tr("Save the document to disk"));
connect(saveAct, TQT_SIGNAL(triggered()), this, TQT_SLOT(save()));
saveAsAct = new TQAction(tr("Save &As..."), this);
saveAsAct->setStatusTip(tr("Save the document under a new name"));
connect(saveAsAct, TQT_SIGNAL(triggered()), this, TQT_SLOT(saveAs()));
exitAct = new TQAction(tr("E&xit"), this);
exitAct->setShortcut(tr("Ctrl+Q"));
exitAct->setStatusTip(tr("Exit the application"));
connect(exitAct, TQT_SIGNAL(triggered()), this, TQT_SLOT(close()));
cutAct = new TQAction(TQIcon(":/editcut.xpm"), tr("Cu&t"), this);
cutAct->setShortcut(tr("Ctrl+X"));
cutAct->setStatusTip(tr("Cut the current selection's contents to the "
"clipboard"));
connect(cutAct, TQT_SIGNAL(triggered()), textEdit, TQT_SLOT(cut()));
copyAct = new TQAction(TQIcon(":/editcopy.xpm"), tr("&Copy"), this);
copyAct->setShortcut(tr("Ctrl+C"));
copyAct->setStatusTip(tr("Copy the current selection's contents to the "
"clipboard"));
connect(copyAct, TQT_SIGNAL(triggered()), textEdit, TQT_SLOT(copy()));
pasteAct = new TQAction(TQIcon(":/editpaste.xpm"), tr("&Paste"), this);
pasteAct->setShortcut(tr("Ctrl+V"));
pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current "
"selection"));
connect(pasteAct, TQT_SIGNAL(triggered()), textEdit, TQT_SLOT(paste()));
aboutAct = new TQAction(tr("&About"), this);
aboutAct->setStatusTip(tr("Show the application's About box"));
connect(aboutAct, TQT_SIGNAL(triggered()), this, TQT_SLOT(about()));
aboutTQtAct = new TQAction(tr("About &TQt"), this);
aboutTQtAct->setStatusTip(tr("Show the TQt library's About box"));
connect(aboutTQtAct, TQT_SIGNAL(triggered()), tqApp, TQT_SLOT(aboutTQt()));
cutAct->setEnabled(false);
copyAct->setEnabled(false);
connect(textEdit, TQT_SIGNAL(copyAvailable(bool)),
cutAct, TQT_SLOT(setEnabled(bool)));
connect(textEdit, TQT_SIGNAL(copyAvailable(bool)),
copyAct, TQT_SLOT(setEnabled(bool)));
}
void %{APPNAME}::createMenus()
{
fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction(newAct);
fileMenu->addAction(openAct);
fileMenu->addAction(saveAct);
fileMenu->addAction(saveAsAct);
fileMenu->addSeparator();
fileMenu->addAction(exitAct);
editMenu = menuBar()->addMenu(tr("&Edit"));
editMenu->addAction(cutAct);
editMenu->addAction(copyAct);
editMenu->addAction(pasteAct);
menuBar()->addSeparator();
helpMenu = menuBar()->addMenu(tr("&Help"));
helpMenu->addAction(aboutAct);
helpMenu->addAction(aboutTQtAct);
}
void %{APPNAME}::createToolBars()
{
fileToolBar = addToolBar(tr("File"));
fileToolBar->addAction(newAct);
fileToolBar->addAction(openAct);
fileToolBar->addAction(saveAct);
editToolBar = addToolBar(tr("Edit"));
editToolBar->addAction(cutAct);
editToolBar->addAction(copyAct);
editToolBar->addAction(pasteAct);
}
void %{APPNAME}::createStatusBar()
{
statusBar()->showMessage(tr("Ready"));
}
void %{APPNAME}::readSettings()
{
TQSettings settings("Trolltech", "Application Example");
TQPoint pos = settings.value("pos", TQPoint(200, 200)).toPoint();
TQSize size = settings.value("size", TQSize(400, 400)).toSize();
resize(size);
move(pos);
}
void %{APPNAME}::writeSettings()
{
TQSettings settings("Trolltech", "Application Example");
settings.setValue("pos", pos());
settings.setValue("size", size());
}
bool %{APPNAME}::maybeSave()
{
if (textEdit->document()->isModified()) {
int ret = TQMessageBox::warning(this, tr("Application"),
tr("The document has been modified.\n"
"Do you want to save your changes?"),
TQMessageBox::Yes | TQMessageBox::Default,
TQMessageBox::No,
TQMessageBox::Cancel | TQMessageBox::Escape);
if (ret == TQMessageBox::Yes)
return save();
else if (ret == TQMessageBox::Cancel)
return false;
}
return true;
}
void %{APPNAME}::loadFile(const TQString &fileName)
{
TQFile file(fileName);
if (!file.open(TQFile::ReadOnly | TQFile::Text)) {
TQMessageBox::warning(this, tr("Application"),
tr("Cannot read file %1:\n%2.")
.arg(fileName)
.arg(file.errorString()));
return;
}
TQTextStream in(&file);
TQApplication::setOverrideCursor(TQt::WaitCursor);
textEdit->setPlainText(in.readAll());
TQApplication::restoreOverrideCursor();
setCurrentFile(fileName);
statusBar()->showMessage(tr("File loaded"), 2000);
}
bool %{APPNAME}::saveFile(const TQString &fileName)
{
TQFile file(fileName);
if (!file.open(TQFile::WriteOnly | TQFile::Text)) {
TQMessageBox::warning(this, tr("Application"),
tr("Cannot write file %1:\n%2.")
.arg(fileName)
.arg(file.errorString()));
return false;
}
TQTextStream out(&file);
TQApplication::setOverrideCursor(TQt::WaitCursor);
out << textEdit->toPlainText();
TQApplication::restoreOverrideCursor();
setCurrentFile(fileName);
statusBar()->showMessage(tr("File saved"), 2000);
return true;
}
void %{APPNAME}::setCurrentFile(const TQString &fileName)
{
curFile = fileName;
textEdit->document()->setModified(false);
setWindowModified(false);
TQString shownName;
if (curFile.isEmpty())
shownName = "untitled.txt";
else
shownName = strippedName(curFile);
setWindowTitle(tr("%1[*] - %2").arg(shownName).arg(tr("Application")));
}
TQString %{APPNAME}::strippedName(const TQString &fullFileName)
{
return TQFileInfo(fullFileName).fileName();
}
%{APPNAME}::~%{APPNAME}()
{
}