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);
}
Esempio n. 3
0
/*
 * 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);
}
Esempio n. 5
0
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();
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
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;
   }
}