#include <optsgrid.h>
Inheritance diagram for ActionSetDefaultGrid:
Public Member Functions | |
ActionSetDefaultGrid () | |
ActionSetDefaultGrid constructor. | |
~ActionSetDefaultGrid () | |
ActionSetDefaultGrid destructor. | |
virtual ActionCode | Execute () |
Executes the ActionSetDefaultGrid to go and set up a new default grid in the specified spread and generates another ActionSetDefaultGrid to undo this change. Forces a redraw of the parent document of the specified spread. | |
Static Public Member Functions | |
static ActionCode | Init (Operation *const pOp, ActionList *pActionList, UINT32 ActionSize, Spread *pSpread, double GridDivisions, UINT32 GridSubDivisions, UnitType GridUnits, GridType TypeOfGrid, MILLIPOINT OriginX, MILLIPOINT OriginY, Action **NewAction) |
To check that there is sufficient room for the action in the operation history, and if there is, then to add the action to the operations action list. | |
Private Attributes | |
Spread * | pSpread |
double | GridDivisions |
UINT32 | GridSubDivisions |
UnitType | GridUnits |
GridType | TypeOfGrid |
MILLIPOINT | OriginX |
MILLIPOINT | OriginY |
Definition at line 254 of file optsgrid.h.
|
ActionSetDefaultGrid constructor.
Definition at line 1106 of file optsgrid.cpp.
|
|
ActionSetDefaultGrid destructor.
Definition at line 1122 of file optsgrid.cpp.
|
|
Executes the ActionSetDefaultGrid to go and set up a new default grid in the specified spread and generates another ActionSetDefaultGrid to undo this change. Forces a redraw of the parent document of the specified spread.
Reimplemented from Action. Definition at line 1143 of file optsgrid.cpp. 01144 { 01145 ActionSetDefaultGrid SetDefaultGridAct; 01146 ActionCode ActCode = AC_OK; 01147 01148 // Get the details on the present default grid layout so that we can use this to undo 01149 // what we are about to try and do 01150 01151 double PresentGridDivisions = 0; 01152 UINT32 PresentGridSubDivisions = 0; 01153 UnitType PresentGridUnits = NOTYPE; 01154 GridType PresentGridType = RECTANGULAR; 01155 NodeGrid* pGrid = NULL; 01156 MILLIPOINT PresentOriginX = 0; 01157 MILLIPOINT PresentOriginY = 0; 01158 01159 if (pSpread != NULL) 01160 { 01161 pGrid = pSpread->FindFirstDefaultGridInSpread(); 01162 ERROR3IF(pGrid == NULL,"ActionSetDefaultGrid::Execute() no current default grid"); 01163 01164 PresentGridDivisions = pGrid->GetDivisions(); 01165 PresentGridSubDivisions = pGrid->GetSubdivisions(); 01166 PresentGridUnits = pGrid->GetUnits(); 01167 PresentGridType = pGrid->GetGridType(); 01168 01169 // Grid origin should be made relative to bottom left hand corner of page union 01170 DocRect PagesRect; 01171 /*BOOL ok =*/ pSpread->GetPagesRect(&PagesRect); 01172 pGrid->GetOrigin(&PresentOriginX, &PresentOriginY); 01173 // Make relative to bottom left hand corner of page union 01174 PresentOriginX = PresentOriginX - PagesRect.lo.x; 01175 PresentOriginY = PresentOriginY - PagesRect.lo.y; 01176 TRACEUSER( "Neville", _T("ActionSetDefaultGrid::Execute starting grid origin at %d, %d\n"), PresentOriginX, PresentOriginY); 01177 } 01178 01179 // Create an action to restore the changes we are about to make 01180 if ((ActCode = ActionSetDefaultGrid::Init(pOperation, 01181 pOppositeActLst, 01182 sizeof(ActionSetDefaultGrid), 01183 pSpread, 01184 PresentGridDivisions, 01185 PresentGridSubDivisions, 01186 PresentGridUnits, 01187 PresentGridType, 01188 PresentOriginX, 01189 PresentOriginY, 01190 ( Action**)(&SetDefaultGridAct))) != AC_FAIL) 01191 { 01192 // Need to do something here 01193 if ((pSpread != NULL) && (pGrid != NULL)) 01194 { 01195 // Check if we must change grid types 01196 if (PresentGridType != TypeOfGrid) 01197 { 01198 NodeGrid* pNewGrid = NULL; 01199 01200 // Work out the size required for the new grid 01201 DocRect Rect = pSpread->GetPasteboardRect(FALSE); 01202 pSpread->DocCoordToSpreadCoord(&Rect); 01203 01204 // Create a grid of the new type 01205 switch (TypeOfGrid) 01206 { 01207 case RECTANGULAR : ALLOC_WITH_FAIL(pNewGrid,(new NodeGridRect()),pOperation); break; 01208 case ISOMETRIC : ALLOC_WITH_FAIL(pNewGrid,(new NodeGridIso()), pOperation); break; 01209 case INVALID_GRID_TYPE: ERROR3("Use of invalid grid type"); break; 01210 } 01211 01212 if (pNewGrid != NULL) 01213 { 01214 // Attach the new grid as the last child of the specified spread 01215 pNewGrid->AttachNode(pSpread, LASTCHILD); 01216 pNewGrid->SetDefault(TRUE); // Its a default grid 01217 pNewGrid->SetBoundingRect(Rect); // Tell the NodeGrid of the new bounds 01218 01219 // Now delete the old grid 01220 pGrid->CascadeDelete(); 01221 01222 // Make the present grid the new one so that we can set the new parameters 01223 pGrid = pNewGrid; 01224 } 01225 else 01226 { 01227 // We failed to create the new grid so return that failure 01228 ActCode = AC_FAIL; 01229 } 01230 } 01231 01232 01233 // Set up those new grid parameters 01234 if (ActCode != AC_FAIL) 01235 { 01236 // Grid system works in divisions, which are the number of units between the 01237 // main grid points. 01238 pGrid->SetGridParams(GridDivisions, GridSubDivisions, GridUnits); 01239 01240 // Must set the origin of the grid to the bottom left corner of the 01241 // union rectangle of all pages on the spread as this is where the x,y 01242 // measurements are made from. 01243 DocRect PagesRect; 01244 BOOL ok = pSpread->GetPagesRect(&PagesRect); 01245 if (ok) 01246 pGrid->SetOrigin(PagesRect.lo.x + OriginX, PagesRect.lo.y + OriginY); 01247 01248 // Force all views onto the document to be updated 01249 // Also, tell the options dialog box that something has changed 01250 // Assume spread is in the selected document 01251 Document *pParentDoc = (Document *)pSpread->FindOwnerDoc(); 01252 if (pParentDoc != NULL) 01253 { 01254 pParentDoc->ForceRedraw(); 01255 BROADCAST_TO_ALL( OptionsChangingMsg(pParentDoc,OptionsChangingMsg::NEWDEFAULTGRID) ); 01256 } 01257 } 01258 } 01259 } 01260 01261 return (ActCode); 01262 }
|
|
To check that there is sufficient room for the action in the operation history, and if there is, then to add the action to the operations action list.
AC_OK : The action was successfully initialised and added to the operation. The function calls the Action::Init function passing the runtime class of an ActionSetDefaultGrid.
Definition at line 1320 of file optsgrid.cpp. 01331 { 01332 ActionCode Ac = (Action::Init(pOp, 01333 pActionList, 01334 ActionSize, 01335 CC_RUNTIME_CLASS(ActionSetDefaultGrid), 01336 NewAction)); 01337 if (*NewAction != NULL) 01338 { 01339 ActionSetDefaultGrid *ACC = (ActionSetDefaultGrid*) (*NewAction); 01340 ACC->pSpread = pTheSpread; 01341 ACC->GridDivisions = NewGridDivisions; 01342 ACC->GridSubDivisions = NewGridSubDivisions; 01343 ACC->GridUnits = NewGridUnits; 01344 ACC->TypeOfGrid = NewGridType; 01345 ACC->OriginX = NewOriginX; 01346 ACC->OriginY = NewOriginY; 01347 } 01348 01349 return (Ac); 01350 }
|
|
Definition at line 278 of file optsgrid.h. |
|
Definition at line 279 of file optsgrid.h. |
|
Definition at line 280 of file optsgrid.h. |
|
Definition at line 283 of file optsgrid.h. |
|
Definition at line 284 of file optsgrid.h. |
|
Definition at line 277 of file optsgrid.h. |
|
Definition at line 281 of file optsgrid.h. |