void NuTo::Structure::InterpolationTypeAdd(int rInterpolationTypeId, NuTo::Node::eDof rDofType, NuTo::Interpolation::eTypeOrder rTypeOrder, const Eigen::VectorXi& rDegree, const std::vector<Eigen::VectorXd>& rKnots, const Eigen::MatrixXd& rWeights) { InterpolationType* interpolationType = InterpolationTypeGet(rInterpolationTypeId); interpolationType->AddDofInterpolation(rDofType, rTypeOrder, rDegree, rKnots, rWeights); eIntegrationType integrationTypeEnum = interpolationType->GetStandardIntegrationType(); const IntegrationTypeBase& integrationType = *this->GetPtrIntegrationType(integrationTypeEnum); interpolationType->ClearCache(); // update all elements // disable show time bool showTime = GetShowTime(); SetShowTime(false); int elementGroupId = GroupCreate("Elements"); GroupAddElementFromType(elementGroupId, rInterpolationTypeId); for (int elementId : GroupGetMemberIds(elementGroupId)) { ElementBase* element = ElementGetElementPtr(elementId); element->SetIntegrationType(integrationType); } GroupDelete(elementGroupId); UpdateDofStatus(); SetShowTime(showTime); }
void NuTo::Structure::InterpolationTypeAdd( int rInterpolationTypeId, NuTo::Node::eDof rDofType, NuTo::Interpolation::eTypeOrder rTypeOrder = Interpolation::eTypeOrder::EQUIDISTANT1) { InterpolationType& interpolationType = *InterpolationTypeGet(rInterpolationTypeId); interpolationType.AddDofInterpolation(rDofType, rTypeOrder); eIntegrationType integrationTypeEnum = interpolationType.GetStandardIntegrationType(); const IntegrationTypeBase& integrationType = *this->GetPtrIntegrationType(integrationTypeEnum); interpolationType.ClearCache(); // update all elements // disable show time bool showTime = GetShowTime(); SetShowTime(false); int elementGroupId = GroupCreate(eGroupId::Elements); GroupAddElementFromType(elementGroupId, rInterpolationTypeId); for (int elementId : GroupGetMemberIds(elementGroupId)) { ElementBase* element = ElementGetElementPtr(elementId); element->SetIntegrationType(integrationType); } GroupDelete(elementGroupId); UpdateDofStatus(); SetShowTime(showTime); }
/* * GroupDeleteNames: Remove the given names from the given group. * Return number of names deleted, or -1 if the group itself was deleted. */ int GroupDeleteNames(char *group_name, char *args) { int i, j, index, num_deleted; UserGroup g; char *name, *ptr; index = FindGroupByName(group_name); switch(index) { case GROUP_NOMATCH: GameMessage(GetString(hInst, IDS_BADGROUPNAME)); return 0; case GROUP_AMBIGUOUS: GameMessage(GetString(hInst, IDS_DUPLICATEGROUPNAME)); return 0; default: group_name = groups[index]; break; } GroupLoad(group_name, &g); // Remove each name num_deleted = 0; name = GetPlayerName(args, &ptr); while (name != NULL) { for (i=0; i < g.num_users; i++) if (!stricmp(g.names[i], name)) { for (j=i; j < g.num_users - 1; j++) strcpy(g.names[j], g.names[j + 1]); g.num_users--; num_deleted++; break; } name = GetPlayerName(ptr, &ptr); } // XXX Don't delete empty groups (???) #if 0 if (g.num_users == 0) { GroupDelete(group_name); return -1; } #endif GroupSave(group_name, &g); return num_deleted; }
void NuTo::Structure::InterpolationTypeSetIntegrationType(int rInterpolationTypeId, IntegrationTypeBase* rIntegrationType) { InterpolationType* interpolationType = InterpolationTypeGet(rInterpolationTypeId); interpolationType->ClearCache(); // update all elements // disable show time bool showTime = GetShowTime(); SetShowTime(false); int elementGroupId = GroupCreate("Elements"); GroupAddElementFromType(elementGroupId, rInterpolationTypeId); for (int elementId : GroupGetMemberIds(elementGroupId)) { ElementBase* element = ElementGetElementPtr(elementId); element->SetIntegrationType(*rIntegrationType); } GroupDelete(elementGroupId); SetShowTime(showTime); }
void MainHost::SetupGroupContainer() { if(!groupContainer.isNull()) { mainContainer->ParkObject( groupContainer ); groupContainer.clear(); UpdateSolver(true); if(mainWindow) mainWindow->mySceneView->viewGroup->ClearViewPrograms(); } ObjectInfo info; info.nodeType = NodeType::container; info.objType = ObjType::Container; info.name = "groupContainer"; info.forcedObjId = FixedObjId::groupContainer; groupContainer = objFactory->NewObject(info).staticCast<Connectables::Container>(); if(groupContainer.isNull()) return; groupContainer->SetLoadingMode(true); groupContainer->LoadProgram(0); mainContainer->AddObject(groupContainer); QSharedPointer<Connectables::Object> bridge; //bridge in ObjectInfo in; in.name="in"; in.nodeType = NodeType::bridge; in.objType = ObjType::BridgeIn; in.forcedObjId = FixedObjId::groupContainerIn; bridge = objFactory->NewObject(in); groupContainer->AddObject( bridge ); bridge->SetBridgePinsInVisible(false); groupContainer->bridgeIn = bridge; //bridge out ObjectInfo out; out.name="out"; out.nodeType = NodeType::bridge; out.objType = ObjType::BridgeOut; out.forcedObjId = FixedObjId::groupContainerOut; bridge = objFactory->NewObject(out); groupContainer->AddObject( bridge ); bridge->SetBridgePinsOutVisible(false); groupContainer->bridgeOut = bridge; //connect with programContainer if(!programContainer.isNull()) { mainContainer->ConnectObjects(programContainer->bridgeSend, groupContainer->bridgeIn,true); mainContainer->ConnectObjects(groupContainer->bridgeOut, programContainer->bridgeReturn,true); } //bridge send ObjectInfo send; send.name="send"; send.nodeType = NodeType::bridge; send.objType = ObjType::BridgeSend; send.forcedObjId = FixedObjId::groupContainerSend; bridge = objFactory->NewObject(send); groupContainer->AddObject( bridge ); bridge->SetBridgePinsOutVisible(false); groupContainer->bridgeSend = bridge; //bridge return ObjectInfo retrn; retrn.name="return"; retrn.nodeType = NodeType::bridge; retrn.objType = ObjType::BridgeReturn; retrn.forcedObjId = FixedObjId::groupContainerReturn; bridge = objFactory->NewObject(retrn); groupContainer->AddObject( bridge ); bridge->SetBridgePinsInVisible(false); groupContainer->bridgeReturn = bridge; //connect with hostContainer if(!hostContainer.isNull()) { mainContainer->ConnectObjects(groupContainer->bridgeSend, hostContainer->bridgeIn,true); mainContainer->ConnectObjects(hostContainer->bridgeOut, groupContainer->bridgeReturn,true); } connect(programsModel, SIGNAL(GroupChanged(QModelIndex)), groupContainer.data(), SLOT(SetProgram(QModelIndex))); connect(programsModel, SIGNAL(GroupDelete(QModelIndex)), groupContainer.data(), SLOT(RemoveProgram(QModelIndex))); connect(this,SIGNAL(Rendered()), groupContainer.data(), SLOT(PostRender())); emit groupParkingModelChanged(&groupContainer->parkModel); if(projectContainer) projectContainer->childContainer=groupContainer; if(programContainer) { groupContainer->childContainer=programContainer; programContainer->parentContainer=groupContainer; } groupContainer->SetLoadingMode(false); groupContainer->UpdateModificationTime(); SetSolverUpdateNeeded(); }
INT_PTR CALLBACK GroupsPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { PGROUP_DATA pGroupData; UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(wParam); UNREFERENCED_PARAMETER(hwndDlg); pGroupData = (PGROUP_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER); switch (uMsg) { case WM_INITDIALOG: pGroupData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GROUP_DATA)); SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGroupData); pGroupData->hPopupMenu = LoadMenu(hApplet, MAKEINTRESOURCE(IDM_POPUP_GROUP)); OnInitDialog(hwndDlg); SetMenuDefaultItem(GetSubMenu(pGroupData->hPopupMenu, 1), IDM_GROUP_PROPERTIES, FALSE); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDM_GROUP_NEW: case IDC_GROUPS_ADD: GroupNew(hwndDlg); break; case IDM_GROUP_RENAME: GroupRename(hwndDlg); break; case IDM_GROUP_DELETE: case IDC_GROUPS_REMOVE: GroupDelete(hwndDlg); break; case IDM_GROUP_PROPERTIES: case IDC_GROUPS_PROPERTIES: if (GroupProperties(hwndDlg) == IDOK) UpdateGroupProperties(hwndDlg); break; } break; case WM_NOTIFY: return OnNotify(hwndDlg, pGroupData, (NMHDR *)lParam); case WM_DESTROY: DestroyMenu(pGroupData->hPopupMenu); HeapFree(GetProcessHeap(), 0, pGroupData); break; } return FALSE; }
void GroupCommand(HWND hDlg, int ctrl_id, HWND hwndCtl, UINT codeNotify) { int index, i; char group_name[MAX_GROUPNAME + 1], player_name[MAX_CHARNAME + 1], quoted_name[MAX_CHARNAME + 3]; char say_string[MAXSAY + 1]; UserGroup g; HWND hList, hwndFocus, hCombo; Bool legal_index; switch(ctrl_id) { case IDC_GROUPS: if (codeNotify != CBN_SELCHANGE) break; legal_index = GetCurrentGroupName(hDlg, group_name); EnableWindow(GetDlgItem(hDlg, IDC_DELGROUP), legal_index); EnableWindow(GetDlgItem(hDlg, IDC_ADDMEMBER), legal_index); EnableWindow(GetDlgItem(hDlg, IDC_DELMEMBER), legal_index); EnableWindow(GetDlgItem(hDlg, IDC_ADDNAME), legal_index); EnableWindow(GetDlgItem(hDlg, IDC_ADDNAMETEXT), legal_index); if (!legal_index) break; if (GroupLoad(group_name, &g) != GROUP_MATCH) { debug(("GroupCommand unable to load selected group %s\n", group_name)); break; } hList = GetDlgItem(hDlg, IDC_GROUPMEMBERS); ListBox_ResetContent(hList); for (i=0; i < g.num_users; i++) ListBox_AddString(hList, g.names[i]); SetDlgItemText(hDlg, IDC_GROUPSTATUS, ""); break; case IDC_DELGROUP: hCombo = GetDlgItem(hDlg, IDC_GROUPS); index = ComboBox_GetCurSel(hCombo); if (index == CB_ERR) break; ComboBox_GetText(hCombo, group_name, MAX_GROUPNAME); if (GroupDelete(group_name)) { ComboBox_DeleteString(hCombo, index); if (ComboBox_GetCount(hCombo) == 0) { ComboBox_ResetContent(hCombo); ListBox_ResetContent(GetDlgItem(hDlg, IDC_GROUPMEMBERS)); } else ComboBox_SetCurSel(hCombo, min(index, ComboBox_GetCount(hCombo) - 1)); FORWARD_WM_COMMAND(hDlg, IDC_GROUPS, hCombo, CBN_SELCHANGE, GroupDialogProc); if (num_groups < MAX_NUMGROUPS) EnableWindow(GetDlgItem(hDlg, IDC_NEWGROUP), TRUE); SetDlgItemText(hDlg, IDC_GROUPSTATUS, ""); } break; case IDC_ADDMEMBER: if (!GetCurrentGroupName(hDlg, group_name)) break; hList = GetDlgItem(hDlg, IDC_LOGGEDON); index = ListBox_GetCurSel(hList); if (index == LB_ERR) break; ListBox_GetText(hList, index, player_name); // Check for group too full if (ListBox_GetCount(GetDlgItem(hDlg, IDC_GROUPMEMBERS)) >= MAX_GROUPSIZE) { SetDlgItemText(hDlg, IDC_GROUPSTATUS, GetString(hInst, IDS_GROUPFULLDLG)); break; } // Add quotes around player to take care of spaces QuotePlayerName(player_name, quoted_name); if (GroupAdd(group_name, quoted_name) == 0) { SetDlgItemText(hDlg, IDC_GROUPSTATUS, GetString(hInst, IDS_CANTADDNAMEDLG)); break; } hList = GetDlgItem(hDlg, IDC_GROUPMEMBERS); ListBox_AddString(hList, player_name); SetDlgItemText(hDlg, IDC_GROUPSTATUS, ""); break; case IDC_DELMEMBER: if (!GetCurrentGroupName(hDlg, group_name)) break; hList = GetDlgItem(hDlg, IDC_GROUPMEMBERS); index = ListBox_GetCurSel(hList); if (index == LB_ERR) break; ListBox_GetText(hList, index, player_name); QuotePlayerName(player_name, quoted_name); if (GroupDeleteNames(group_name, quoted_name) != 1) { debug(("Deleting name %s from group %s failed\n", player_name, group_name)); break; } ListBox_DeleteString(hList, index); ListBox_SetCurSel(hList, min(index, ListBox_GetCount(hList) - 1)); SetDlgItemText(hDlg, IDC_GROUPSTATUS, ""); break; case IDOK: // Sent when Enter pressed on edit box hwndFocus = GetFocus(); if (hwndFocus == GetDlgItem(hDlg, IDC_ADDNAME)) { if (Edit_GetText(hwndFocus, player_name, MAX_CHARNAME) <= 0) break; Edit_SetSel(hwndFocus, 0, -1); if (!GetCurrentGroupName(hDlg, group_name)) break; // Check for group too full if (ListBox_GetCount(GetDlgItem(hDlg, IDC_GROUPMEMBERS)) >= MAX_GROUPSIZE) { SetDlgItemText(hDlg, IDC_GROUPSTATUS, GetString(hInst, IDS_GROUPFULLDLG)); break; } QuotePlayerName(player_name, quoted_name); if (GroupAdd(group_name, quoted_name) == 0) { SetDlgItemText(hDlg, IDC_GROUPSTATUS, GetString(hInst, IDS_CANTADDNAMEDLG)); break; } hList = GetDlgItem(hDlg, IDC_GROUPMEMBERS); ListBox_AddString(hList, player_name); SetDlgItemText(hDlg, IDC_GROUPSTATUS, ""); } else if (hwndFocus == GetDlgItem(hDlg, IDC_NEWGROUP)) { if (Edit_GetText(hwndFocus, group_name, MAX_GROUPNAME) <= 0) break; Edit_SetSel(hwndFocus, 0, -1); if (!GroupNew(group_name)) { SetDlgItemText(hDlg, IDC_GROUPSTATUS, GetString(hInst, IDS_GROUPFAILEDDLG)); break; } hCombo = GetDlgItem(hDlg, IDC_GROUPS); index = ComboBox_AddString(hCombo, group_name); ComboBox_SetCurSel(hCombo, index); if (num_groups >= MAX_NUMGROUPS) EnableWindow(GetDlgItem(hDlg, IDC_NEWGROUP), FALSE); FORWARD_WM_COMMAND(hDlg, IDC_GROUPS, hCombo, CBN_SELCHANGE, GroupDialogProc); SetDlgItemText(hDlg, IDC_GROUPSTATUS, ""); } else if (hwndFocus == GetDlgItem(hDlg, IDC_GROUPTELL)) { if (Edit_GetText(hwndFocus, say_string, MAXSAY) <= 0) break; if (!GetCurrentGroupName(hDlg, group_name)) break; TellGroup(group_name, say_string); // Prevent auto-repeat from causing lots of messages to be sent Edit_SetText(hwndFocus, ""); } break; case IDC_GROUP_DONE: case IDCANCEL: EndDialog(hDlg, IDOK); break; } }