X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmainwindow.cpp;h=173c977a8a04a0fe4cad8e6791d4ace2e418147b;hb=c7d608c4fcdd370274964cc861b674c2fae69468;hp=ef738e95102f56ae4ec784ecc84b86949b297f2d;hpb=7fde5a077bc9bbce28662fa2e5aa5043f3b4747f;p=ttedit diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ef738e9..173c977 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -38,69 +38,23 @@ #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%"); @@ -115,7 +69,7 @@ MainWindow::MainWindow() // setCurrentFile(""); setUnifiedTitleAndToolBarOnMac(true); - ((TTEdit *)qApp)->charWnd->show();//eh? + Global::charWnd->show(); } @@ -163,7 +117,7 @@ void MainWindow::CreateActions(void) 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())); @@ -205,8 +159,9 @@ void MainWindow::closeEvent(QCloseEvent * event) 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"); @@ -216,8 +171,19 @@ void MainWindow::NewGlyph(void) 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... @@ -227,8 +193,8 @@ void MainWindow::OpenFile(void) 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(); @@ -237,8 +203,10 @@ void MainWindow::OpenFile(void) 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... @@ -248,28 +216,41 @@ void MainWindow::SaveFile(void) 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(); } @@ -283,8 +264,8 @@ void MainWindow::ReadSettings(void) 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); } @@ -293,8 +274,8 @@ void MainWindow::WriteSettings(void) 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()); }