bool TextWindow::EditControlDoneForView(const char *s) { switch(edit.meaning) { case Edit::VIEW_SCALE: { Expr *e = Expr::From(s, /*popUpError=*/true); if(e) { double v = e->Eval() / SS.MmPerUnit(); if(v > LENGTH_EPS) { SS.GW.scale = v; } else { Error(_("Scale cannot be zero or negative.")); } } break; } case Edit::VIEW_ORIGIN: { Vector pt; if(sscanf(s, "%lf, %lf, %lf", &pt.x, &pt.y, &pt.z) == 3) { pt = pt.ScaledBy(SS.MmPerUnit()); SS.GW.offset = pt.ScaledBy(-1); } else { Error(_("Bad format: specify x, y, z")); } break; } case Edit::VIEW_PROJ_RIGHT: case Edit::VIEW_PROJ_UP: { Vector pt; if(sscanf(s, "%lf, %lf, %lf", &pt.x, &pt.y, &pt.z) != 3) { Error(_("Bad format: specify x, y, z")); break; } if(edit.meaning == Edit::VIEW_PROJ_RIGHT) { SS.GW.projRight = pt; SS.GW.NormalizeProjectionVectors(); edit.meaning = Edit::VIEW_PROJ_UP; HideEditControl(); ShowEditControl(10, ssprintf("%.3f, %.3f, %.3f", CO(SS.GW.projUp)), editControl.halfRow + 2); edit.showAgain = true; } else { SS.GW.projUp = pt; SS.GW.NormalizeProjectionVectors(); } break; } default: return false; } return true; }
void TextWindow::ShowEditControlWithColorPicker(int halfRow, int col, DWORD rgb) { char str[1024]; sprintf(str, "%.2f, %.2f, %.2f", REDf(rgb), GREENf(rgb), BLUEf(rgb)); SS.later.showTW = true; editControl.colorPicker.show = true; editControl.colorPicker.rgb = rgb; editControl.colorPicker.h = 0; editControl.colorPicker.s = 0; editControl.colorPicker.v = 1; ShowEditControl(halfRow, col, str); }
void SolveSpace::ShowGraphicsEditControl(int x, int y, char *s) { if(GraphicsEditControlIsVisible()) return; RECT r; GetClientRect(GraphicsWnd, &r); x = x + (r.right - r.left)/2; y = (r.bottom - r.top)/2 - y; // (x, y) are the bottom left, but the edit control is placed by its // top left corner y -= 20; ShowEditControl(GraphicsEditControl, x, y, s); }
void CClickList::OnLButtonDblClk(UINT nFlags, CPoint point) { CListCtrl::OnLButtonDblClk(nFlags, point); int Col = 0, Row = HitTestEx(point, Col); CHeaderCtrl *pHeader = const_cast<CClickList *>(this)->GetHeaderCtrl(); if (NULL == pHeader || Row < 0 || Col >= pHeader->GetItemCount()) return; CRowInfo *RowInfo = reinterpret_cast<CRowInfo *>(GetItemData(Row)); if (NULL != RowInfo) for (CEditableColList::iterator it = RowInfo->EditableColList.begin(); it != RowInfo->EditableColList.end(); ++it) if (Col == it->ColNumber) { m_LastEditedRow = m_LastEditedCol = -1; ShowEditControl(Row, Col, it->DataType); return; } }
void SolveSpace::ShowTextEditControl(int x, int y, char *s) { if(GraphicsEditControlIsVisible()) return; ShowEditControl(TextEditControl, x, y, s); }