void CScreenEditView::DoScreenObjectBitmapPropertiesDlg(void) { CScreenObjectBitmapPropertiesDlg sobDialog; CFEManDoc* pDoc = GetDocument(); Screen *pWorkScreen = pDoc->GetFirstSelectedScreen(); ScreenObjectBitmap *sob = (ScreenObjectBitmap *)pWorkScreen->GetFirstSelectedScreenObject(); // Set up the dialog info. sobDialog.contentVisible = (sob->GetContentType() == ScreenObjectBitmap::CT_NORMAL); if(sob->GetMyUserInfo()) { sobDialog.userInfo = new char [strlen(sob->GetMyUserInfo()) + 1]; strcpy(sobDialog.userInfo, sob->GetMyUserInfo()); } if(sobDialog.DoModal() == IDOK) { // Update all the info. sob->SetContentType((sobDialog.contentVisible ? ScreenObjectBitmap::CT_NORMAL : ScreenObjectBitmap::CT_NONE)); sob->SetMyUserInfo(sobDialog.userInfo); } delete [] sobDialog.userInfo; }
void CScreenEditView::DoScreenObjectRectPropertiesDlg(void) { CScreenObjectRectPropertiesDlg sorDialog; CFEManDoc* pDoc = GetDocument(); Screen *pWorkScreen = pDoc->GetFirstSelectedScreen(); ScreenObjectRect *sor = (ScreenObjectRect *)pWorkScreen->GetFirstSelectedScreenObject(); // Set up the dialog info. sorDialog.borderColor = sor->GetBorderColor(); sorDialog.contentColor = sor->GetContentColor(); sorDialog.borderVisible = (sor->GetBorderType() == ScreenObjectRect::BT_NORMAL); sorDialog.contentVisible = (sor->GetContentType() == ScreenObjectRect::CT_NORMAL); sorDialog.borderWidth = sor->GetBorderWidth(); sorDialog.contentWidth = sor->GetContentWidth(); sorDialog.contentHeight = sor->GetContentHeight(); if(sor->GetMyUserInfo()) { sorDialog.userInfo = new char [strlen(sor->GetMyUserInfo()) + 1]; strcpy(sorDialog.userInfo, sor->GetMyUserInfo()); } if(sorDialog.DoModal() == IDOK) { // Update all the info. sor->SetBorderColor(sorDialog.borderColor); sor->SetContentColor(sorDialog.contentColor); sor->SetBorderType((sorDialog.borderVisible ? ScreenObjectRect::BT_NORMAL : ScreenObjectRect::BT_NONE)); sor->SetContentType((sorDialog.contentVisible ? ScreenObjectRect::CT_NORMAL : ScreenObjectRect::CT_NONE)); sor->SetBorderWidth(sorDialog.borderWidth); sor->SetContentWidth(sorDialog.contentWidth); sor->SetContentHeight(sorDialog.contentHeight); sor->SetMyUserInfo(sorDialog.userInfo); } delete [] sorDialog.userInfo; }
BOOL CScreenEditView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { CFEManDoc* pDoc = GetDocument(); Screen *pWorkScreen; ScreenObject *pWorkObject; if(pDoc->GetNumSelectedScreenIcons() != 1) return(CView::OnSetCursor(pWnd, nHitTest, message)); pWorkScreen = pDoc->GetFirstSelectedScreen(); pWorkObject = pWorkScreen->GetFirstSelectedScreenObject(); if(pWorkObject) { //ChooseMouseCursor(); return(TRUE); } return(CView::OnSetCursor(pWnd, nHitTest, message)); }
void CScreenEditView::OnSosSizetocontent() { CFEManDoc* pDoc = GetDocument(); Screen *pWorkScreen = pDoc->GetFirstSelectedScreen(); ScreenObject *pWorkObject = pWorkScreen->GetFirstSelectedScreenObject(); while(pWorkObject) { if(pWorkObject->GetType() == ScreenObject::SOT_SCREENOBJECTSTRING) { CDC *pDC = GetDC(); ScreenObjectString *sos = (ScreenObjectString *)pWorkObject; sos->SetStringBounds(pDC); } pWorkObject = (ScreenObject *)pWorkObject->GetNext(); } Invalidate(); }
void CScreenEditView::DoScreenObjectStringPropertiesDlg(void) { CStringObjectStringPropertiesDlg sosDialog; CFEManDoc* pDoc = GetDocument(); Screen *pWorkScreen = pDoc->GetFirstSelectedScreen(); ScreenObjectString *sos = (ScreenObjectString *)pWorkScreen->GetFirstSelectedScreenObject(); unsigned long index; // Set up the dialog info. sosDialog.contentVisible = sos->GetContentType(); sosDialog.myFont = *sos->GetMyFont(); for (index = 0; index < NUMBER_LANGUAGES; index++) { if (sos->GetMyString(index) == NULL) { sosDialog.myString[index] = NULL; } else { sosDialog.myString[index] = new char [strlen(sos->GetMyString(index)) + 1]; strcpy(sosDialog.myString[index], sos->GetMyString(index)); } } sosDialog.textColor = sos->GetTextColor(); sosDialog.textBackground = sos->GetTextBackground(); sosDialog.autoSizeToContent = sos->GetAutoSizeToContent(); sosDialog.justification = sos->GetJustification(); if(sos->GetMyUserInfo()) { sosDialog.userInfo = new char [strlen(sos->GetMyUserInfo()) + 1]; strcpy(sosDialog.userInfo, sos->GetMyUserInfo()); } if(sosDialog.DoModal() == IDOK) { // Update all the info. sos->SetContentType(sosDialog.contentVisible); sos->SetMyFont(&sosDialog.myFont); for (index = 0; index < NUMBER_LANGUAGES; index++) { sos->SetMyString(sosDialog.myString[index], index); delete [] sosDialog.myString[index]; } sos->SetJustification(sosDialog.justification); sos->SetTextColor(sosDialog.textColor); sos->SetTextBackground(sosDialog.textBackground); sos->SetAutoSizeToContent(sosDialog.autoSizeToContent); sos->SetMyUserInfo(sosDialog.userInfo); } delete [] sosDialog.userInfo; }
void CScreenEditView::OnMouseMove(UINT nFlags, CPoint point) { CFEManDoc* pDoc = GetDocument(); Screen *pWorkScreen; // Only draw the screen object if there is one screen selected. if(pDoc->GetNumSelectedScreenIcons() != 1) return; CPoint gridPoint, tempPoint; unsigned long xRes, yRes; if(pDoc->gridActive) { tempPoint.x = point.x - DEFAULT_SCREEN_OFFSET_X; tempPoint.y = point.y - DEFAULT_SCREEN_OFFSET_Y; xRes = tempPoint.x / pDoc->gridSpacing; yRes = tempPoint.y / pDoc->gridSpacing; gridPoint.x = pDoc->gridSpacing * xRes; gridPoint.y = pDoc->gridSpacing * yRes; gridPoint.x += DEFAULT_SCREEN_OFFSET_X; gridPoint.y += DEFAULT_SCREEN_OFFSET_Y; } else { gridPoint = point; } pWorkScreen = pDoc->GetFirstSelectedScreen(); switch(lButtonStatus) { case LBS_NORMAL: // Nothing special. // Nothing to do with the left button. ChooseMouseCursor(&point); break; case LBS_WINDOWCLICK: // Clicked on a window. // Track the selection window. // Update the current selection rectangle to stretch from the last left click // position to the current mouse position. selectionWindow.right = point.x; selectionWindow.bottom = point.y; // Let the document select all the screens within this rect. pWorkScreen->SelectScreenObjectsInRect(&selectionWindow); // Make sure we redraw this box. Invalidate(); break; case LBS_SCREENOBJECTCLICK: // Clicked on a screen object. // Move all selected objects. if(pDoc->gridActive) { pWorkScreen->SetExplicitScreensObjectPosition(&gridPoint); } else { pWorkScreen->RelocateSelectedScreensObjects(&lastLeftClick, &gridPoint); } // Make sure we only move the difference. lastLeftClick = gridPoint; // I'm cheating. So sue me. I'm fired. Invalidate(); break; case LBS_IN_GIZMO_TOP_LEFT: case LBS_IN_GIZMO_TOP_MIDDLE: case LBS_IN_GIZMO_TOP_RIGHT: case LBS_IN_GIZMO_MIDDLE_LEFT: case LBS_IN_GIZMO_MIDDLE_RIGHT: case LBS_IN_GIZMO_BOTTOM_LEFT: case LBS_IN_GIZMO_BOTTOM_MIDDLE: case LBS_IN_GIZMO_BOTTOM_RIGHT: // Only get these if only one screen object selected. ScreenObject *so = (ScreenObject *)pWorkScreen->GetFirstSelectedScreenObject(); so->Resize(&lastLeftClick, &gridPoint, lButtonStatus); // Make sure we only move the difference. lastLeftClick = gridPoint; // I'm cheating. So sue me. I'm fired. Invalidate(); break; } }
void CScreenEditView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { CFEManDoc* pDoc = GetDocument(); CPoint workPoint = lastLeftClick; unsigned long moveDist = 0; Screen *pWorkScreen; ScreenObject *pWorkObject; // Only draw the screen object if there is one screen selected. if(pDoc->GetNumSelectedScreenIcons() != 1) return; pWorkScreen = pDoc->GetFirstSelectedScreen(); if(pDoc->gridActive) { moveDist = pDoc->gridSpacing; } else { moveDist = 1; } switch(nChar) { case VK_LEFT: workPoint.x -= moveDist; pWorkScreen->RelocateSelectedScreensObjects(&lastLeftClick, &workPoint); lastLeftClick = workPoint; break; case VK_RIGHT: workPoint.x += moveDist; pWorkScreen->RelocateSelectedScreensObjects(&lastLeftClick, &workPoint); lastLeftClick = workPoint; break; case VK_UP: workPoint.y -= moveDist; pWorkScreen->RelocateSelectedScreensObjects(&lastLeftClick, &workPoint); lastLeftClick = workPoint; break; case VK_DOWN: workPoint.y += moveDist; pWorkScreen->RelocateSelectedScreensObjects(&lastLeftClick, &workPoint); lastLeftClick = workPoint; break; case VK_TAB: pWorkObject = pWorkScreen->GetFirstSelectedScreenObject(); if(pWorkObject) { pWorkObject = pWorkScreen->GetFirstSelectedScreenObject(); pWorkObject = (ScreenObject *)pWorkObject->GetNext(); pWorkScreen->ClearAllSelectedScreenObjects(); if(pWorkObject) { pWorkScreen->SelectScreenObject(pWorkObject); } else { pWorkScreen->SelectScreenObject(pWorkScreen->GetFirstScreenObject()); } } else { pWorkScreen->SelectScreenObject(pWorkScreen->GetFirstScreenObject()); } break; } Invalidate(); CView::OnKeyDown(nChar, nRepCnt, nFlags); }