// Part of the Architektonas Project
// Originally part of QCad Community Edition by Andrew Mustun
// Extensively rewritten and refactored by James L. Hammons
-// (C) 2010 Underground Software
+// Portions copyright (C) 2001-2003 RibbonSoft
+// Copyright (C) 2010 Underground Software
+// See the README and GPLv2 files for licensing and warranty information
//
// JLH = James L. Hammons <jlhamm@acm.org>
//
#include "applicationwindow.h"
#include <fstream>
-#include "rs_actiondrawlinefree.h"
-#include "rs_actionlibraryinsert.h"
-#include "rs_actionprintpreview.h"
+#include "actiondrawlinefree.h"
+#include "actionlibraryinsert.h"
+#include "actionprintpreview.h"
#include "rs_creation.h"
#include "rs_dialogfactory.h"
#include "rs_dimaligned.h"
#include "rs_hatch.h"
#include "rs_insert.h"
#include "rs_image.h"
-#include "paintintf.h"
+#include "paintinterface.h"
#include "rs_script.h"
#include "rs_scriptlist.h"
#include "settings.h"
#include "rs_simulationcontrols.h"
#endif
-#include "qg_colorbox.h"
-#include "qg_filedialog.h"
-#include "qg_pentoolbar.h"
+#include "colorbox.h"
+#include "filedialog.h"
+#include "pentoolbar.h"
+#include "recentfiles.h"
#include "cadtoolbar.h"
#include "cadtoolbarmain.h"
#include "coordinatewidget.h"
#include "mousewidget.h"
#include "selectionwidget.h"
-#include "mdiwindow.h"
-#include "qc_dialogfactory.h"
#include "createqtactions.h"
+#include "qc_dialogfactory.h"
+#include "qg_graphicview.h"
#include "main.h"
+#include "mdiwindow.h"
ApplicationWindow * ApplicationWindow::appWindow = NULL;
// setIcon(qPixmapFromMimeSource(QC_APP_ICON));
// setWindowIcon(qPixmapFromMimeSource(QC_APP_ICON));
setWindowIcon(QIcon(":/res/" QC_APP_ICON));
+ CreateQtActions(this);
RS_DEBUG->print("ApplicationWindow::ApplicationWindow: creating action handler");
- actionHandler = new QG_ActionHandler(this);
+ actionHandler = new ActionHandler(this);
RS_DEBUG->print("ApplicationWindow::ApplicationWindow: creating action handler: OK");
#ifdef RS_SCRIPTING
statusBar()->showMessage(tr("Running script '%1'").arg(name), 2000);
QStringList scriptList = RS_SYSTEM->getScriptList();
- scriptList.append(RS_SYSTEM->getHomeDir() + "/.qcad/" + name);
+ scriptList.append(RS_SYSTEM->getHomeDir() + "/.architektonas/" + name);
for (QStringList::Iterator it = scriptList.begin(); it!=scriptList.end(); ++it)
{
statusBar()->showMessage(tr("Inserting block '%1'").arg(name), 2000);
- RS_GraphicView * graphicView = getGraphicView();
+ GraphicView * graphicView = getGraphicView();
RS_Document * document = getDocument();
- if (graphicView != NULL && document != NULL)
+ if (graphicView && document)
{
- RS_ActionLibraryInsert * action = new RS_ActionLibraryInsert(*document, *graphicView);
+ ActionLibraryInsert * action = new ActionLibraryInsert(*document, *graphicView);
action->setFile(name);
graphicView->setCurrentAction(action);
}
void ApplicationWindow::initActions()
{
RS_DEBUG->print("ApplicationWindow::initActions()");
- CreateQtActions(this);
//
// File actions:
// menuBar()->insertItem(tr("De&bugging"), testMenu);
menuBar()->addMenu(testMenu);
- recentFiles = new QG_RecentFiles(this, fileMenu);
+ recentFiles = new RecentFiles(this, fileMenu);
}
/**
// zoomToolBar = new Q3ToolBar(this, "Zoom Operations");
zoomToolBar = addToolBar(tr("Zoom Operations"));
zoomToolBar->setObjectName("zoom");
- penToolBar = new QG_PenToolBar(this, "Pen Selection");
+ penToolBar = new PenToolBar(this, "Pen Selection");
penToolBar->setObjectName("pen");
connect(penToolBar, SIGNAL(penChanged(RS_Pen)), this, SLOT(slotPenChanged(RS_Pen)));
// dw = new QDockWidget(QDockWidget::InDock, this, "Layer");
dw = new QDockWidget(tr("Layer List"), this);
dw->setObjectName("layer");
- layerWidget = new QG_LayerWidget(actionHandler, dw, "Layer");
+ layerWidget = new LayerWidget(actionHandler, dw, "Layer");
layerWidget->setFocusPolicy(Qt::NoFocus);
connect(layerWidget, SIGNAL(escape()), this, SLOT(slotFocus()));
connect(this, SIGNAL(windowsChanged(bool)), layerWidget, SLOT(setEnabled(bool)));
// dw = new QDockWidget(QDockWidget::InDock, this, "Block");
dw = new QDockWidget(tr("Block List"), this);
dw->setObjectName("block");
- blockWidget = new QG_BlockWidget(actionHandler, dw, "Block");
+ blockWidget = new BlockWidget(actionHandler, dw, "Block");
blockWidget->setFocusPolicy(Qt::NoFocus);
connect(blockWidget, SIGNAL(escape()), this, SLOT(slotFocus()));
connect(this, SIGNAL(windowsChanged(bool)), blockWidget, SLOT(setEnabled(bool)));
// dw->setCaption(tr("Library Browser"));
//not sure how to fix this one
#warning "QMainWindow::addDockWidget: invalid 'area' argument"
- addDockWidget(Qt::NoDockWidgetArea, dw);
+// addDockWidget(Qt::NoDockWidgetArea, dw);
+//This works, but sux
+ addDockWidget(Qt::RightDockWidgetArea, dw);
libraryDockWindow = dw;
- libraryDockWindow->hide();
+// libraryDockWindow->hide();
RS_DEBUG->print(" command widget..");
// dw = new QDockWidget(QDockWidget::InDock, this, "Command");
}
}*/
-#warning "!!! ApplicationWindow::updateRecentFilesMenu() is DEPRECATED !!!"
-/**
- * Updates the recent file list in the file menu.
- */
-void ApplicationWindow::updateRecentFilesMenu()
-{
- RS_DEBUG->print("ApplicationWindow::updateRecentFilesMenu()");
- RS_DEBUG->print("Updating recent file menu...");
-
-#if 0
- for(int i=0; i<recentFiles->getNumber(); ++i)
- {
- QString label = QString("&%1 %2").arg(i + 1).arg(recentFiles->get(i));
-
- if (fileMenu->findItem(i))
- {
- RS_DEBUG->print("Changeing item %d", i);
- fileMenu->changeItem(i, label);
- }
- else if (i < int(recentFiles->count()))
- {
- RS_DEBUG->print("Adding item %d", i);
- fileMenu->insertItem(label, this, SLOT(slotFileOpenRecent(int)), 0, i);
- }
- }
-#else
-//#warning "!!! Need to fix ApplicationWindow::updateRecentFilesMenu() !!!"
- recentFiles->UpdateGUI();
-#endif
-}
-
/**
* Goes back to the previous menu or one step in the current action.
*/
void ApplicationWindow::slotBack()
{
- RS_GraphicView * graphicView = getGraphicView();
+ GraphicView * graphicView = getGraphicView();
- if (graphicView != NULL)
+ if (graphicView)
graphicView->back();
else
{
- if (cadToolBar != NULL)
+ if (cadToolBar)
cadToolBar->showToolBar(RS2::ToolBarMain);
}
}
*/
void ApplicationWindow::slotEnter()
{
- if (commandWidget == NULL || !commandWidget->checkFocus())
+ if (!commandWidget || !commandWidget->checkFocus())
{
- if (cadToolBar != NULL)
+ if (cadToolBar)
cadToolBar->forceNext();
else
{
- RS_GraphicView * graphicView = getGraphicView();
+ GraphicView * graphicView = getGraphicView();
- if (graphicView != NULL)
+ if (graphicView)
graphicView->enter();
}
}
//which means the subwindow is NOT being activated!!!
MDIWindow * m = getMDIWindow();
RS_DEBUG->print(/*RS_Debug::D_CRITICAL,*/ "ApplicationWindow::slotWindowActivated m=%08X", m);
+
if (m)
RS_DEBUG->print(/*RS_Debug::D_CRITICAL,*/ "ApplicationWindow::slotWindowActivated m->getDoc=%08X", m->getDocument());
- if (m != NULL && m->getDocument() != NULL)
+ if (m && m->getDocument())
{
//m->setWindowState(WindowMaximized);
slotPenChanged(penToolBar->getPen());
// update toggle button status:
- if (m->getGraphic() != NULL)
+ if (m->getGraphic())
{
emit(gridChanged(m->getGraphic()->isGridOn()));
emit(printPreviewChanged(m->getGraphicView()->isPrintPreview()));
RS_DEBUG->print(" adding listeners");
Drawing * graphic = w->getDocument()->getGraphic();
+#if 0
if (graphic != NULL)
{
// Link the graphic's layer list to the pen tool bar
// Link the block list to the block widget
graphic->addBlockListListener(blockWidget);
}
+#endif
// Link the dialog factory to the mouse widget:
QG_DIALOGFACTORY->setMouseWidget(mouseWidget);
RS_DEBUG->print("ApplicationWindow::slotFileOpen() 001");
RS2::FormatType type = RS2::FormatUnknown;
RS_DEBUG->print("ApplicationWindow::slotFileOpen() 002");
- QString fileName = QG_FileDialog::getOpenFileName(this, &type);
+ QString fileName = FileDialog::getOpenFileName(this, &type);
RS_DEBUG->print("ApplicationWindow::slotFileOpen() 003");
slotFileOpen(fileName, type);
RS_DEBUG->print("ApplicationWindow::slotFileOpen(): OK");
void ApplicationWindow::slotFileOpen(const QString & fileName, RS2::FormatType type)
{
RS_DEBUG->print("ApplicationWindow::slotFileOpen(..)");
-
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
if (!fileName.isEmpty())
RS_DEBUG->print("ApplicationWindow::slotFileOpen: creating new doc window");
// Create new document window:
MDIWindow * w = slotFileNew();
-// RS_APP->processEvents(1000);
-//Really, is this needed???
-// RS_APP->processEvents(QEventLoop::AllEvents, 1000);
-
RS_DEBUG->print("ApplicationWindow::slotFileOpen: linking layer list");
// link the layer widget to the new document:
layerWidget->setLayerList(w->getDocument()->getLayerList(), false);
// link the layer widget to the new document:
simulationControls->setGraphicView(w->getGraphicView());
#endif
-
RS_DEBUG->print("ApplicationWindow::slotFileOpen: open file");
-// RS_APP->processEvents(1000);
-//We no longer try to do Qt better than the Qt folks...
-// RS_APP->processEvents(QEventLoop::AllEvents, 1000);
-
- // open the file in the new view:
- if (w->slotFileOpen(fileName, type) == false)
+ // Open the file in the new view:
+ if (!w->slotFileOpen(fileName, type))
{
// error
QApplication::restoreOverrideCursor();
recentFiles->add(fileName);
RS_DEBUG->print("ApplicationWindow::slotFileOpen: update recent file menu: 2");
-// updateRecentFilesMenu();
recentFiles->UpdateGUI();
-
RS_DEBUG->print("ApplicationWindow::slotFileOpen: update recent file menu: OK");
-
RS_DEBUG->print("ApplicationWindow::slotFileOpen: set caption");
// update caption:
-// w->setCaption(fileName);
w->setWindowTitle(fileName);
RS_DEBUG->print("ApplicationWindow::slotFileOpen: set caption: OK");
-
RS_DEBUG->print("ApplicationWindow::slotFileOpen: update coordinate widget");
// update coordinate widget format:
RS_DIALOGFACTORY->updateCoordinateWidget(Vector(0.0, 0.0), Vector(0.0, 0.0), true);
RS_DEBUG->print("ApplicationWindow::slotFileOpen: update coordinate widget: OK");
-
+ // Update the layer and block widgets (document just loaded may have some)
+ layerWidget->update();
+ blockWidget->update();
// show output of filter (if any):
-// commandWidget->processStderr();
QString message = tr("Loaded document: ") + fileName;
commandWidget->appendHistory(message);
statusBar()->showMessage(message, 2000);
void ApplicationWindow::slotFileExport()
{
RS_DEBUG->print("ApplicationWindow::slotFileExport()");
-
statusBar()->showMessage(tr("Exporting drawing..."));
-
MDIWindow * w = getMDIWindow();
- QString fn;
- if (w != NULL)
+ if (w)
{
+ QString fn;
// read default settings:
settings.beginGroup("Paths");
QString defDir = settings.value("ExportImage", RS_SYSTEM->getHomeDir()).toString();
{
MDIWindow * w = getMDIWindow();
- if (w == NULL)
+ if (!w)
{
RS_DEBUG->print(RS_Debug::D_WARNING, "ApplicationWindow::slotFileExport: no window opened");
return false;
Drawing * graphic = w->getDocument()->getGraphic();
- if (graphic == NULL)
+ if (!graphic)
{
RS_DEBUG->print(RS_Debug::D_WARNING, "ApplicationWindow::slotFileExport: no graphic");
return false;
ret = true;
}
#else
-#warning "Need to port to Qt4... !!! FIX !!!"
+#warning "ApplicationWindow::slotFileExport(): Need to port to Qt4... !!! FIX !!!"
#endif
QApplication::restoreOverrideCursor();
MDIWindow * m = getMDIWindow();
- if (m != NULL)
+ if (m)
// m->close(true);
m->close();
// printer setup:
// if (printer->setup(this))
QPrintDialog dialog(printer, this);
+
if (dialog.exec())
{
//printer->setOutputToFile(true);
RS_DEBUG->print(" creating MDI window");
MDIWindow * parent = getMDIWindow();
- if (parent == NULL)
+ if (!parent)
{
RS_DEBUG->print(RS_Debug::D_WARNING, "ApplicationWindow::slotFilePrintPreview: no window opened");
return;
w->setWindowIcon(QIcon(":/res/document.png"));
w->getGraphicView()->setPrintPreview(true);
w->getGraphicView()->setBackground(RS_Color(255, 255, 255));
- w->getGraphicView()->setDefaultAction(new RS_ActionPrintPreview(*w->getDocument(), *w->getGraphicView()));
+ w->getGraphicView()->setDefaultAction(new ActionPrintPreview(*w->getDocument(), *w->getGraphicView()));
// only graphics offer block lists, blocks don't
RS_DEBUG->print(" adding listeners");
Drawing * graphic = w->getDocument()->getGraphic();
- if (graphic != NULL)
+ if (graphic)
{
+#if 0
// Link the layer list to the pen tool bar
graphic->addLayerListListener(penToolBar);
// Link the layer list to the layer widget
graphic->addLayerListListener(layerWidget);
// Link the block list to the block widget
graphic->addBlockListListener(blockWidget);
+#endif
// Center by default:
graphic->centerToPage();
}
qApp->exit(0);
}
+#if 0
/**
* Forces termination of QCad (demo version).
*/
queryExit(true);
qApp->exit(0);
}
+#endif
/**
* Shows / hides the grid.
*/
void ApplicationWindow::redrawAll()
{
- if (workspace != NULL)
+ if (workspace)
{
QList<QMdiSubWindow *> windows = workspace->subWindowList();
{
MDIWindow * m = (MDIWindow *)windows.at(i);
- if (m != NULL)
+ if (m)
{
QG_GraphicView * gv = m->getGraphicView();
- if (gv != NULL)
+ if (gv)
gv->redraw();
}
}
*/
void ApplicationWindow::updateGrids()
{
- if (workspace != NULL)
+ if (workspace)
{
QList<QMdiSubWindow *> windows = workspace->subWindowList();
{
MDIWindow * m = (MDIWindow *)windows.at(i);
- if (m != NULL)
+ if (m)
{
QG_GraphicView * gv = m->getGraphicView();
- if (gv != NULL)
+ if (gv)
gv->updateGrid();
}
}
{
MDIWindow * m = (MDIWindow *)windows.at(i);
- if (m != NULL)
+ if (m)
{
QG_GraphicView * gv = m->getGraphicView();
- if (gv != NULL)
+ if (gv)
{
gv->setBackground(color);
gv->setGridColor(gridColor);
QString modulesString;
- if (modules.empty() == false)
+ if (!modules.empty())
modulesString = modules.join(", ");
else
modulesString = tr("None");
tr("Version: %1").arg("1.0.0") + "<br>" +
tr("Date: %1").arg(__DATE__) + "<br>" +
QString("© 2010 Underground Software,<br>James Hammons") +
+ "<br>" +
+ QString("Portions © 2001-2003 RibbonSoft") +
"<br>"
#ifdef QC_ABOUT_ADD_COMPANY
+ QString("<br>") + QC_ABOUT_ADD_COMPANY
//Drawing* g = document->getMarking();
/*
- RS_ActionDrawLineFree* action =
- new RS_ActionDrawLineFree(*document->getGraphic(),
+ ActionDrawLineFree* action =
+ new ActionDrawLineFree(*document->getGraphic(),
*graphicView);
for (int i=0; i<100; ++i) {
ins->update();
graphic->addEntity(ins);
- RS_GraphicView * v = getGraphicView();
+ GraphicView * v = getGraphicView();
- if (v != NULL)
+ if (v)
v->redraw();
}
}
}
*/
- RS_GraphicView * v = getGraphicView();
+ GraphicView * v = getGraphicView();
if (v != NULL)
v->redraw();
RS2::SolidLine));
graphic->addEntity(s);
- RS_GraphicView* v = getGraphicView();
+ GraphicView* v = getGraphicView();
if (v!=NULL) {
v->redraw();
}
// Vector(6.0,cos(x_0)-sin(x_0)*(6.0-x_0))));
- RS_GraphicView* v = getGraphicView();
+ GraphicView* v = getGraphicView();
if (v!=NULL) {
v->redraw();
}
*/
void ApplicationWindow::keyPressEvent(QKeyEvent * e)
{
+#warning "!!! keyPressEvent(): Do we need this anymore? !!!"
// timer
static QTime ts = QTime();
static QString firstKey = "";
case Qt::Key_Alt:
case Qt::Key_CapsLock:
{
-// Q3MainWindow::keyPressEvent(e);
QMainWindow::keyPressEvent(e);
// forward to actions:
- RS_GraphicView * graphicView = getGraphicView();
+ GraphicView * graphicView = getGraphicView();
- if (graphicView != NULL)
+ if (graphicView)
graphicView->keyPressEvent(e);
e->accept();
QMainWindow::keyReleaseEvent(e);
// forward to actions:
- RS_GraphicView * graphicView = getGraphicView();
+ GraphicView * graphicView = getGraphicView();
- if (graphicView != NULL)
+ if (graphicView)
graphicView->keyReleaseEvent(e);
e->accept();
{
RS_DEBUG->print(/*RS_Debug::D_CRITICAL,*/ "ApplicationWindow::getMDIWindow: workspace=%08X", workspace);
- if (workspace != NULL)
+ if (workspace)
{
RS_DEBUG->print("ApplicationWindow::getMDIWindow: activeSubWindow=%08X", workspace->activeSubWindow());
return (MDIWindow *)workspace->activeSubWindow();
* @return Pointer to the graphic view of the currently active document
* window or NULL if no window is available.
*/
-/*virtual*/ RS_GraphicView * ApplicationWindow::getGraphicView()
+/*virtual*/ GraphicView * ApplicationWindow::getGraphicView()
{
MDIWindow * m = getMDIWindow();
- if (m != NULL)
- return m->getGraphicView();
-
- return NULL;
+ return (m ? m->getGraphicView() : NULL);
}
/**
{
MDIWindow * m = getMDIWindow();
- if (m != NULL)
- return m->getDocument();
-
- return NULL;
+ return (m ? m->getDocument() : NULL);
}
/**
{
slotFileNew(doc);
- if (fileName != QString::null && getDocument() != NULL)
+ if (fileName != QString::null && getDocument())
getDocument()->setFilename(fileName);
}
/**
* @return Pointer to action handler. Implementation from QG_MainWindowInterface.
*/
-/*virtual*/ QG_ActionHandler * ApplicationWindow::getActionHandler()
+/*virtual*/ ActionHandler * ApplicationWindow::getActionHandler()
{
return actionHandler;
}