// --------------------------------------------------------------------------- void CGeorgesImpl::PutText (const std::string& _sText) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CMainFrame *pWnd = dynamic_cast< CMainFrame* >( theApp.m_pMainWnd ); CChildFrame *pChild = (CChildFrame*)pWnd->MDIGetActive (); if (pChild == NULL) return; // Get active document CGeorgesEditDoc *doc = (CGeorgesEditDoc *)pChild->GetActiveDocument(); if (doc) { // Get the left view CLeftView* pView = doc->getLeftView (); // Check type CGeorgesEditDocSub *subDoc = doc->getSelectedObject (); if (subDoc) { // Get the node const CFormDfn *parentDfn; uint indexDfn; const CFormDfn *nodeDfn; const CType *nodeType; CFormElm *node; UFormDfn::TEntryType type; bool array; bool parentVDfnArray; CForm *form=doc->getFormPtr (); CFormElm *elm = doc->getRootNode (subDoc->getSlot ()); nlverify ( elm->getNodeByName (subDoc->getFormName ().c_str (), &parentDfn, indexDfn, &nodeDfn, &nodeType, &node, type, array, parentVDfnArray, true, NLGEORGES_FIRST_ROUND) ); // It is an array ? if (array&&(type == UFormDfn::EntryType)) { // Modify the node doc->modify (new CActionString (IAction::FormTypeValue, _sText.c_str(), *doc, subDoc->getFormName ().c_str (), "", doc->getLeftView ()->getCurrentSelectionId (), subDoc->getSlot ())); doc->modify (new CActionString (IAction::FormArrayRename, _sText.c_str(), *doc, subDoc->getFormName ().c_str (), toString (subDoc->getIdInParent ()).c_str (), doc->getLeftView ()->getCurrentSelectionId (), subDoc->getSlot ())); doc->updateDocumentStructure (); doc->UpdateAllViews (pView); } else if ((UFormDfn::EntryDfn)&&(!array)) { // Get the right view CGeorgesEditView* view = doc->getRightView (); if (view->FormDialog.WidgetFocused != 0xffffffff) { // Set the string doc->modify (new CActionString (IAction::FormValue, _sText.c_str(), *doc, view->FormDialog.Widgets[view->FormDialog.WidgetFocused]->getFormName ().c_str (), "", doc->getLeftView ()->getCurrentSelectionId (), subDoc->getSlot ())); doc->updateDocumentStructure (); doc->UpdateAllViews (pView); } } } } }
void IAction::update (bool updateLeftView, TUpdateRightView rightViewFlag, CGeorgesEditDoc &doc, const char *_FormName) { // Right and left view CGeorgesEditView *rightView = doc.getRightView (); nlassert (rightView); CLeftView *leftView = doc.getLeftView (); nlassert (leftView); // Update left view ? if (updateLeftView) doc.updateDocumentStructure (); // Set the current view.. uint subSelection = leftView->getCurrentSelectionId (); if (subSelection != _SelId) { doc.changeSubSelection (_SelId, NULL); return; } if (leftView->getCurrentSelectionId () == 1) { rightView->HeaderDialog.getFromDocument (*doc.getHeaderPtr ()); } else if (doc.isType ()) { rightView->TypeDialog.getFromDocument (*(doc.getTypePtr())); } else if (doc.isDfn ()) { rightView->DfnDialog.getFromDocument (*(doc.getDfnPtr())); } else if (doc.isForm ()) { if (rightViewFlag == DoNothing) { } else if (rightViewFlag == UpdateLabels) { rightView->FormDialog.updateLabels (); } else if (rightViewFlag == UpdateValues) { rightView->FormDialog.updateValues (); } else if (rightViewFlag == Redraw) { rightView->FormDialog.getFromDocument (); } } }
BOOL CLeftView::PreTranslateMessage(MSG* pMsg) { if (theApp.m_pMainWnd->PreTranslateMessage(pMsg)) return TRUE; // Key ? if (pMsg->message == WM_KEYDOWN) { // Tabulation ? if ((int) pMsg->wParam == VK_TAB) { CGeorgesEditDoc *doc = (CGeorgesEditDoc*)GetDocument( ); if (doc) { // Right view ? CGeorgesEditView* pView = doc->getRightView (); if (pView->isFocusable ()) { doc->switchToView (pView); // Shift ? if (GetAsyncKeyState (VK_SHIFT) & (1<<15)) pView->setFocusLastWidget (); } } return TRUE; } else if ((int) pMsg->wParam == VK_INSERT) { OnInsert (); return TRUE; } else if ((int) pMsg->wParam == VK_DELETE) { OnDelete (); return TRUE; } } return CView::PreTranslateMessage(pMsg); }