X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fapplicationwindow.cpp;h=4c765cbc4e4e507b2248124b4be7ecf456e52ac4;hb=eb39f1bb5e6518c5dc4f4dbd3c88912a97192e95;hp=773146fa63348865180b5159d56e0e785231313f;hpb=a3e939d9028531324be8ba2ec54eddca31342c19;p=architektonas diff --git a/src/applicationwindow.cpp b/src/applicationwindow.cpp index 773146f..4c765cb 100644 --- a/src/applicationwindow.cpp +++ b/src/applicationwindow.cpp @@ -28,6 +28,7 @@ #include "applicationwindow.h" +#include #include "about.h" #include "blockwidget.h" #include "drawingview.h" @@ -42,11 +43,9 @@ #include "structs.h" #include "utils.h" - // Class variables DrawingView * ApplicationWindow::drawing; - ApplicationWindow::ApplicationWindow(): baseUnitInput(new QLineEdit), dimensionSizeInput(new QLineEdit), @@ -104,7 +103,6 @@ ApplicationWindow::ApplicationWindow(): connect(drawing, SIGNAL(NeedZoomUpdate()), this, SLOT(UpdateZoom())); } - void ApplicationWindow::closeEvent(QCloseEvent * event) { WriteSettings(); @@ -112,7 +110,6 @@ void ApplicationWindow::closeEvent(QCloseEvent * event) //Do we have a memory leak here if we don't delete the font in the Object??? } - void ApplicationWindow::FileNew(void) { // Warn the user if drawing has changed and hasn't been saved... @@ -153,7 +150,6 @@ void ApplicationWindow::FileNew(void) statusBar()->showMessage(tr("New drawing is ready.")); } - void ApplicationWindow::FileOpen(void) { QString filename = QFileDialog::getOpenFileName(this, tr("Open Drawing"), @@ -204,7 +200,6 @@ void ApplicationWindow::FileOpen(void) statusBar()->showMessage(tr("Drawing loaded.")); } - void ApplicationWindow::FileSave(void) { if (documentName.isEmpty()) @@ -243,7 +238,6 @@ void ApplicationWindow::FileSave(void) statusBar()->showMessage(tr("Drawing saved.")); } - void ApplicationWindow::FileSaveAs(void) { QString filename = QFileDialog::getSaveFileName(this, tr("Save Drawing As"), @@ -256,6 +250,27 @@ void ApplicationWindow::FileSaveAs(void) } } +void ApplicationWindow::PrintPreview(void) +{ + QPrintPreviewDialog * dlg = new QPrintPreviewDialog(this); + + connect(dlg, SIGNAL(paintRequested(QPrinter *)), this, SLOT(HandlePrintRequest(QPrinter *))); + + dlg->exec(); +} + +void ApplicationWindow::HandlePrintRequest(QPrinter * printer) +{ + QPainter qtPainter(printer); + Painter painter(&qtPainter); + + // Do object rendering... + for(int i=0; iRenderObjects(&painter, drawing->document.objects, i); + } +} void ApplicationWindow::contextMenuEvent(QContextMenuEvent * event) { @@ -266,25 +281,21 @@ void ApplicationWindow::contextMenuEvent(QContextMenuEvent * event) menu.exec(event->globalPos()); } - void ApplicationWindow::SnapToGridTool(void) { Global::snapToGrid = snapToGridAct->isChecked(); } - void ApplicationWindow::FixAngle(void) { Global::fixedAngle = fixAngleAct->isChecked(); } - void ApplicationWindow::FixLength(void) { Global::fixedLength = fixLengthAct->isChecked(); } - void ApplicationWindow::DeleteTool(void) { // For this tool, we check first to see if anything is selected. If so, we @@ -303,14 +314,12 @@ void ApplicationWindow::DeleteTool(void) SetInternalToolStates(); } - void ApplicationWindow::DimensionTool(void) { ClearUIToolStatesExcept(addDimensionAct); SetInternalToolStates(); } - void ApplicationWindow::RotateTool(void) { ClearUIToolStatesExcept(rotateAct); @@ -322,7 +331,6 @@ void ApplicationWindow::RotateTool(void) SetInternalToolStates(); } - void ApplicationWindow::MirrorTool(void) { ClearUIToolStatesExcept(mirrorAct); @@ -334,56 +342,48 @@ void ApplicationWindow::MirrorTool(void) SetInternalToolStates(); } - void ApplicationWindow::TrimTool(void) { ClearUIToolStatesExcept(trimAct); SetInternalToolStates(); } - void ApplicationWindow::TriangulateTool(void) { ClearUIToolStatesExcept(triangulateAct); SetInternalToolStates(); } - void ApplicationWindow::AddLineTool(void) { ClearUIToolStatesExcept(addLineAct); SetInternalToolStates(); } - void ApplicationWindow::AddCircleTool(void) { ClearUIToolStatesExcept(addCircleAct); SetInternalToolStates(); } - void ApplicationWindow::AddArcTool(void) { ClearUIToolStatesExcept(addArcAct); SetInternalToolStates(); } - void ApplicationWindow::AddPolygonTool(void) { ClearUIToolStatesExcept(addPolygonAct); SetInternalToolStates(); } - void ApplicationWindow::AddSplineTool(void) { ClearUIToolStatesExcept(addSplineAct); SetInternalToolStates(); } - void ApplicationWindow::ZoomInTool(void) { double zoomFactor = 1.20; @@ -396,7 +396,6 @@ void ApplicationWindow::ZoomInTool(void) UpdateZoom(); } - void ApplicationWindow::ZoomOutTool(void) { double zoomFactor = 1.20; @@ -409,7 +408,6 @@ void ApplicationWindow::ZoomOutTool(void) UpdateZoom(); } - void ApplicationWindow::UpdateZoom(void) { // And now, a bunch of heuristics to select the right grid size--autogrid! @@ -441,7 +439,7 @@ void ApplicationWindow::UpdateZoom(void) else Global::gridSpacing = 0.015625; - drawing->SetGridSize((double)(Global::gridSpacing * Global::zoom)); +// drawing->SetGridSize((double)(Global::gridSpacing * Global::zoom)); drawing->update(); zoomIndicator->setText(QString("Zoom: %1% Grid: %2\" BU: Inch").arg(Global::zoom * 100.0).arg(Global::gridSpacing)); @@ -450,7 +448,6 @@ void ApplicationWindow::UpdateZoom(void) // baseUnitInput->setText(QString("%1").arg(Global::gridSpacing)); } - void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception) { QAction * actionList[] = { @@ -466,7 +463,6 @@ void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception) } } - void ApplicationWindow::SetInternalToolStates(void) { // We can be sure that if we've come here, then either an active tool is @@ -502,13 +498,11 @@ void ApplicationWindow::SetInternalToolStates(void) drawing->update(); } - void ApplicationWindow::HelpAbout(void) { aboutWin->show(); } - void ApplicationWindow::Settings(void) { SettingsDialog dlg(this); @@ -522,7 +516,6 @@ void ApplicationWindow::Settings(void) WriteSettings(); } - // // Group a bunch of selected objects (which can include other groups) together // or ungroup a selected group. @@ -589,7 +582,6 @@ void ApplicationWindow::HandleGrouping(void) drawing->update(); } - void ApplicationWindow::HandleConnection(void) { #if 0 @@ -659,19 +651,16 @@ printf(" -> intersects = %i, t=%lf, u=%lf\n", intersects, t, u); #endif } - void ApplicationWindow::HandleDisconnection(void) { } - -void ApplicationWindow::HandleGridSizeInPixels(int size) +void ApplicationWindow::HandleGridSizeInPixels(int /*size*/) { - drawing->SetGridSize((uint32_t)size); +// drawing->SetGridSize((uint32_t)size); drawing->update(); } - void ApplicationWindow::HandleGridSizeInBaseUnits(QString text) { // Parse the text... @@ -686,11 +675,10 @@ void ApplicationWindow::HandleGridSizeInBaseUnits(QString text) // Painter::zoom = drawing->gridPixels / drawing->gridSpacing; Global::gridSpacing = value; Global::zoom = drawing->gridPixels / Global::gridSpacing; - drawing->UpdateGridBackground(); +// drawing->UpdateGridBackground(); drawing->update(); } - void ApplicationWindow::HandleDimensionSize(QString text) { /* @@ -717,7 +705,6 @@ void ApplicationWindow::EditCopy(void) } } - void ApplicationWindow::EditCut(void) { if (drawing->select.size() > 0) @@ -728,7 +715,6 @@ void ApplicationWindow::EditCut(void) } } - void ApplicationWindow::EditPaste(void) { if (clipboard.size() > 0) @@ -741,7 +727,6 @@ void ApplicationWindow::EditPaste(void) } } - // // Select all *visible* objects. If an object is on a layer that is not // visible, skip it. @@ -753,7 +738,6 @@ void ApplicationWindow::SelectAllObjects(void) drawing->update(); } - void ApplicationWindow::CreateActions(void) { exitAct = CreateAction(tr("&Quit"), tr("Quit"), tr("Exits the application."), @@ -851,6 +835,9 @@ void ApplicationWindow::CreateActions(void) selectAllAct = CreateAction(tr("Select &All"), tr("Select All Objects"), tr("Select all objects in the drawing."), QIcon(), QKeySequence(tr("Ctrl+a"))); connect(selectAllAct, SIGNAL(triggered()), this, SLOT(SelectAllObjects())); + printPreviewAct = CreateAction(tr("&Print Preview"), tr("Print Preview"), tr("Shows preview of printing operation."), QIcon(":/res/print-preview.png"), QKeySequence(tr("Ctrl+p"))); + connect(printPreviewAct, SIGNAL(triggered()), this, SLOT(PrintPreview())); + //Hm. I think we'll have to have separate logic to do the "Radio Group Toolbar" thing... // Yup, in order to turn them off, we'd have to have an "OFF" toolbar button. Ick. /* QActionGroup * group = new QActionGroup(this); @@ -861,7 +848,6 @@ void ApplicationWindow::CreateActions(void) group->addAction(addArcAct);//*/ } - // // Consolidates action creation from a multi-step process to a single-step one. // @@ -877,7 +863,6 @@ QAction * ApplicationWindow::CreateAction(QString name, QString tooltip, return action; } - // // This is essentially the same as the previous function, but this allows more // than one key sequence to be added as key shortcuts. @@ -898,7 +883,6 @@ QAction * ApplicationWindow::CreateAction(QString name, QString tooltip, return action; } - void ApplicationWindow::CreateMenus(void) { QMenu * menu = menuBar()->addMenu(tr("&File")); @@ -908,6 +892,8 @@ void ApplicationWindow::CreateMenus(void) menu->addAction(fileSaveAsAct); menu->addAction(fileCloseAct); menu->addSeparator(); + menu->addAction(printPreviewAct); + menu->addSeparator(); menu->addAction(exitAct); menu = menuBar()->addMenu(tr("&View")); @@ -945,7 +931,6 @@ void ApplicationWindow::CreateMenus(void) menu->addAction(aboutAct); } - void ApplicationWindow::CreateToolbars(void) { QToolBar * toolbar = addToolBar(tr("File")); @@ -1007,10 +992,11 @@ void ApplicationWindow::CreateToolbars(void) connect(pw, SIGNAL(WidthSelected(float)), drawing, SLOT(HandlePenWidth(float))); connect(pw, SIGNAL(StyleSelected(int)), drawing, SLOT(HandlePenStyle(int))); connect(pw, SIGNAL(ColorSelected(uint32_t)), drawing, SLOT(HandlePenColor(uint32_t))); - connect(pw, SIGNAL(StampSelected(void)), drawing, SLOT(HandlePenStamp(void))); +// connect(pw, SIGNAL(StampSelected(void)), drawing, SLOT(HandlePenStamp(QAction *))); + connect(pw->tbStamp, SIGNAL(triggered(QAction *)), drawing, SLOT(HandlePenStamp(QAction *))); + connect(pw->tbDropper, SIGNAL(triggered(QAction *)), drawing, SLOT(HandlePenDropper(QAction *))); } - void ApplicationWindow::ReadSettings(void) { QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); @@ -1022,7 +1008,6 @@ void ApplicationWindow::ReadSettings(void) restoreState(settings.value("windowState").toByteArray()); } - void ApplicationWindow::WriteSettings(void) { settings.setValue("pos", pos()); @@ -1031,4 +1016,3 @@ void ApplicationWindow::WriteSettings(void) settings.setValue("useAntialiasing", drawing->useAntialiasing); settings.setValue("snapToGrid", snapToGridAct->isChecked()); } -