BOOL NextBar::OCommand(ULONG msg, MPARAM mp1, MPARAM mp2)
{
 switch(msg)
  {
    case WM_CREATE:
      if (setup.floating)
        floatTimer.setNotify(hwnd).start();
      break;

    case WM_TOOLBAR_RESET:
      resetToolBar();
      break;

    case WM_CFG_CANCELED: {
      pNextBarEvent actual = (pNextBarEvent) PVOIDFROMMP(mp1);
      if (actual)
         events.del(actual);
      break; }
 
    case WM_SAVE_BUTTONS:
      saveProfile();
      resetToolBar();
      break;

    case WM_CONTROL:
      switch(SHORT1FROMMP(mp1))
       {
        case OBUTTONBAR_MOVEOVER:
          selectedButton = SHORT2FROMMP(mp1);
          break;

        case OBUTTONBAR_BUTTON2DOWN:
          selectedButton = SHORT2FROMMP(mp1);
          WinSendMsg(menu, MM_SETITEMATTR, MPFROM2SHORT(NHX_DEL_BUTTON, FALSE),
                     MPFROM2SHORT(MIA_DISABLED, (selectedButton == NHX_MAIN) ? MIA_DISABLED : ~MIA_DISABLED));
          WinSendMsg(menu, MM_SETITEMATTR, MPFROM2SHORT(NHX_CFG_BUTTON, FALSE),
                     MPFROM2SHORT(MIA_DISABLED, (selectedButton == NHX_MAIN) ? MIA_DISABLED : ~MIA_DISABLED));
          WinPopupMenu(frame, frame, menu, SHORT1FROMMP(mp2), SHORT2FROMMP(mp2), NHX_CFG_BUTTON,
                     PU_NONE | PU_KEYBOARD | PU_MOUSEBUTTON1 |
                     PU_POSITIONONITEM | PU_HCONSTRAIN | PU_VCONSTRAIN);
          break;
       }
      break;

    case WM_TIMER:
      if (setup.floating)
        WinSetWindowPos(WinQueryWindow(hwnd,QW_PARENT), HWND_TOP, 0, 0, 0, 0, SWP_ZORDER);
      break;

    case WM_COMMAND: {
       ULONG command = SHORT1FROMMP(mp1);
       pNextBarEvent actual = events.getItem(selectedButton - NHX_FIRST_BUTTON);

       switch(command)
        {
         case NHX_MAIN:
            closeFolders(TRUE);
            break;
 
         case NHX_INFOMNU: {
            pNextBarInfoDlg  dlg = new NextBarInfoDlg;
            dlg->createDlg();
            break; }

         case NHX_FLOAT:
            if (setup.floating) {
               setup.floating = FALSE;
               floatTimer.stop(); }
            else {
               setup.floating = TRUE;
               floatTimer.setNotify(hwnd).start(); }
            WinCheckMenuItem(menu, NHX_FLOAT, setup.floating);
            break;

         case NHX_QUIT:
            WinPostMsg(hwnd, WM_CLOSE, NULL, NULL);
            break;

         case NHX_MOVE:
            trackButtons();
            break;

         case NHX_SENKRECHT:
            setNewStyle(OButtonBar::up2down);
            break;

         case NHX_WAAGERECHT:
            setNewStyle(OButtonBar::left2right);
            break;

         case NHX_NORMICONS:
            setup.large = FALSE;
            setNewStyle(setup.style);
            break;

         case NHX_LARGEICONS:
            setup.large = TRUE;
            setNewStyle(setup.style);
            break;

         case NHX_ADD_BUTTON: {
            pNextBarEvent aNew = new NextBarEvent;
            pNextBarDlg   dlg = new NextBarDlg(aNew, NULL, TRUE);

            events.addAfter(actual, aNew);
            dlg->createDlg();
            break; }

         case NHX_DEL_BUTTON:
            events.del(actual);
            resetToolBar();
            break;

         case NHX_CFG_BUTTON: {
            pOGraphicsButton button = nxButtons->buttons.getItem(selectedButton - NHX_FIRST_BUTTON + 1);
            pNextBarDlg dlg = new NextBarDlg(actual, button, FALSE);
            dlg->createDlg();
            break; }

         case NHX_HELP:
            helpRequest(PANEL_MAIN);
            break;

         default:
            if (actual)  
              actual->startEvent();
            break;
         }
       break; }

    case WM_SIZE:
      if (nxButtons)
        WinSetWindowPos(nxButtons->frame, HWND_TOP, 0, 0,
            (setup.style == OButtonBar::left2right) ?  SHORT1FROMMP(mp2) : buttonSize,
            (setup.style == OButtonBar::left2right) ?  buttonSize : SHORT2FROMMP(mp2),
             SWP_MOVE | SWP_SIZE);
      break;

    case WM_CLOSE:
      WinQueryWindowPos(frame, &setup.position);
      strcpy(setup.bubbleFont, nxButtons->bubbleHelpWin.pparms.Font); 
      ini->write("NextHand", "NextInfo 1.5", &setup, sizeof(NextInfo));
      ini->close();
      hideFrame();
      OApp::currentOApp->forceQuit();
      break;

    default:
       return(FALSE);
   }
 return(TRUE);
}
Ejemplo n.º 2
0
void QG_CadToolBar::showCadToolBar(RS2::ActionType actionType, bool cleanup){
    switch(actionType){
    //no op
    case RS2::ActionFileNew:
    case RS2::ActionFileNewTemplate:
    case RS2::ActionFileOpen:
    case RS2::ActionFileSave:
    case RS2::ActionFileSaveAs:
    case RS2::ActionFileExport:
    case RS2::ActionFileClose:
    case RS2::ActionFilePrint:
    case RS2::ActionFilePrintPreview:
    case RS2::ActionFileQuit:
    case RS2::ActionPrintPreview:
    case RS2::ActionEditUndo:
    case RS2::ActionEditRedo:
    case RS2::ActionEditCut:
    case RS2::ActionEditCutNoSelect:
    case RS2::ActionEditCopy:
    case RS2::ActionEditCopyNoSelect:
    case RS2::ActionEditPaste:
    case RS2::ActionViewStatusBar:
    case RS2::ActionViewLayerList:
    case RS2::ActionViewBlockList:
    case RS2::ActionViewCommandLine:
    case RS2::ActionViewLibrary:
    case RS2::ActionViewPenToolbar:
    case RS2::ActionViewOptionToolbar:
    case RS2::ActionViewCadToolbar:
    case RS2::ActionViewFileToolbar:
    case RS2::ActionViewEditToolbar:
    case RS2::ActionViewSnapToolbar:
    case RS2::ActionViewGrid:
    case RS2::ActionViewDraft:
    case RS2::ActionZoomIn:
    case RS2::ActionZoomOut:
    case RS2::ActionZoomAuto:
    case RS2::ActionZoomWindow:
    case RS2::ActionZoomPan:
    case RS2::ActionZoomRedraw:
    case RS2::ActionZoomPrevious:
    case RS2::ActionSelect:
    case RS2::ActionSelectSingle:
    case RS2::ActionSelectContour:
    case RS2::ActionSelectWindow:
    case RS2::ActionDeselectWindow:
    case RS2::ActionSelectAll:
    case RS2::ActionDeselectAll:
    case RS2::ActionSelectIntersected:
    case RS2::ActionDeselectIntersected:
    case RS2::ActionSelectInvert:
    case RS2::ActionSelectLayer:
    case RS2::ActionSelectDouble:
    case RS2::ActionDrawHatch:
    case RS2::ActionDrawHatchNoSelect:
    case RS2::ActionEditKillAllActions:
    case RS2::ActionSnapFree:
    case RS2::ActionSnapGrid:
    case RS2::ActionSnapEndpoint:
    case RS2::ActionSnapOnEntity:
    case RS2::ActionSnapCenter:
    case RS2::ActionSnapMiddle:
    case RS2::ActionSnapDist:
    case RS2::ActionSnapIntersection:
    case RS2::ActionSnapIntersectionManual:
    case RS2::ActionRestrictNothing:
    case RS2::ActionRestrictOrthogonal:
    case RS2::ActionRestrictHorizontal:
    case RS2::ActionRestrictVertical:
    case RS2::ActionSetRelativeZero:
    case RS2::ActionLockRelativeZero:
    case RS2::ActionUnlockRelativeZero:
    case RS2::ActionLayersDefreezeAll:
    case RS2::ActionLayersFreezeAll:
    case RS2::ActionLayersAdd:
    case RS2::ActionLayersRemove:
    case RS2::ActionLayersEdit:
    case RS2::ActionLayersToggleView:
    case RS2::ActionLayersToggleLock:
    case RS2::ActionLayersTogglePrint:
    case RS2::ActionBlocksDefreezeAll:
    case RS2::ActionBlocksFreezeAll:
    case RS2::ActionBlocksAdd:
    case RS2::ActionBlocksRemove:
    case RS2::ActionBlocksAttributes:
    case RS2::ActionBlocksEdit:
    case RS2::ActionBlocksInsert:
    case RS2::ActionBlocksToggleView:
    case RS2::ActionBlocksCreate:
    case RS2::ActionBlocksCreateNoSelect:
    case RS2::ActionBlocksExplode:
    case RS2::ActionBlocksExplodeNoSelect:
    case RS2::ActionModifyExplodeText:
    default:
        return;
        //default action resets toolbar, issue#295
    case RS2::ActionDefault:
        resetToolBar();
        break;
    case RS2::ActionDrawImage:
    case RS2::ActionDrawPoint:
    case RS2::ActionDrawSpline:
    case RS2::ActionDrawMText:
        showToolBar(RS2::ToolBarMain, false);
        if(tbMain != NULL){
            tbMain->showCadToolBar(actionType);
        }
        break;
    case RS2::ActionDrawArc:
    case RS2::ActionDrawArc3P:
    case RS2::ActionDrawArcParallel:
    case RS2::ActionDrawArcTangential:
        showToolBar(RS2::ToolBarArcs, false);
       if(tbArcs != NULL){
           tbArcs->showCadToolBar(actionType);
       }
        break;
    case RS2::ActionDrawCircle:
    case RS2::ActionDrawCircle2P:
    case RS2::ActionDrawCircle3P:
    case RS2::ActionDrawCircleCR:
    case RS2::ActionDrawCircleParallel:
    case RS2::ActionDrawCircleInscribe:
    case RS2::ActionDrawCircleTan2:
    case RS2::ActionDrawCircleTan2_1P:
    case RS2::ActionDrawCircleTan1_2P:
        showToolBar(RS2::ToolBarCircles, false);
       if(tbCircles != NULL){
           tbCircles->showCadToolBar(actionType);
       }
        break;
    case RS2::ActionDrawEllipseArcAxis:
    case RS2::ActionDrawEllipseAxis:
    case RS2::ActionDrawEllipseFociPoint:
    case RS2::ActionDrawEllipse4Points:
    case RS2::ActionDrawEllipseCenter3Points:
    case RS2::ActionDrawEllipseInscribe:
        showToolBar(RS2::ToolBarEllipses, false);
        if(tbEllipses != NULL){
            tbEllipses->showCadToolBar(actionType);
        }
        break;
    case RS2::ActionDrawLine:
    case RS2::ActionDrawLineAngle:
    case RS2::ActionDrawLineBisector:
    case RS2::ActionDrawLineFree:
    case RS2::ActionDrawLineHorVert:
    case RS2::ActionDrawLineHorizontal:
    case RS2::ActionDrawLineOrthogonal:
    case RS2::ActionDrawLineOrthTan:
    case RS2::ActionDrawLineParallel:
    case RS2::ActionDrawLineParallelThrough:
    case RS2::ActionDrawLinePolygonCenCor:
    case RS2::ActionDrawLinePolygonCorCor:
    case RS2::ActionDrawLineRectangle:
    case RS2::ActionDrawLineRelAngle:
    case RS2::ActionDrawLineTangent1:
    case RS2::ActionDrawLineTangent2:
    case RS2::ActionDrawLineVertical:
        showToolBar(RS2::ToolBarLines, false);
        if(tbLines != NULL){
            tbLines->showCadToolBar(actionType);
        }
        break;
    case RS2::ActionDrawPolyline:
    case RS2::ActionPolylineAdd:
    case RS2::ActionPolylineAppend:
    case RS2::ActionPolylineDel:
    case RS2::ActionPolylineDelBetween:
    case RS2::ActionPolylineTrim:
    case RS2::ActionPolylineEquidistant:
    case RS2::ActionPolylineSegment:
        showToolBar(RS2::ToolBarPolylines, false);
        if(tbPolylines != NULL){
            tbPolylines->showCadToolBar(actionType);
        }
        break;
    case RS2::ActionDimAligned:
    case RS2::ActionDimLinear:
    case RS2::ActionDimLinearVer:
    case RS2::ActionDimLinearHor:
    case RS2::ActionDimRadial:
    case RS2::ActionDimDiametric:
    case RS2::ActionDimAngular:
    case RS2::ActionDimLeader:
        showToolBar(RS2::ToolBarDim, false);
        if(tbDim != NULL){
            tbDim->showCadToolBar(actionType);
        }
        break;
    case RS2::ActionModifyAttributes:
    case RS2::ActionModifyAttributesNoSelect:
    case RS2::ActionModifyDelete:
    case RS2::ActionModifyDeleteNoSelect:
    case RS2::ActionModifyDeleteQuick:
    case RS2::ActionModifyDeleteFree:
    case RS2::ActionModifyMove:
    case RS2::ActionModifyMoveNoSelect:
    case RS2::ActionModifyRotate:
    case RS2::ActionModifyRotateNoSelect:
    case RS2::ActionModifyScale:
    case RS2::ActionModifyScaleNoSelect:
    case RS2::ActionModifyMirror:
    case RS2::ActionModifyMirrorNoSelect:
    case RS2::ActionModifyMoveRotate:
    case RS2::ActionModifyMoveRotateNoSelect:
    case RS2::ActionModifyRotate2:
    case RS2::ActionModifyRotate2NoSelect:
    case RS2::ActionModifyEntity:
    case RS2::ActionModifyTrim:
    case RS2::ActionModifyTrim2:
    case RS2::ActionModifyTrimAmount:
    case RS2::ActionModifyCut:
    case RS2::ActionModifyStretch:
    case RS2::ActionModifyBevel:
    case RS2::ActionModifyRound:
    case RS2::ActionModifyOffset:
    case RS2::ActionModifyOffsetNoSelect:
    case RS2::ActionModifyRevertDirection:
    case RS2::ActionModifyRevertDirectionNoSelect:
        showToolBar(RS2::ToolBarModify, false);
        if(tbModify != NULL){
            tbModify->showCadToolBar(actionType);
        }
        break;
    case RS2::ActionInfoInside:
    case RS2::ActionInfoDist:
    case RS2::ActionInfoDist2:
    case RS2::ActionInfoAngle:
    case RS2::ActionInfoTotalLength:
    case RS2::ActionInfoTotalLengthNoSelect:
    case RS2::ActionInfoArea:
        showToolBar(RS2::ToolBarInfo, false);
        if(tbInfo != NULL){
            tbInfo->showCadToolBar(actionType);
        }
        break;



    }
    if(cleanup){
        if(actionHandler != NULL) {
            RS_ActionInterface* currentAction =actionHandler->getCurrentAction();
            if(currentAction != NULL) {
                currentAction->finish(false); //finish the action, but do not update toolBar
            }
        }
    }
}