#include "applicationwindow.h"
+#include <QPrintPreviewDialog>
#include "about.h"
#include "blockwidget.h"
#include "drawingview.h"
#include "structs.h"
#include "utils.h"
-
// Class variables
DrawingView * ApplicationWindow::drawing;
-
ApplicationWindow::ApplicationWindow():
baseUnitInput(new QLineEdit),
dimensionSizeInput(new QLineEdit),
connect(drawing, SIGNAL(NeedZoomUpdate()), this, SLOT(UpdateZoom()));
}
-
void ApplicationWindow::closeEvent(QCloseEvent * event)
{
WriteSettings();
//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...
statusBar()->showMessage(tr("New drawing is ready."));
}
-
void ApplicationWindow::FileOpen(void)
{
QString filename = QFileDialog::getOpenFileName(this, tr("Open Drawing"),
statusBar()->showMessage(tr("Drawing loaded."));
}
-
void ApplicationWindow::FileSave(void)
{
if (documentName.isEmpty())
statusBar()->showMessage(tr("Drawing saved."));
}
-
void ApplicationWindow::FileSaveAs(void)
{
QString filename = QFileDialog::getSaveFileName(this, tr("Save Drawing As"),
}
}
+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; i<Global::numLayers; i++)
+ {
+// if (Global::layerHidden[i] == false)
+ drawing->RenderObjects(&painter, drawing->document.objects, i);
+ }
+}
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
SetInternalToolStates();
}
-
void ApplicationWindow::DimensionTool(void)
{
ClearUIToolStatesExcept(addDimensionAct);
SetInternalToolStates();
}
-
void ApplicationWindow::RotateTool(void)
{
ClearUIToolStatesExcept(rotateAct);
SetInternalToolStates();
}
-
void ApplicationWindow::MirrorTool(void)
{
ClearUIToolStatesExcept(mirrorAct);
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;
UpdateZoom();
}
-
void ApplicationWindow::ZoomOutTool(void)
{
double zoomFactor = 1.20;
UpdateZoom();
}
-
void ApplicationWindow::UpdateZoom(void)
{
// And now, a bunch of heuristics to select the right grid size--autogrid!
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));
// baseUnitInput->setText(QString("%1").arg(Global::gridSpacing));
}
-
void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception)
{
QAction * actionList[] = {
}
}
-
void ApplicationWindow::SetInternalToolStates(void)
{
// We can be sure that if we've come here, then either an active tool is
drawing->update();
}
-
void ApplicationWindow::HelpAbout(void)
{
aboutWin->show();
}
-
void ApplicationWindow::Settings(void)
{
SettingsDialog dlg(this);
WriteSettings();
}
-
//
// Group a bunch of selected objects (which can include other groups) together
// or ungroup a selected group.
drawing->update();
}
-
void ApplicationWindow::HandleConnection(void)
{
#if 0
#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...
// 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)
{
/*
}
}
-
void ApplicationWindow::EditCut(void)
{
if (drawing->select.size() > 0)
}
}
-
void ApplicationWindow::EditPaste(void)
{
if (clipboard.size() > 0)
}
}
-
//
// Select all *visible* objects. If an object is on a layer that is not
// visible, skip it.
drawing->update();
}
-
void ApplicationWindow::CreateActions(void)
{
exitAct = CreateAction(tr("&Quit"), tr("Quit"), tr("Exits the application."),
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);
group->addAction(addArcAct);//*/
}
-
//
// Consolidates action creation from a multi-step process to a single-step one.
//
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.
return action;
}
-
void ApplicationWindow::CreateMenus(void)
{
QMenu * menu = menuBar()->addMenu(tr("&File"));
menu->addAction(fileSaveAsAct);
menu->addAction(fileCloseAct);
menu->addSeparator();
+ menu->addAction(printPreviewAct);
+ menu->addSeparator();
menu->addAction(exitAct);
menu = menuBar()->addMenu(tr("&View"));
menu->addAction(aboutAct);
}
-
void ApplicationWindow::CreateToolbars(void)
{
QToolBar * toolbar = addToolBar(tr("File"));
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();
restoreState(settings.value("windowState").toByteArray());
}
-
void ApplicationWindow::WriteSettings(void)
{
settings.setValue("pos", pos());
settings.setValue("useAntialiasing", drawing->useAntialiasing);
settings.setValue("snapToGrid", snapToGridAct->isChecked());
}
-