/////////////////////////////////////////////////////////////////////////////
-// Name: shapes.cpp
+// Name: contrib/samples/ogl/studio/shapes.cpp
// Purpose: Implements Studio shapes
// Author: Julian Smart
// Modified by:
// Created: 12/07/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
-// #pragma implementation
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#endif
#ifndef WX_PRECOMP
-#include <wx/wx.h>
+#include "wx/wx.h"
#endif
#if !wxUSE_DOC_VIEW_ARCHITECTURE
#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h!
#endif
-#include <wx/deprecated/setup.h>
-#include <wx/deprecated/wxexpr.h>
+#include "wx/ogl/ogl.h" // base header of OGL, includes and adjusts wx/deprecated/setup.h
#include "studio.h"
#include "doc.h"
#include "shapes.h"
#include "view.h"
-#include <wx/ogl/basicp.h>
-#include <wx/ogl/linesp.h>
#include "cspalette.h"
#include "dialogs.h"
csEvtHandler& csCopy = (csEvtHandler&) copy;
csCopy.m_label = m_label;
}
-
+
void csEvtHandler::OnLeftClick(double WXUNUSED(x), double WXUNUSED(y), int keys, int WXUNUSED(attachment))
{
wxClientDC dc(GetShape()->GetCanvas());
// If the shape was selected, deselect it and vice versa.
bool selected = GetShape()->Selected();
- view->SelectAll(FALSE);
+ view->SelectAll(false);
selected = !selected;
{
if (GetShape()->Selected())
{
- GetShape()->Select(FALSE, &dc);
- view->SelectShape(GetShape(), FALSE);
+ GetShape()->Select(false, &dc);
+ view->SelectShape(GetShape(), false);
}
else
{
- GetShape()->Select(TRUE, &dc);
- view->SelectShape(GetShape(), TRUE);
+ GetShape()->Select(true, &dc);
+ view->SelectShape(GetShape(), true);
}
GetShape()->GetCanvas()->Redraw(dc); // Redraw because bits of objects will be missing
}
}
else
{
+#if wxUSE_STATUSBAR
((wxFrame*)wxGetApp().GetTopWindow())->SetStatusText(m_label);
+#endif // wxUSE_STATUSBAR
}
}
wxClientDC dc(GetShape()->GetCanvas());
GetShape()->GetCanvas()->PrepareDC(dc);
- wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+ wxPen dottedPen(*wxBLACK, 1, wxDOT);
dc.SetLogicalFunction(OGLRBLF);
dc.SetPen(dottedPen);
double xp, yp;
wxClientDC dc(GetShape()->GetCanvas());
GetShape()->GetCanvas()->PrepareDC(dc);
- wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+ wxPen dottedPen(*wxBLACK, 1, wxDOT);
dc.SetLogicalFunction(OGLRBLF);
dc.SetPen(dottedPen);
double xp, yp;
// Check if we're on an object
int new_attachment;
wxShape *otherShape = canvas->FindFirstSensitiveShape(x, y, &new_attachment, OP_DRAG_RIGHT);
-
+
if (otherShape && !otherShape->IsKindOf(CLASSINFO(wxLineShape)))
{
wxLineShape* theShape = new csLineShape;
dc.SetLogicalFunction(OGLRBLF);
- wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+ wxPen dottedPen(*wxBLACK, 1, wxDOT);
dc.SetPen(dottedPen);
dc.SetBrush(* wxTRANSPARENT_BRUSH);
GetShape()->GetEventHandler()->OnDrawOutline(dc, xx, yy, w, h);
// Draw bounding box for other selected shapes
- wxNode* node = GetShape()->GetCanvas()->GetDiagram()->GetShapeList()->GetFirst();
+ wxObjectList::compatibility_iterator node = GetShape()->GetCanvas()->GetDiagram()->GetShapeList()->GetFirst();
while (node)
{
wxShape* shape = (wxShape*) node->GetData();
dc.SetLogicalFunction(OGLRBLF);
- wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+ wxPen dottedPen(*wxBLACK, 1, wxDOT);
dc.SetPen(dottedPen);
dc.SetBrush((* wxTRANSPARENT_BRUSH));
GetShape()->GetEventHandler()->OnDrawOutline(dc, xx, yy, w, h);
// Draw bounding box for other selected shapes
- wxNode* node = GetShape()->GetCanvas()->GetDiagram()->GetShapeList()->GetFirst();
+ wxObjectList::compatibility_iterator node = GetShape()->GetCanvas()->GetDiagram()->GetShapeList()->GetFirst();
while (node)
{
wxShape* shape = (wxShape*) node->GetData();
new csCommandState(ID_CS_MOVE, newShape, GetShape()));
// Move line points
- wxNode* node = GetShape()->GetCanvas()->GetDiagram()->GetShapeList()->GetFirst();
+ wxObjectList::compatibility_iterator node = GetShape()->GetCanvas()->GetDiagram()->GetShapeList()->GetFirst();
while (node)
{
wxShape* shape = (wxShape*) node->GetData();
{
wxLineShape* newLineShape = (wxLineShape*) lineShape->CreateNewCopy();
- wxNode *node1 = newLineShape->GetLineControlPoints()->GetFirst();
+ wxObjectList::compatibility_iterator node1 = newLineShape->GetLineControlPoints()->GetFirst();
while (node1)
{
wxRealPoint *point = (wxRealPoint *)node1->GetData();
wxClientDC dc(canvas);
canvas->PrepareDC(dc);
- shape->SetDisableLabel(FALSE);
+ shape->SetDisableLabel(false);
if (lpt->m_type == CONTROL_POINT_LINE)
{
shape->Recompute();
shape->ResetControlPoints();
if (!pt->m_eraseObject)
- shape->Show(FALSE);
+ shape->Show(false);
*/
wxShape* newShape = shape->CreateNewCopy();
// For now, no line property editing
if (shape->IsKindOf(CLASSINFO(wxLineShape)))
- return FALSE;
+ return false;
csDiagramView* view = ((csCanvas*)shape->GetCanvas())->GetView();
else
{
wxMessageBox(_T("Unrecognised shape."), _T("Studio"), wxICON_EXCLAMATION);
- return FALSE;
+ return false;
}
+ wxString newLabel(m_label);
+
+#if wxUSE_WX_RESOURCES
csShapePropertiesDialog* dialog = new csShapePropertiesDialog(shape->GetCanvas()->GetParent(), title, attributeDialog, attributeDialogName);
dialog->GetGeneralPropertiesDialog()->SetShapeLabel(m_label);
if (dialog->ShowModal() == wxID_CANCEL)
{
dialog->Destroy();
- return FALSE;
+ return false;
}
- wxString newLabel = dialog->GetGeneralPropertiesDialog()->GetShapeLabel();
+ newLabel = dialog->GetGeneralPropertiesDialog()->GetShapeLabel();
dialog->Destroy();
+#else
+ wxUnusedVar(attributeDialog);
+#endif // wxUSE_WX_RESOURCES
wxShape* newShape = shape->CreateNewCopy();
view->GetDocument()->GetCommandProcessor()->Submit(new csDiagramCommand(_T("Edit properties"), (csDiagramDocument*) view->GetDocument(),
new csCommandState(ID_CS_EDIT_PROPERTIES, newShape, shape)));
- return TRUE;
+ return true;
}
/*
* Diagram
*/
-
+
+#if wxUSE_PROLOGIO
bool csDiagram::OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr)
{
wxDiagram::OnShapeSave(db, shape, expr);
csEvtHandler *handler = (csEvtHandler *)shape.GetEventHandler();
expr.AddAttributeValueString(_T("label"), handler->m_label);
- return TRUE;
+ return true;
}
bool csDiagram::OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr)
expr.GetAttributeValue(_T("label"), label);
csEvtHandler *handler = new csEvtHandler(&shape, &shape, label);
shape.SetEventHandler(handler);
-
- return TRUE;
+
+ return true;
}
+#endif // wxUSE_PROLOGIO
IMPLEMENT_DYNAMIC_CLASS(csThinRectangleShape, wxDrawnShape)
SetAttachmentMode(ATTACHMENT_MODE_BRANCHING);
SetBranchStyle(BRANCHING_ATTACHMENT_NORMAL|BRANCHING_ATTACHMENT_BLOB);
- SetCentreResize(FALSE);
+ SetCentreResize(false);
}
IMPLEMENT_DYNAMIC_CLASS(csWideRectangleShape, wxDrawnShape)
SetAttachmentMode(ATTACHMENT_MODE_BRANCHING);
SetBranchStyle(BRANCHING_ATTACHMENT_NORMAL|BRANCHING_ATTACHMENT_BLOB);
- SetCentreResize(FALSE);
+ SetCentreResize(false);
}
IMPLEMENT_DYNAMIC_CLASS(csTriangleShape, wxDrawnShape)
SetAttachmentMode(ATTACHMENT_MODE_BRANCHING);
SetBranchStyle(BRANCHING_ATTACHMENT_NORMAL|BRANCHING_ATTACHMENT_BLOB);
- SetCentreResize(FALSE);
+ SetCentreResize(false);
}
IMPLEMENT_DYNAMIC_CLASS(csSemiCircleShape, wxDrawnShape)
SetAttachmentMode(ATTACHMENT_MODE_BRANCHING);
SetBranchStyle(BRANCHING_ATTACHMENT_NORMAL|BRANCHING_ATTACHMENT_BLOB);
- SetCentreResize(FALSE);
+ SetCentreResize(false);
}
IMPLEMENT_DYNAMIC_CLASS(csCircleShape, wxCircleShape)
SetAttachmentMode(ATTACHMENT_MODE_BRANCHING);
SetBranchStyle(BRANCHING_ATTACHMENT_NORMAL|BRANCHING_ATTACHMENT_BLOB);
- SetCentreResize(FALSE);
+ SetCentreResize(false);
}
IMPLEMENT_DYNAMIC_CLASS(csCircleShadowShape, wxCircleShape)
SetAttachmentMode(ATTACHMENT_MODE_BRANCHING);
SetBranchStyle(BRANCHING_ATTACHMENT_NORMAL|BRANCHING_ATTACHMENT_BLOB);
- SetCentreResize(FALSE);
+ SetCentreResize(false);
SetShadowMode(SHADOW_RIGHT);
}
SetAttachmentMode(ATTACHMENT_MODE_BRANCHING);
SetBranchStyle(BRANCHING_ATTACHMENT_NORMAL|BRANCHING_ATTACHMENT_BLOB);
- SetCentreResize(FALSE);
+ SetCentreResize(false);
}
// This is a transparent shape for drawing around other shapes.
SetBrush(wxTRANSPARENT_BRUSH);
SetSize(csSTANDARD_SHAPE_WIDTH, csSTANDARD_SHAPE_WIDTH);
- SetCentreResize(FALSE);
+ SetCentreResize(false);
}
void csGroupShape::OnDraw(wxDC& dc)
if (x >= x1 && x <= x2)
{
if ((y >= y1 - edgeTolerance) && (y <= y1 + edgeTolerance))
- return TRUE;
+ return true;
if ((y <= y2 + edgeTolerance) && (y >= y2 - edgeTolerance))
- return TRUE;
+ return true;
}
// Left/right edges
if (y >= y1 && y <= y2)
{
if ((x >= x1 - edgeTolerance) && (x <= x1 + edgeTolerance))
- return TRUE;
+ return true;
if ((x <= x2 + edgeTolerance) && (x >= x2 - edgeTolerance))
- return TRUE;
+ return true;
}
- return FALSE;
+ return false;
}
IMPLEMENT_DYNAMIC_CLASS(csTextBoxShape, wxRectangleShape)
SetAttachmentMode(ATTACHMENT_MODE_NONE);
SetBranchStyle(BRANCHING_ATTACHMENT_NORMAL|BRANCHING_ATTACHMENT_BLOB);
- SetCentreResize(FALSE);
+ SetCentreResize(false);
}
IMPLEMENT_DYNAMIC_CLASS(csLineShape, wxLineShape)
view->GetDocument()->GetCommandProcessor()->Submit(new csDiagramCommand(_T("Move line point"), (csDiagramDocument*) view->GetDocument(),
new csCommandState(ID_CS_MOVE_LINE_POINT, newShape, this)));
- return TRUE;
+ return true;
}
wxLabelShape* csLineShape::OnCreateLabelShape(wxLineShape *parent, wxShapeRegion *region, double w, double h)
view->GetDocument()->GetCommandProcessor()->Submit(new csDiagramCommand("Move label", (csDiagramDocument*) view->GetDocument(),
new csCommandState(ID_CS_MOVE_LABEL, newShape, this)));
- return TRUE;
+ return true;
}
#endif
break;
double theta = shape->GetRotation();
- const double myPi = 3.1415926535897932384626433832795 ;
+ const double myPi = M_PI;
double ninetyDegrees = myPi/2.0;
wxString opStr;
{
studioShapeEditProc(*this, event);
}
-