#include "mainwindow.h"
#include "charwindow.h"
#include "editwindow.h"
+#include "global.h"
+#include "previewfiledialog.h"
#include "ttedit.h"
MainWindow::MainWindow()
{
- ((TTEdit *)qApp)->charWnd = new CharWindow(this);
+ Global::charWnd = new CharWindow(this);
editWnd = new EditWindow(this);
setCentralWidget(editWnd);
editWnd->setFocus();
setWindowIcon(QIcon(":/res/ttedit.png"));
setWindowTitle("TTEdit! - Untitled");
-#if 0
-// createActions();
- newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this);
- newAct->setShortcuts(QKeySequence::New);
- newAct->setStatusTip(tr("Create a new file"));
- connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
-
- openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this);
- openAct->setShortcuts(QKeySequence::Open);
- openAct->setStatusTip(tr("Open an existing file"));
- connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
-
- aboutQtAct = new QAction(tr("About &Qt"), this);
- aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
- connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
-
-// 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(aboutQtAct);
-
-// 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);
-#else
CreateActions();
CreateMenus();
CreateToolbars();
-#endif
// Create status bar
scaleIndicator = new QLabel("Scale: 100%");
// setCurrentFile("");
setUnifiedTitleAndToolBarOnMac(true);
- ((TTEdit *)qApp)->charWnd->show();//eh?
+ Global::charWnd->show();
}
saveFileAct = CreateAction("&Save File", "Save File", "Save a glyph file", QIcon(), QKeySequence("ctrl+s"));
quitAct = CreateAction("&Quit", "Quit", "Exits from the TTEdit application", QIcon(), QKeySequence("ctrl+q"));
zoomInAct = CreateAction("Zoom In", "Zoom In", "Zoom into the canvas", QIcon(), QKeySequence("+"), QKeySequence("="));
- zoomOutAct = CreateAction("Zoom Out", "Zoom Out", "Zoom out of canvas", QIcon(), QKeySequence("-"));
+ zoomOutAct = CreateAction("Zoom Out", "Zoom Out", "Zoom out of the canvas", QIcon(), QKeySequence("-"));
connect(newGlyphAct, SIGNAL(triggered()), this, SLOT(NewGlyph()));
connect(openFileAct, SIGNAL(triggered()), this, SLOT(OpenFile()));
void MainWindow::NewGlyph(void)
{
editWnd->pts.Clear();
- ((TTEdit *)qApp)->charWnd->MakePathFromPoints(&(editWnd->pts));
- ((TTEdit *)qApp)->charWnd->update();
+ Global::charWnd->MakePathFromPoints(&(editWnd->pts));
+ Global::charWnd->update();
+ filename.clear();
// editWnd->polyFirstPoint = true;
editWnd->update();
setWindowTitle("TTEdit! - Untitled");
void MainWindow::OpenFile(void)
{
- QString filename = QFileDialog::getOpenFileName(this, tr("Open Glyph File"),
+#if 0
+ filename = QFileDialog::getOpenFileName(this, tr("Open Glyph File"),
"./", tr("Glyph files (*.glyph)"));
+#else
+ PreviewFileDialog * pfd = new PreviewFileDialog(this, tr("Open Glyph File"),
+ "./", tr("Glyph files (*.glyph)"));
+ pfd->setAcceptMode(QFileDialog::AcceptOpen);
+
+ if (pfd->exec() == false)
+ return;
+
+ filename = pfd->selectedFiles().at(0);
+#endif
FILE * file = fopen(filename.toUtf8().data(), "r");
//need to pop an error box here...
editWnd->pts.LoadGlyphFromFile(file);
fclose(file);
- ((TTEdit *)qApp)->charWnd->MakePathFromPoints(&(editWnd->pts));
- ((TTEdit *)qApp)->charWnd->update();
+ Global::charWnd->MakePathFromPoints(&(editWnd->pts));
+ Global::charWnd->update();
editWnd->update();
setWindowTitle(QString("TTEdit! - %1").arg(filename));
editWnd->setFocus();
void MainWindow::SaveFile(void)
{
- QString filename = QFileDialog::getSaveFileName(this, tr("Save Glyph File"),
+ if (filename.isEmpty())
+ filename = QFileDialog::getSaveFileName(this, tr("Save Glyph File"),
"./", tr("Glyph files (*.glyph)"));
+
FILE * file = fopen(filename.toUtf8().data(), "w");
//need to pop an error box here...
editWnd->pts.SaveGlyphToFile(file);
fclose(file);
setWindowTitle(QString("TTEdit! - %1").arg(filename));
+ statusBar()->showMessage(tr("File saved."));
editWnd->setFocus();
}
void MainWindow::ZoomIn(void)
{
- if (editWnd->scale == 4.0)
+ if (Global::zoom == 4.0)
return;
- editWnd->scale *= 2.0;
- scaleIndicator->setText(QString("Scale: %1%").arg(editWnd->scale * 100.0));
+ // Adjust the origin by the width/height by 1/4 (half of the scaled size).
+ // Also, need to adjust for the current zoom level...
+ Vector adjustment = (Global::screenSize / Global::zoom) * 0.25;
+ Global::origin += adjustment;
+
+ Global::zoom *= 2.0;
+
+ scaleIndicator->setText(QString("Scale: %1%").arg(Global::zoom * 100.0));
editWnd->update();
}
void MainWindow::ZoomOut(void)
{
- if (editWnd->scale == 0.25)
+ if (Global::zoom == 0.25)
return;
- editWnd->scale *= 0.5;
- scaleIndicator->setText(QString("Scale: %1%").arg(editWnd->scale * 100.0));
+ Global::zoom *= 0.5;
+
+ // Adjust the origin by the width/height by 1/4 (half of the scaled size).
+ // Also, need to adjust for the current zoom level...
+ Vector adjustment = (Global::screenSize / Global::zoom) * 0.25;
+ Global::origin -= adjustment;
+
+ scaleIndicator->setText(QString("Scale: %1%").arg(Global::zoom * 100.0));
editWnd->update();
}
move(pos);
pos = settings.value("charWndPos", QPoint(0, 0)).toPoint();
size = settings.value("charWndSize", QSize(200, 200)).toSize();
- ((TTEdit *)qApp)->charWnd->resize(size);
- ((TTEdit *)qApp)->charWnd->move(pos);
+ Global::charWnd->resize(size);
+ Global::charWnd->move(pos);
}
QSettings settings("Underground Software", "TTEdit");
settings.setValue("pos", pos());
settings.setValue("size", size());
- settings.setValue("charWndPos", ((TTEdit *)qApp)->charWnd->pos());
- settings.setValue("charWndSize", ((TTEdit *)qApp)->charWnd->size());
+ settings.setValue("charWndPos", Global::charWnd->pos());
+ settings.setValue("charWndSize", Global::charWnd->size());
}